diff --git a/webshare/static/js/textual.js b/webshare/static/js/textual.js index 6d95346..129cdbe 100644 --- a/webshare/static/js/textual.js +++ b/webshare/static/js/textual.js @@ -1 +1,16481 @@ -(() => { var e = { 56: (e, t, i) => { "use strict"; e.exports = function (e) { var t = i.nc; t && e.setAttribute("nonce", t) } }, 72: e => { "use strict"; var t = []; function i(e) { for (var i = -1, s = 0; s < t.length; s++)if (t[s].identifier === e) { i = s; break } return i } function s(e, s) { for (var n = {}, o = [], a = 0; a < e.length; a++) { var h = e[a], c = s.base ? h[0] + s.base : h[0], l = n[c] || 0, d = "".concat(c, " ").concat(l); n[c] = l + 1; var _ = i(d), u = { css: h[1], media: h[2], sourceMap: h[3], supports: h[4], layer: h[5] }; if (-1 !== _) t[_].references++, t[_].updater(u); else { var f = r(u, s); s.byIndex = a, t.splice(a, 0, { identifier: d, updater: f, references: 1 }) } o.push(d) } return o } function r(e, t) { var i = t.domAPI(t); return i.update(e), function (t) { if (t) { if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap && t.supports === e.supports && t.layer === e.layer) return; i.update(e = t) } else i.remove() } } e.exports = function (e, r) { var n = s(e = e || [], r = r || {}); return function (e) { e = e || []; for (var o = 0; o < n.length; o++) { var a = i(n[o]); t[a].references-- } for (var h = s(e, r), c = 0; c < n.length; c++) { var l = i(n[c]); 0 === t[l].references && (t[l].updater(), t.splice(l, 1)) } n = h } } }, 100: (e, t, i) => { "use strict"; i.d(t, { A: () => a }); var s = i(601), r = i.n(s), n = i(314), o = i.n(n)()(r()); o.push([e.id, "h1{color:#fff;background-color:#000}body{margin:0;padding:0}.textual-terminal{width:100vw;height:100vh}", ""]); const a = o }, 113: e => { "use strict"; e.exports = function (e, t) { if (t.styleSheet) t.styleSheet.cssText = e; else { for (; t.firstChild;)t.removeChild(t.firstChild); t.appendChild(document.createTextNode(e)) } } }, 180: e => { var t; self, t = () => (() => { "use strict"; var e = { 965: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.GlyphRenderer = void 0; const s = i(374), r = i(509), n = i(855), o = i(859), a = i(381), h = 11, c = h * Float32Array.BYTES_PER_ELEMENT; let l, d = 0, _ = 0, u = 0; class f extends o.Disposable { constructor(e, t, i, n) { super(), this._terminal = e, this._gl = t, this._dimensions = i, this._optionsService = n, this._activeBuffer = 0, this._vertices = { count: 0, attributes: new Float32Array(0), attributesBuffers: [new Float32Array(0), new Float32Array(0)] }; const h = this._gl; void 0 === r.TextureAtlas.maxAtlasPages && (r.TextureAtlas.maxAtlasPages = Math.min(32, (0, s.throwIfFalsy)(h.getParameter(h.MAX_TEXTURE_IMAGE_UNITS))), r.TextureAtlas.maxTextureSize = (0, s.throwIfFalsy)(h.getParameter(h.MAX_TEXTURE_SIZE))), this._program = (0, s.throwIfFalsy)((0, a.createProgram)(h, "#version 300 es\nlayout (location = 0) in vec2 a_unitquad;\nlayout (location = 1) in vec2 a_cellpos;\nlayout (location = 2) in vec2 a_offset;\nlayout (location = 3) in vec2 a_size;\nlayout (location = 4) in float a_texpage;\nlayout (location = 5) in vec2 a_texcoord;\nlayout (location = 6) in vec2 a_texsize;\n\nuniform mat4 u_projection;\nuniform vec2 u_resolution;\n\nout vec2 v_texcoord;\nflat out int v_texpage;\n\nvoid main() {\n vec2 zeroToOne = (a_offset / u_resolution) + a_cellpos + (a_unitquad * a_size);\n gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0);\n v_texpage = int(a_texpage);\n v_texcoord = a_texcoord + a_unitquad * a_texsize;\n}", function (e) { let t = ""; for (let i = 1; i < e; i++)t += ` else if (v_texpage == ${i}) { outColor = texture(u_texture[${i}], v_texcoord); }`; return `#version 300 es\nprecision lowp float;\n\nin vec2 v_texcoord;\nflat in int v_texpage;\n\nuniform sampler2D u_texture[${e}];\n\nout vec4 outColor;\n\nvoid main() {\n if (v_texpage == 0) {\n outColor = texture(u_texture[0], v_texcoord);\n } ${t}\n}` }(r.TextureAtlas.maxAtlasPages))), this.register((0, o.toDisposable)((() => h.deleteProgram(this._program)))), this._projectionLocation = (0, s.throwIfFalsy)(h.getUniformLocation(this._program, "u_projection")), this._resolutionLocation = (0, s.throwIfFalsy)(h.getUniformLocation(this._program, "u_resolution")), this._textureLocation = (0, s.throwIfFalsy)(h.getUniformLocation(this._program, "u_texture")), this._vertexArrayObject = h.createVertexArray(), h.bindVertexArray(this._vertexArrayObject); const l = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]), d = h.createBuffer(); this.register((0, o.toDisposable)((() => h.deleteBuffer(d)))), h.bindBuffer(h.ARRAY_BUFFER, d), h.bufferData(h.ARRAY_BUFFER, l, h.STATIC_DRAW), h.enableVertexAttribArray(0), h.vertexAttribPointer(0, 2, this._gl.FLOAT, !1, 0, 0); const _ = new Uint8Array([0, 1, 2, 3]), u = h.createBuffer(); this.register((0, o.toDisposable)((() => h.deleteBuffer(u)))), h.bindBuffer(h.ELEMENT_ARRAY_BUFFER, u), h.bufferData(h.ELEMENT_ARRAY_BUFFER, _, h.STATIC_DRAW), this._attributesBuffer = (0, s.throwIfFalsy)(h.createBuffer()), this.register((0, o.toDisposable)((() => h.deleteBuffer(this._attributesBuffer)))), h.bindBuffer(h.ARRAY_BUFFER, this._attributesBuffer), h.enableVertexAttribArray(2), h.vertexAttribPointer(2, 2, h.FLOAT, !1, c, 0), h.vertexAttribDivisor(2, 1), h.enableVertexAttribArray(3), h.vertexAttribPointer(3, 2, h.FLOAT, !1, c, 2 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(3, 1), h.enableVertexAttribArray(4), h.vertexAttribPointer(4, 1, h.FLOAT, !1, c, 4 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(4, 1), h.enableVertexAttribArray(5), h.vertexAttribPointer(5, 2, h.FLOAT, !1, c, 5 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(5, 1), h.enableVertexAttribArray(6), h.vertexAttribPointer(6, 2, h.FLOAT, !1, c, 7 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(6, 1), h.enableVertexAttribArray(1), h.vertexAttribPointer(1, 2, h.FLOAT, !1, c, 9 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(1, 1), h.useProgram(this._program); const f = new Int32Array(r.TextureAtlas.maxAtlasPages); for (let e = 0; e < r.TextureAtlas.maxAtlasPages; e++)f[e] = e; h.uniform1iv(this._textureLocation, f), h.uniformMatrix4fv(this._projectionLocation, !1, a.PROJECTION_MATRIX), this._atlasTextures = []; for (let e = 0; e < r.TextureAtlas.maxAtlasPages; e++) { const t = new a.GLTexture((0, s.throwIfFalsy)(h.createTexture())); this.register((0, o.toDisposable)((() => h.deleteTexture(t.texture)))), h.activeTexture(h.TEXTURE0 + e), h.bindTexture(h.TEXTURE_2D, t.texture), h.texParameteri(h.TEXTURE_2D, h.TEXTURE_WRAP_S, h.CLAMP_TO_EDGE), h.texParameteri(h.TEXTURE_2D, h.TEXTURE_WRAP_T, h.CLAMP_TO_EDGE), h.texImage2D(h.TEXTURE_2D, 0, h.RGBA, 1, 1, 0, h.RGBA, h.UNSIGNED_BYTE, new Uint8Array([255, 0, 0, 255])), this._atlasTextures[e] = t } h.enable(h.BLEND), h.blendFunc(h.SRC_ALPHA, h.ONE_MINUS_SRC_ALPHA), this.handleResize() } beginFrame() { return !this._atlas || this._atlas.beginFrame() } updateCell(e, t, i, s, r, n, o, a, h) { this._updateCell(this._vertices.attributes, e, t, i, s, r, n, o, a, h) } _updateCell(e, t, i, r, o, a, c, f, v, g) { d = (i * this._terminal.cols + t) * h, r !== n.NULL_CELL_CODE && void 0 !== r ? this._atlas && (l = f && f.length > 1 ? this._atlas.getRasterizedGlyphCombinedChar(f, o, a, c, !1) : this._atlas.getRasterizedGlyph(r, o, a, c, !1), _ = Math.floor((this._dimensions.device.cell.width - this._dimensions.device.char.width) / 2), o !== g && l.offset.x > _ ? (u = l.offset.x - _, e[d] = -(l.offset.x - u) + this._dimensions.device.char.left, e[d + 1] = -l.offset.y + this._dimensions.device.char.top, e[d + 2] = (l.size.x - u) / this._dimensions.device.canvas.width, e[d + 3] = l.size.y / this._dimensions.device.canvas.height, e[d + 4] = l.texturePage, e[d + 5] = l.texturePositionClipSpace.x + u / this._atlas.pages[l.texturePage].canvas.width, e[d + 6] = l.texturePositionClipSpace.y, e[d + 7] = l.sizeClipSpace.x - u / this._atlas.pages[l.texturePage].canvas.width, e[d + 8] = l.sizeClipSpace.y) : (e[d] = -l.offset.x + this._dimensions.device.char.left, e[d + 1] = -l.offset.y + this._dimensions.device.char.top, e[d + 2] = l.size.x / this._dimensions.device.canvas.width, e[d + 3] = l.size.y / this._dimensions.device.canvas.height, e[d + 4] = l.texturePage, e[d + 5] = l.texturePositionClipSpace.x, e[d + 6] = l.texturePositionClipSpace.y, e[d + 7] = l.sizeClipSpace.x, e[d + 8] = l.sizeClipSpace.y), this._optionsService.rawOptions.rescaleOverlappingGlyphs && (0, s.allowRescaling)(r, v, l.size.x, this._dimensions.device.cell.width) && (e[d + 2] = (this._dimensions.device.cell.width - 1) / this._dimensions.device.canvas.width)) : e.fill(0, d, d + h - 1 - 2) } clear() { const e = this._terminal, t = e.cols * e.rows * h; this._vertices.count !== t ? this._vertices.attributes = new Float32Array(t) : this._vertices.attributes.fill(0); let i = 0; for (; i < this._vertices.attributesBuffers.length; i++)this._vertices.count !== t ? this._vertices.attributesBuffers[i] = new Float32Array(t) : this._vertices.attributesBuffers[i].fill(0); this._vertices.count = t, i = 0; for (let t = 0; t < e.rows; t++)for (let s = 0; s < e.cols; s++)this._vertices.attributes[i + 9] = s / e.cols, this._vertices.attributes[i + 10] = t / e.rows, i += h } handleResize() { const e = this._gl; e.useProgram(this._program), e.viewport(0, 0, e.canvas.width, e.canvas.height), e.uniform2f(this._resolutionLocation, e.canvas.width, e.canvas.height), this.clear() } render(e) { if (!this._atlas) return; const t = this._gl; t.useProgram(this._program), t.bindVertexArray(this._vertexArrayObject), this._activeBuffer = (this._activeBuffer + 1) % 2; const i = this._vertices.attributesBuffers[this._activeBuffer]; let s = 0; for (let t = 0; t < e.lineLengths.length; t++) { const r = t * this._terminal.cols * h, n = this._vertices.attributes.subarray(r, r + e.lineLengths[t] * h); i.set(n, s), s += n.length } t.bindBuffer(t.ARRAY_BUFFER, this._attributesBuffer), t.bufferData(t.ARRAY_BUFFER, i.subarray(0, s), t.STREAM_DRAW); for (let e = 0; e < this._atlas.pages.length; e++)this._atlas.pages[e].version !== this._atlasTextures[e].version && this._bindAtlasPageTexture(t, this._atlas, e); t.drawElementsInstanced(t.TRIANGLE_STRIP, 4, t.UNSIGNED_BYTE, 0, s / h) } setAtlas(e) { this._atlas = e; for (const e of this._atlasTextures) e.version = -1 } _bindAtlasPageTexture(e, t, i) { e.activeTexture(e.TEXTURE0 + i), e.bindTexture(e.TEXTURE_2D, this._atlasTextures[i].texture), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, t.pages[i].canvas), e.generateMipmap(e.TEXTURE_2D), this._atlasTextures[i].version = t.pages[i].version } setDimensions(e) { this._dimensions = e } } t.GlyphRenderer = f }, 742: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.RectangleRenderer = void 0; const s = i(374), r = i(859), n = i(310), o = i(381), a = 8 * Float32Array.BYTES_PER_ELEMENT; class h { constructor() { this.attributes = new Float32Array(160), this.count = 0 } } let c = 0, l = 0, d = 0, _ = 0, u = 0, f = 0, v = 0; class g extends r.Disposable { constructor(e, t, i, n) { super(), this._terminal = e, this._gl = t, this._dimensions = i, this._themeService = n, this._vertices = new h, this._verticesCursor = new h; const c = this._gl; this._program = (0, s.throwIfFalsy)((0, o.createProgram)(c, "#version 300 es\nlayout (location = 0) in vec2 a_position;\nlayout (location = 1) in vec2 a_size;\nlayout (location = 2) in vec4 a_color;\nlayout (location = 3) in vec2 a_unitquad;\n\nuniform mat4 u_projection;\n\nout vec4 v_color;\n\nvoid main() {\n vec2 zeroToOne = a_position + (a_unitquad * a_size);\n gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0);\n v_color = a_color;\n}", "#version 300 es\nprecision lowp float;\n\nin vec4 v_color;\n\nout vec4 outColor;\n\nvoid main() {\n outColor = v_color;\n}")), this.register((0, r.toDisposable)((() => c.deleteProgram(this._program)))), this._projectionLocation = (0, s.throwIfFalsy)(c.getUniformLocation(this._program, "u_projection")), this._vertexArrayObject = c.createVertexArray(), c.bindVertexArray(this._vertexArrayObject); const l = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]), d = c.createBuffer(); this.register((0, r.toDisposable)((() => c.deleteBuffer(d)))), c.bindBuffer(c.ARRAY_BUFFER, d), c.bufferData(c.ARRAY_BUFFER, l, c.STATIC_DRAW), c.enableVertexAttribArray(3), c.vertexAttribPointer(3, 2, this._gl.FLOAT, !1, 0, 0); const _ = new Uint8Array([0, 1, 2, 3]), u = c.createBuffer(); this.register((0, r.toDisposable)((() => c.deleteBuffer(u)))), c.bindBuffer(c.ELEMENT_ARRAY_BUFFER, u), c.bufferData(c.ELEMENT_ARRAY_BUFFER, _, c.STATIC_DRAW), this._attributesBuffer = (0, s.throwIfFalsy)(c.createBuffer()), this.register((0, r.toDisposable)((() => c.deleteBuffer(this._attributesBuffer)))), c.bindBuffer(c.ARRAY_BUFFER, this._attributesBuffer), c.enableVertexAttribArray(0), c.vertexAttribPointer(0, 2, c.FLOAT, !1, a, 0), c.vertexAttribDivisor(0, 1), c.enableVertexAttribArray(1), c.vertexAttribPointer(1, 2, c.FLOAT, !1, a, 2 * Float32Array.BYTES_PER_ELEMENT), c.vertexAttribDivisor(1, 1), c.enableVertexAttribArray(2), c.vertexAttribPointer(2, 4, c.FLOAT, !1, a, 4 * Float32Array.BYTES_PER_ELEMENT), c.vertexAttribDivisor(2, 1), this._updateCachedColors(n.colors), this.register(this._themeService.onChangeColors((e => { this._updateCachedColors(e), this._updateViewportRectangle() }))) } renderBackgrounds() { this._renderVertices(this._vertices) } renderCursor() { this._renderVertices(this._verticesCursor) } _renderVertices(e) { const t = this._gl; t.useProgram(this._program), t.bindVertexArray(this._vertexArrayObject), t.uniformMatrix4fv(this._projectionLocation, !1, o.PROJECTION_MATRIX), t.bindBuffer(t.ARRAY_BUFFER, this._attributesBuffer), t.bufferData(t.ARRAY_BUFFER, e.attributes, t.DYNAMIC_DRAW), t.drawElementsInstanced(this._gl.TRIANGLE_STRIP, 4, t.UNSIGNED_BYTE, 0, e.count) } handleResize() { this._updateViewportRectangle() } setDimensions(e) { this._dimensions = e } _updateCachedColors(e) { this._bgFloat = this._colorToFloat32Array(e.background), this._cursorFloat = this._colorToFloat32Array(e.cursor) } _updateViewportRectangle() { this._addRectangleFloat(this._vertices.attributes, 0, 0, 0, this._terminal.cols * this._dimensions.device.cell.width, this._terminal.rows * this._dimensions.device.cell.height, this._bgFloat) } updateBackgrounds(e) { const t = this._terminal, i = this._vertices; let s, r, o, a, h, c, l, d, _, u, f, v = 1; for (s = 0; s < t.rows; s++) { for (o = -1, a = 0, h = 0, c = !1, r = 0; r < t.cols; r++)l = (s * t.cols + r) * n.RENDER_MODEL_INDICIES_PER_CELL, d = e.cells[l + n.RENDER_MODEL_BG_OFFSET], _ = e.cells[l + n.RENDER_MODEL_FG_OFFSET], u = !!(67108864 & _), (d !== a || _ !== h && (c || u)) && ((0 !== a || c && 0 !== h) && (f = 8 * v++, this._updateRectangle(i, f, h, a, o, r, s)), o = r, a = d, h = _, c = u); (0 !== a || c && 0 !== h) && (f = 8 * v++, this._updateRectangle(i, f, h, a, o, t.cols, s)) } i.count = v } updateCursor(e) { const t = this._verticesCursor, i = e.cursor; if (!i || "block" === i.style) return void (t.count = 0); let s, r = 0; "bar" !== i.style && "outline" !== i.style || (s = 8 * r++, this._addRectangleFloat(t.attributes, s, i.x * this._dimensions.device.cell.width, i.y * this._dimensions.device.cell.height, "bar" === i.style ? i.dpr * i.cursorWidth : i.dpr, this._dimensions.device.cell.height, this._cursorFloat)), "underline" !== i.style && "outline" !== i.style || (s = 8 * r++, this._addRectangleFloat(t.attributes, s, i.x * this._dimensions.device.cell.width, (i.y + 1) * this._dimensions.device.cell.height - i.dpr, i.width * this._dimensions.device.cell.width, i.dpr, this._cursorFloat)), "outline" === i.style && (s = 8 * r++, this._addRectangleFloat(t.attributes, s, i.x * this._dimensions.device.cell.width, i.y * this._dimensions.device.cell.height, i.width * this._dimensions.device.cell.width, i.dpr, this._cursorFloat), s = 8 * r++, this._addRectangleFloat(t.attributes, s, (i.x + i.width) * this._dimensions.device.cell.width - i.dpr, i.y * this._dimensions.device.cell.height, i.dpr, this._dimensions.device.cell.height, this._cursorFloat)), t.count = r } _updateRectangle(e, t, i, s, r, n, a) { if (67108864 & i) switch (50331648 & i) { case 16777216: case 33554432: c = this._themeService.colors.ansi[255 & i].rgba; break; case 50331648: c = (16777215 & i) << 8; break; default: c = this._themeService.colors.foreground.rgba } else switch (50331648 & s) { case 16777216: case 33554432: c = this._themeService.colors.ansi[255 & s].rgba; break; case 50331648: c = (16777215 & s) << 8; break; default: c = this._themeService.colors.background.rgba }e.attributes.length < t + 4 && (e.attributes = (0, o.expandFloat32Array)(e.attributes, this._terminal.rows * this._terminal.cols * 8)), l = r * this._dimensions.device.cell.width, d = a * this._dimensions.device.cell.height, _ = (c >> 24 & 255) / 255, u = (c >> 16 & 255) / 255, f = (c >> 8 & 255) / 255, v = 1, this._addRectangle(e.attributes, t, l, d, (n - r) * this._dimensions.device.cell.width, this._dimensions.device.cell.height, _, u, f, v) } _addRectangle(e, t, i, s, r, n, o, a, h, c) { e[t] = i / this._dimensions.device.canvas.width, e[t + 1] = s / this._dimensions.device.canvas.height, e[t + 2] = r / this._dimensions.device.canvas.width, e[t + 3] = n / this._dimensions.device.canvas.height, e[t + 4] = o, e[t + 5] = a, e[t + 6] = h, e[t + 7] = c } _addRectangleFloat(e, t, i, s, r, n, o) { e[t] = i / this._dimensions.device.canvas.width, e[t + 1] = s / this._dimensions.device.canvas.height, e[t + 2] = r / this._dimensions.device.canvas.width, e[t + 3] = n / this._dimensions.device.canvas.height, e[t + 4] = o[0], e[t + 5] = o[1], e[t + 6] = o[2], e[t + 7] = o[3] } _colorToFloat32Array(e) { return new Float32Array([(e.rgba >> 24 & 255) / 255, (e.rgba >> 16 & 255) / 255, (e.rgba >> 8 & 255) / 255, (255 & e.rgba) / 255]) } } t.RectangleRenderer = g }, 310: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.RenderModel = t.COMBINED_CHAR_BIT_MASK = t.RENDER_MODEL_EXT_OFFSET = t.RENDER_MODEL_FG_OFFSET = t.RENDER_MODEL_BG_OFFSET = t.RENDER_MODEL_INDICIES_PER_CELL = void 0; const s = i(296); t.RENDER_MODEL_INDICIES_PER_CELL = 4, t.RENDER_MODEL_BG_OFFSET = 1, t.RENDER_MODEL_FG_OFFSET = 2, t.RENDER_MODEL_EXT_OFFSET = 3, t.COMBINED_CHAR_BIT_MASK = 2147483648, t.RenderModel = class { constructor() { this.cells = new Uint32Array(0), this.lineLengths = new Uint32Array(0), this.selection = (0, s.createSelectionRenderModel)() } resize(e, i) { const s = e * i * t.RENDER_MODEL_INDICIES_PER_CELL; s !== this.cells.length && (this.cells = new Uint32Array(s), this.lineLengths = new Uint32Array(i)) } clear() { this.cells.fill(0, 0), this.lineLengths.fill(0, 0) } } }, 666: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.JoinedCellData = t.WebglRenderer = void 0; const s = i(820), r = i(274), n = i(627), o = i(457), a = i(56), h = i(374), c = i(345), l = i(859), d = i(147), _ = i(782), u = i(855), f = i(965), v = i(742), g = i(310), p = i(733); class m extends l.Disposable { constructor(e, t, i, o, d, u, f, v, m) { super(), this._terminal = e, this._characterJoinerService = t, this._charSizeService = i, this._coreBrowserService = o, this._coreService = d, this._decorationService = u, this._optionsService = f, this._themeService = v, this._cursorBlinkStateManager = new l.MutableDisposable, this._charAtlasDisposable = this.register(new l.MutableDisposable), this._observerDisposable = this.register(new l.MutableDisposable), this._model = new g.RenderModel, this._workCell = new _.CellData, this._workCell2 = new _.CellData, this._rectangleRenderer = this.register(new l.MutableDisposable), this._glyphRenderer = this.register(new l.MutableDisposable), this._onChangeTextureAtlas = this.register(new c.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new c.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = this.register(new c.EventEmitter), this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._onRequestRedraw = this.register(new c.EventEmitter), this.onRequestRedraw = this._onRequestRedraw.event, this._onContextLoss = this.register(new c.EventEmitter), this.onContextLoss = this._onContextLoss.event, this.register(this._themeService.onChangeColors((() => this._handleColorChange()))), this._cellColorResolver = new r.CellColorResolver(this._terminal, this._optionsService, this._model.selection, this._decorationService, this._coreBrowserService, this._themeService), this._core = this._terminal._core, this._renderLayers = [new p.LinkRenderLayer(this._core.screenElement, 2, this._terminal, this._core.linkifier, this._coreBrowserService, f, this._themeService)], this.dimensions = (0, h.createRenderDimensions)(), this._devicePixelRatio = this._coreBrowserService.dpr, this._updateDimensions(), this._updateCursorBlink(), this.register(f.onOptionChange((() => this._handleOptionsChanged()))), this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"); const C = { antialias: !1, depth: !1, preserveDrawingBuffer: m }; if (this._gl = this._canvas.getContext("webgl2", C), !this._gl) throw new Error("WebGL2 not supported " + this._gl); this.register((0, s.addDisposableDomListener)(this._canvas, "webglcontextlost", (e => { console.log("webglcontextlost event received"), e.preventDefault(), this._contextRestorationTimeout = setTimeout((() => { this._contextRestorationTimeout = void 0, console.warn("webgl context not restored; firing onContextLoss"), this._onContextLoss.fire(e) }), 3e3) }))), this.register((0, s.addDisposableDomListener)(this._canvas, "webglcontextrestored", (e => { console.warn("webglcontextrestored event received"), clearTimeout(this._contextRestorationTimeout), this._contextRestorationTimeout = void 0, (0, n.removeTerminalFromCache)(this._terminal), this._initializeWebGLState(), this._requestRedrawViewport() }))), this._observerDisposable.value = (0, a.observeDevicePixelDimensions)(this._canvas, this._coreBrowserService.window, ((e, t) => this._setCanvasDevicePixelDimensions(e, t))), this.register(this._coreBrowserService.onWindowChange((e => { this._observerDisposable.value = (0, a.observeDevicePixelDimensions)(this._canvas, e, ((e, t) => this._setCanvasDevicePixelDimensions(e, t))) }))), this._core.screenElement.appendChild(this._canvas), [this._rectangleRenderer.value, this._glyphRenderer.value] = this._initializeWebGLState(), this._isAttached = this._coreBrowserService.window.document.body.contains(this._core.screenElement), this.register((0, l.toDisposable)((() => { for (const e of this._renderLayers) e.dispose(); this._canvas.parentElement?.removeChild(this._canvas), (0, n.removeTerminalFromCache)(this._terminal) }))) } get textureAtlas() { return this._charAtlas?.pages[0].canvas } _handleColorChange() { this._refreshCharAtlas(), this._clearModel(!0) } handleDevicePixelRatioChange() { this._devicePixelRatio !== this._coreBrowserService.dpr && (this._devicePixelRatio = this._coreBrowserService.dpr, this.handleResize(this._terminal.cols, this._terminal.rows)) } handleResize(e, t) { this._updateDimensions(), this._model.resize(this._terminal.cols, this._terminal.rows); for (const e of this._renderLayers) e.resize(this._terminal, this.dimensions); this._canvas.width = this.dimensions.device.canvas.width, this._canvas.height = this.dimensions.device.canvas.height, this._canvas.style.width = `${this.dimensions.css.canvas.width}px`, this._canvas.style.height = `${this.dimensions.css.canvas.height}px`, this._core.screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._core.screenElement.style.height = `${this.dimensions.css.canvas.height}px`, this._rectangleRenderer.value?.setDimensions(this.dimensions), this._rectangleRenderer.value?.handleResize(), this._glyphRenderer.value?.setDimensions(this.dimensions), this._glyphRenderer.value?.handleResize(), this._refreshCharAtlas(), this._clearModel(!1) } handleCharSizeChanged() { this.handleResize(this._terminal.cols, this._terminal.rows) } handleBlur() { for (const e of this._renderLayers) e.handleBlur(this._terminal); this._cursorBlinkStateManager.value?.pause(), this._requestRedrawViewport() } handleFocus() { for (const e of this._renderLayers) e.handleFocus(this._terminal); this._cursorBlinkStateManager.value?.resume(), this._requestRedrawViewport() } handleSelectionChanged(e, t, i) { for (const s of this._renderLayers) s.handleSelectionChanged(this._terminal, e, t, i); this._model.selection.update(this._core, e, t, i), this._requestRedrawViewport() } handleCursorMove() { for (const e of this._renderLayers) e.handleCursorMove(this._terminal); this._cursorBlinkStateManager.value?.restartBlinkAnimation() } _handleOptionsChanged() { this._updateDimensions(), this._refreshCharAtlas(), this._updateCursorBlink() } _initializeWebGLState() { return this._rectangleRenderer.value = new v.RectangleRenderer(this._terminal, this._gl, this.dimensions, this._themeService), this._glyphRenderer.value = new f.GlyphRenderer(this._terminal, this._gl, this.dimensions, this._optionsService), this.handleCharSizeChanged(), [this._rectangleRenderer.value, this._glyphRenderer.value] } _refreshCharAtlas() { if (this.dimensions.device.char.width <= 0 && this.dimensions.device.char.height <= 0) return void (this._isAttached = !1); const e = (0, n.acquireTextureAtlas)(this._terminal, this._optionsService.rawOptions, this._themeService.colors, this.dimensions.device.cell.width, this.dimensions.device.cell.height, this.dimensions.device.char.width, this.dimensions.device.char.height, this._coreBrowserService.dpr); this._charAtlas !== e && (this._onChangeTextureAtlas.fire(e.pages[0].canvas), this._charAtlasDisposable.value = (0, l.getDisposeArrayDisposable)([(0, c.forwardEvent)(e.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas), (0, c.forwardEvent)(e.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas)])), this._charAtlas = e, this._charAtlas.warmUp(), this._glyphRenderer.value?.setAtlas(this._charAtlas) } _clearModel(e) { this._model.clear(), e && this._glyphRenderer.value?.clear() } clearTextureAtlas() { this._charAtlas?.clearTexture(), this._clearModel(!0), this._requestRedrawViewport() } clear() { this._clearModel(!0); for (const e of this._renderLayers) e.reset(this._terminal); this._cursorBlinkStateManager.value?.restartBlinkAnimation(), this._updateCursorBlink() } registerCharacterJoiner(e) { return -1 } deregisterCharacterJoiner(e) { return !1 } renderRows(e, t) { if (!this._isAttached) { if (!(this._coreBrowserService.window.document.body.contains(this._core.screenElement) && this._charSizeService.width && this._charSizeService.height)) return; this._updateDimensions(), this._refreshCharAtlas(), this._isAttached = !0 } for (const i of this._renderLayers) i.handleGridChanged(this._terminal, e, t); this._glyphRenderer.value && this._rectangleRenderer.value && (this._glyphRenderer.value.beginFrame() ? (this._clearModel(!0), this._updateModel(0, this._terminal.rows - 1)) : this._updateModel(e, t), this._rectangleRenderer.value.renderBackgrounds(), this._glyphRenderer.value.render(this._model), this._cursorBlinkStateManager.value && !this._cursorBlinkStateManager.value.isCursorVisible || this._rectangleRenderer.value.renderCursor()) } _updateCursorBlink() { this._terminal.options.cursorBlink ? this._cursorBlinkStateManager.value = new o.CursorBlinkStateManager((() => { this._requestRedrawCursor() }), this._coreBrowserService) : this._cursorBlinkStateManager.clear(), this._requestRedrawCursor() } _updateModel(e, t) { const i = this._core; let s, r, n, o, a, h, c, l, d, _, f, v, p, m, b = this._workCell; e = S(e, i.rows - 1, 0), t = S(t, i.rows - 1, 0); const w = this._terminal.buffer.active.baseY + this._terminal.buffer.active.cursorY, y = w - i.buffer.ydisp, L = Math.min(this._terminal.buffer.active.cursorX, i.cols - 1); let x = -1; const E = this._coreService.isCursorInitialized && !this._coreService.isCursorHidden && (!this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isCursorVisible); this._model.cursor = void 0; let R = !1; for (r = e; r <= t; r++)for (n = r + i.buffer.ydisp, o = i.buffer.lines.get(n), this._model.lineLengths[r] = 0, a = this._characterJoinerService.getJoinedCharacters(n), p = 0; p < i.cols; p++)if (s = this._cellColorResolver.result.bg, o.loadCell(p, b), 0 === p && (s = this._cellColorResolver.result.bg), h = !1, c = p, a.length > 0 && p === a[0][0] && (h = !0, l = a.shift(), b = new C(b, o.translateToString(!0, l[0], l[1]), l[1] - l[0]), c = l[1] - 1), d = b.getChars(), _ = b.getCode(), v = (r * i.cols + p) * g.RENDER_MODEL_INDICIES_PER_CELL, this._cellColorResolver.resolve(b, p, n, this.dimensions.device.cell.width), E && n === w && (p === L && (this._model.cursor = { x: L, y, width: b.getWidth(), style: this._coreBrowserService.isFocused ? i.options.cursorStyle || "block" : i.options.cursorInactiveStyle, cursorWidth: i.options.cursorWidth, dpr: this._devicePixelRatio }, x = L + b.getWidth() - 1), p >= L && p <= x && (this._coreBrowserService.isFocused && "block" === (i.options.cursorStyle || "block") || !1 === this._coreBrowserService.isFocused && "block" === i.options.cursorInactiveStyle) && (this._cellColorResolver.result.fg = 50331648 | this._themeService.colors.cursorAccent.rgba >> 8 & 16777215, this._cellColorResolver.result.bg = 50331648 | this._themeService.colors.cursor.rgba >> 8 & 16777215)), _ !== u.NULL_CELL_CODE && (this._model.lineLengths[r] = p + 1), (this._model.cells[v] !== _ || this._model.cells[v + g.RENDER_MODEL_BG_OFFSET] !== this._cellColorResolver.result.bg || this._model.cells[v + g.RENDER_MODEL_FG_OFFSET] !== this._cellColorResolver.result.fg || this._model.cells[v + g.RENDER_MODEL_EXT_OFFSET] !== this._cellColorResolver.result.ext) && (R = !0, d.length > 1 && (_ |= g.COMBINED_CHAR_BIT_MASK), this._model.cells[v] = _, this._model.cells[v + g.RENDER_MODEL_BG_OFFSET] = this._cellColorResolver.result.bg, this._model.cells[v + g.RENDER_MODEL_FG_OFFSET] = this._cellColorResolver.result.fg, this._model.cells[v + g.RENDER_MODEL_EXT_OFFSET] = this._cellColorResolver.result.ext, f = b.getWidth(), this._glyphRenderer.value.updateCell(p, r, _, this._cellColorResolver.result.bg, this._cellColorResolver.result.fg, this._cellColorResolver.result.ext, d, f, s), h)) for (b = this._workCell, p++; p < c; p++)m = (r * i.cols + p) * g.RENDER_MODEL_INDICIES_PER_CELL, this._glyphRenderer.value.updateCell(p, r, u.NULL_CELL_CODE, 0, 0, 0, u.NULL_CELL_CHAR, 0, 0), this._model.cells[m] = u.NULL_CELL_CODE, this._model.cells[m + g.RENDER_MODEL_BG_OFFSET] = this._cellColorResolver.result.bg, this._model.cells[m + g.RENDER_MODEL_FG_OFFSET] = this._cellColorResolver.result.fg, this._model.cells[m + g.RENDER_MODEL_EXT_OFFSET] = this._cellColorResolver.result.ext; R && this._rectangleRenderer.value.updateBackgrounds(this._model), this._rectangleRenderer.value.updateCursor(this._model) } _updateDimensions() { this._charSizeService.width && this._charSizeService.height && (this.dimensions.device.char.width = Math.floor(this._charSizeService.width * this._devicePixelRatio), this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * this._devicePixelRatio), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.top = 1 === this._optionsService.rawOptions.lineHeight ? 0 : Math.round((this.dimensions.device.cell.height - this.dimensions.device.char.height) / 2), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.char.left = Math.floor(this._optionsService.rawOptions.letterSpacing / 2), this.dimensions.device.canvas.height = this._terminal.rows * this.dimensions.device.cell.height, this.dimensions.device.canvas.width = this._terminal.cols * this.dimensions.device.cell.width, this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / this._devicePixelRatio), this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / this._devicePixelRatio), this.dimensions.css.cell.height = this.dimensions.device.cell.height / this._devicePixelRatio, this.dimensions.css.cell.width = this.dimensions.device.cell.width / this._devicePixelRatio) } _setCanvasDevicePixelDimensions(e, t) { this._canvas.width === e && this._canvas.height === t || (this._canvas.width = e, this._canvas.height = t, this._requestRedrawViewport()) } _requestRedrawViewport() { this._onRequestRedraw.fire({ start: 0, end: this._terminal.rows - 1 }) } _requestRedrawCursor() { const e = this._terminal.buffer.active.cursorY; this._onRequestRedraw.fire({ start: e, end: e }) } } t.WebglRenderer = m; class C extends d.AttributeData { constructor(e, t, i) { super(), this.content = 0, this.combinedData = "", this.fg = e.fg, this.bg = e.bg, this.combinedData = t, this._width = i } isCombined() { return 2097152 } getWidth() { return this._width } getChars() { return this.combinedData } getCode() { return 2097151 } setFromCharData(e) { throw new Error("not implemented") } getAsCharData() { return [this.fg, this.getChars(), this.getWidth(), this.getCode()] } } function S(e, t, i = 0) { return Math.max(Math.min(e, t), i) } t.JoinedCellData = C }, 381: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.GLTexture = t.expandFloat32Array = t.createShader = t.createProgram = t.PROJECTION_MATRIX = void 0; const s = i(374); function r(e, t, i) { const r = (0, s.throwIfFalsy)(e.createShader(t)); if (e.shaderSource(r, i), e.compileShader(r), e.getShaderParameter(r, e.COMPILE_STATUS)) return r; console.error(e.getShaderInfoLog(r)), e.deleteShader(r) } t.PROJECTION_MATRIX = new Float32Array([2, 0, 0, 0, 0, -2, 0, 0, 0, 0, 1, 0, -1, 1, 0, 1]), t.createProgram = function (e, t, i) { const n = (0, s.throwIfFalsy)(e.createProgram()); if (e.attachShader(n, (0, s.throwIfFalsy)(r(e, e.VERTEX_SHADER, t))), e.attachShader(n, (0, s.throwIfFalsy)(r(e, e.FRAGMENT_SHADER, i))), e.linkProgram(n), e.getProgramParameter(n, e.LINK_STATUS)) return n; console.error(e.getProgramInfoLog(n)), e.deleteProgram(n) }, t.createShader = r, t.expandFloat32Array = function (e, t) { const i = Math.min(2 * e.length, t), s = new Float32Array(i); for (let t = 0; t < e.length; t++)s[t] = e[t]; return s }, t.GLTexture = class { constructor(e) { this.texture = e, this.version = -1 } } }, 592: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.BaseRenderLayer = void 0; const s = i(627), r = i(237), n = i(374), o = i(859); class a extends o.Disposable { constructor(e, t, i, s, r, n, a, h) { super(), this._container = t, this._alpha = r, this._coreBrowserService = n, this._optionsService = a, this._themeService = h, this._deviceCharWidth = 0, this._deviceCharHeight = 0, this._deviceCellWidth = 0, this._deviceCellHeight = 0, this._deviceCharLeft = 0, this._deviceCharTop = 0, this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add(`xterm-${i}-layer`), this._canvas.style.zIndex = s.toString(), this._initCanvas(), this._container.appendChild(this._canvas), this.register(this._themeService.onChangeColors((t => { this._refreshCharAtlas(e, t), this.reset(e) }))), this.register((0, o.toDisposable)((() => { this._canvas.remove() }))) } _initCanvas() { this._ctx = (0, n.throwIfFalsy)(this._canvas.getContext("2d", { alpha: this._alpha })), this._alpha || this._clearAll() } handleBlur(e) { } handleFocus(e) { } handleCursorMove(e) { } handleGridChanged(e, t, i) { } handleSelectionChanged(e, t, i, s = !1) { } _setTransparency(e, t) { if (t === this._alpha) return; const i = this._canvas; this._alpha = t, this._canvas = this._canvas.cloneNode(), this._initCanvas(), this._container.replaceChild(this._canvas, i), this._refreshCharAtlas(e, this._themeService.colors), this.handleGridChanged(e, 0, e.rows - 1) } _refreshCharAtlas(e, t) { this._deviceCharWidth <= 0 && this._deviceCharHeight <= 0 || (this._charAtlas = (0, s.acquireTextureAtlas)(e, this._optionsService.rawOptions, t, this._deviceCellWidth, this._deviceCellHeight, this._deviceCharWidth, this._deviceCharHeight, this._coreBrowserService.dpr), this._charAtlas.warmUp()) } resize(e, t) { this._deviceCellWidth = t.device.cell.width, this._deviceCellHeight = t.device.cell.height, this._deviceCharWidth = t.device.char.width, this._deviceCharHeight = t.device.char.height, this._deviceCharLeft = t.device.char.left, this._deviceCharTop = t.device.char.top, this._canvas.width = t.device.canvas.width, this._canvas.height = t.device.canvas.height, this._canvas.style.width = `${t.css.canvas.width}px`, this._canvas.style.height = `${t.css.canvas.height}px`, this._alpha || this._clearAll(), this._refreshCharAtlas(e, this._themeService.colors) } _fillBottomLineAtCells(e, t, i = 1) { this._ctx.fillRect(e * this._deviceCellWidth, (t + 1) * this._deviceCellHeight - this._coreBrowserService.dpr - 1, i * this._deviceCellWidth, this._coreBrowserService.dpr) } _clearAll() { this._alpha ? this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height)) } _clearCells(e, t, i, s) { this._alpha ? this._ctx.clearRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight)) } _fillCharTrueColor(e, t, i, s) { this._ctx.font = this._getFont(e, !1, !1), this._ctx.textBaseline = r.TEXT_BASELINE, this._clipCell(i, s, t.getWidth()), this._ctx.fillText(t.getChars(), i * this._deviceCellWidth + this._deviceCharLeft, s * this._deviceCellHeight + this._deviceCharTop + this._deviceCharHeight) } _clipCell(e, t, i) { this._ctx.beginPath(), this._ctx.rect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, this._deviceCellHeight), this._ctx.clip() } _getFont(e, t, i) { return `${i ? "italic" : ""} ${t ? e.options.fontWeightBold : e.options.fontWeight} ${e.options.fontSize * this._coreBrowserService.dpr}px ${e.options.fontFamily}` } } t.BaseRenderLayer = a }, 733: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.LinkRenderLayer = void 0; const s = i(197), r = i(237), n = i(592); class o extends n.BaseRenderLayer { constructor(e, t, i, s, r, n, o) { super(i, e, "link", t, !0, r, n, o), this.register(s.onShowLinkUnderline((e => this._handleShowLinkUnderline(e)))), this.register(s.onHideLinkUnderline((e => this._handleHideLinkUnderline(e)))) } resize(e, t) { super.resize(e, t), this._state = void 0 } reset(e) { this._clearCurrentLink() } _clearCurrentLink() { if (this._state) { this._clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1); const e = this._state.y2 - this._state.y1 - 1; e > 0 && this._clearCells(0, this._state.y1 + 1, this._state.cols, e), this._clearCells(0, this._state.y2, this._state.x2, 1), this._state = void 0 } } _handleShowLinkUnderline(e) { if (e.fg === r.INVERTED_DEFAULT_COLOR ? this._ctx.fillStyle = this._themeService.colors.background.css : void 0 !== e.fg && (0, s.is256Color)(e.fg) ? this._ctx.fillStyle = this._themeService.colors.ansi[e.fg].css : this._ctx.fillStyle = this._themeService.colors.foreground.css, e.y1 === e.y2) this._fillBottomLineAtCells(e.x1, e.y1, e.x2 - e.x1); else { this._fillBottomLineAtCells(e.x1, e.y1, e.cols - e.x1); for (let t = e.y1 + 1; t < e.y2; t++)this._fillBottomLineAtCells(0, t, e.cols); this._fillBottomLineAtCells(0, e.y2, e.x2) } this._state = e } _handleHideLinkUnderline(e) { this._clearCurrentLink() } } t.LinkRenderLayer = o }, 820: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.addDisposableDomListener = void 0, t.addDisposableDomListener = function (e, t, i, s) { e.addEventListener(t, i, s); let r = !1; return { dispose: () => { r || (r = !0, e.removeEventListener(t, i, s)) } } } }, 274: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CellColorResolver = void 0; const s = i(855), r = i(160), n = i(374); let o, a = 0, h = 0, c = !1, l = !1, d = !1, _ = 0; t.CellColorResolver = class { constructor(e, t, i, s, r, n) { this._terminal = e, this._optionService = t, this._selectionRenderModel = i, this._decorationService = s, this._coreBrowserService = r, this._themeService = n, this.result = { fg: 0, bg: 0, ext: 0 } } resolve(e, t, i, u) { if (this.result.bg = e.bg, this.result.fg = e.fg, this.result.ext = 268435456 & e.bg ? e.extended.ext : 0, h = 0, a = 0, l = !1, c = !1, d = !1, o = this._themeService.colors, _ = 0, e.getCode() !== s.NULL_CELL_CODE && 4 === e.extended.underlineStyle) { const e = Math.max(1, Math.floor(this._optionService.rawOptions.fontSize * this._coreBrowserService.dpr / 15)); _ = t * u % (2 * Math.round(e)) } if (this._decorationService.forEachDecorationAtCell(t, i, "bottom", (e => { e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0) })), d = this._selectionRenderModel.isCellSelected(this._terminal, t, i), d) { if (67108864 & this.result.fg || 50331648 & this.result.bg) { if (67108864 & this.result.fg) switch (50331648 & this.result.fg) { case 16777216: case 33554432: h = this._themeService.colors.ansi[255 & this.result.fg].rgba; break; case 50331648: h = (16777215 & this.result.fg) << 8 | 255; break; default: h = this._themeService.colors.foreground.rgba } else switch (50331648 & this.result.bg) { case 16777216: case 33554432: h = this._themeService.colors.ansi[255 & this.result.bg].rgba; break; case 50331648: h = (16777215 & this.result.bg) << 8 | 255 }h = r.rgba.blend(h, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215 } else h = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215; if (l = !0, o.selectionForeground && (a = o.selectionForeground.rgba >> 8 & 16777215, c = !0), (0, n.treatGlyphAsBackgroundColor)(e.getCode())) { if (67108864 & this.result.fg && !(50331648 & this.result.bg)) a = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215; else { if (67108864 & this.result.fg) switch (50331648 & this.result.bg) { case 16777216: case 33554432: a = this._themeService.colors.ansi[255 & this.result.bg].rgba; break; case 50331648: a = (16777215 & this.result.bg) << 8 | 255 } else switch (50331648 & this.result.fg) { case 16777216: case 33554432: a = this._themeService.colors.ansi[255 & this.result.fg].rgba; break; case 50331648: a = (16777215 & this.result.fg) << 8 | 255; break; default: a = this._themeService.colors.foreground.rgba }a = r.rgba.blend(a, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215 } c = !0 } } this._decorationService.forEachDecorationAtCell(t, i, "top", (e => { e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0) })), l && (h = d ? -16777216 & e.bg & -134217729 | h | 50331648 : -16777216 & e.bg | h | 50331648), c && (a = -16777216 & e.fg & -67108865 | a | 50331648), 67108864 & this.result.fg && (l && !c && (a = 50331648 & this.result.bg ? -134217728 & this.result.fg | 67108863 & this.result.bg : -134217728 & this.result.fg | 16777215 & o.background.rgba >> 8 | 50331648, c = !0), !l && c && (h = 50331648 & this.result.fg ? -67108864 & this.result.bg | 67108863 & this.result.fg : -67108864 & this.result.bg | 16777215 & o.foreground.rgba >> 8 | 50331648, l = !0)), o = void 0, this.result.bg = l ? h : this.result.bg, this.result.fg = c ? a : this.result.fg, this.result.ext &= 536870911, this.result.ext |= _ << 29 & 3758096384 } } }, 627: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.removeTerminalFromCache = t.acquireTextureAtlas = void 0; const s = i(509), r = i(197), n = []; t.acquireTextureAtlas = function (e, t, i, o, a, h, c, l) { const d = (0, r.generateConfig)(o, a, h, c, t, i, l); for (let t = 0; t < n.length; t++) { const i = n[t], s = i.ownedBy.indexOf(e); if (s >= 0) { if ((0, r.configEquals)(i.config, d)) return i.atlas; 1 === i.ownedBy.length ? (i.atlas.dispose(), n.splice(t, 1)) : i.ownedBy.splice(s, 1); break } } for (let t = 0; t < n.length; t++) { const i = n[t]; if ((0, r.configEquals)(i.config, d)) return i.ownedBy.push(e), i.atlas } const _ = e._core, u = { atlas: new s.TextureAtlas(document, d, _.unicodeService), config: d, ownedBy: [e] }; return n.push(u), u.atlas }, t.removeTerminalFromCache = function (e) { for (let t = 0; t < n.length; t++) { const i = n[t].ownedBy.indexOf(e); if (-1 !== i) { 1 === n[t].ownedBy.length ? (n[t].atlas.dispose(), n.splice(t, 1)) : n[t].ownedBy.splice(i, 1); break } } } }, 197: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.is256Color = t.configEquals = t.generateConfig = void 0; const s = i(160); t.generateConfig = function (e, t, i, r, n, o, a) { const h = { foreground: o.foreground, background: o.background, cursor: s.NULL_COLOR, cursorAccent: s.NULL_COLOR, selectionForeground: s.NULL_COLOR, selectionBackgroundTransparent: s.NULL_COLOR, selectionBackgroundOpaque: s.NULL_COLOR, selectionInactiveBackgroundTransparent: s.NULL_COLOR, selectionInactiveBackgroundOpaque: s.NULL_COLOR, ansi: o.ansi.slice(), contrastCache: o.contrastCache, halfContrastCache: o.halfContrastCache }; return { customGlyphs: n.customGlyphs, devicePixelRatio: a, letterSpacing: n.letterSpacing, lineHeight: n.lineHeight, deviceCellWidth: e, deviceCellHeight: t, deviceCharWidth: i, deviceCharHeight: r, fontFamily: n.fontFamily, fontSize: n.fontSize, fontWeight: n.fontWeight, fontWeightBold: n.fontWeightBold, allowTransparency: n.allowTransparency, drawBoldTextInBrightColors: n.drawBoldTextInBrightColors, minimumContrastRatio: n.minimumContrastRatio, colors: h } }, t.configEquals = function (e, t) { for (let i = 0; i < e.colors.ansi.length; i++)if (e.colors.ansi[i].rgba !== t.colors.ansi[i].rgba) return !1; return e.devicePixelRatio === t.devicePixelRatio && e.customGlyphs === t.customGlyphs && e.lineHeight === t.lineHeight && e.letterSpacing === t.letterSpacing && e.fontFamily === t.fontFamily && e.fontSize === t.fontSize && e.fontWeight === t.fontWeight && e.fontWeightBold === t.fontWeightBold && e.allowTransparency === t.allowTransparency && e.deviceCharWidth === t.deviceCharWidth && e.deviceCharHeight === t.deviceCharHeight && e.drawBoldTextInBrightColors === t.drawBoldTextInBrightColors && e.minimumContrastRatio === t.minimumContrastRatio && e.colors.foreground.rgba === t.colors.foreground.rgba && e.colors.background.rgba === t.colors.background.rgba }, t.is256Color = function (e) { return 16777216 == (50331648 & e) || 33554432 == (50331648 & e) } }, 237: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.TEXT_BASELINE = t.DIM_OPACITY = t.INVERTED_DEFAULT_COLOR = void 0; const s = i(399); t.INVERTED_DEFAULT_COLOR = 257, t.DIM_OPACITY = .5, t.TEXT_BASELINE = s.isFirefox || s.isLegacyEdge ? "bottom" : "ideographic" }, 457: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CursorBlinkStateManager = void 0, t.CursorBlinkStateManager = class { constructor(e, t) { this._renderCallback = e, this._coreBrowserService = t, this.isCursorVisible = !0, this._coreBrowserService.isFocused && this._restartInterval() } get isPaused() { return !(this._blinkStartTimeout || this._blinkInterval) } dispose() { this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0) } restartBlinkAnimation() { this.isPaused || (this._animationTimeRestarted = Date.now(), this.isCursorVisible = !0, this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { this._renderCallback(), this._animationFrame = void 0 })))) } _restartInterval(e = 600) { this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout = this._coreBrowserService.window.setTimeout((() => { if (this._animationTimeRestarted) { const e = 600 - (Date.now() - this._animationTimeRestarted); if (this._animationTimeRestarted = void 0, e > 0) return void this._restartInterval(e) } this.isCursorVisible = !1, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { this._renderCallback(), this._animationFrame = void 0 })), this._blinkInterval = this._coreBrowserService.window.setInterval((() => { if (this._animationTimeRestarted) { const e = 600 - (Date.now() - this._animationTimeRestarted); return this._animationTimeRestarted = void 0, void this._restartInterval(e) } this.isCursorVisible = !this.isCursorVisible, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { this._renderCallback(), this._animationFrame = void 0 })) }), 600) }), e) } pause() { this.isCursorVisible = !0, this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0) } resume() { this.pause(), this._animationTimeRestarted = void 0, this._restartInterval(), this.restartBlinkAnimation() } } }, 860: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.tryDrawCustomChar = t.powerlineDefinitions = t.boxDrawingDefinitions = t.blockElementDefinitions = void 0; const s = i(374); t.blockElementDefinitions = { "▀": [{ x: 0, y: 0, w: 8, h: 4 }], "▁": [{ x: 0, y: 7, w: 8, h: 1 }], "▂": [{ x: 0, y: 6, w: 8, h: 2 }], "▃": [{ x: 0, y: 5, w: 8, h: 3 }], "▄": [{ x: 0, y: 4, w: 8, h: 4 }], "▅": [{ x: 0, y: 3, w: 8, h: 5 }], "▆": [{ x: 0, y: 2, w: 8, h: 6 }], "▇": [{ x: 0, y: 1, w: 8, h: 7 }], "█": [{ x: 0, y: 0, w: 8, h: 8 }], "▉": [{ x: 0, y: 0, w: 7, h: 8 }], "▊": [{ x: 0, y: 0, w: 6, h: 8 }], "▋": [{ x: 0, y: 0, w: 5, h: 8 }], "▌": [{ x: 0, y: 0, w: 4, h: 8 }], "▍": [{ x: 0, y: 0, w: 3, h: 8 }], "▎": [{ x: 0, y: 0, w: 2, h: 8 }], "▏": [{ x: 0, y: 0, w: 1, h: 8 }], "▐": [{ x: 4, y: 0, w: 4, h: 8 }], "▔": [{ x: 0, y: 0, w: 8, h: 1 }], "▕": [{ x: 7, y: 0, w: 1, h: 8 }], "▖": [{ x: 0, y: 4, w: 4, h: 4 }], "▗": [{ x: 4, y: 4, w: 4, h: 4 }], "▘": [{ x: 0, y: 0, w: 4, h: 4 }], "▙": [{ x: 0, y: 0, w: 4, h: 8 }, { x: 0, y: 4, w: 8, h: 4 }], "▚": [{ x: 0, y: 0, w: 4, h: 4 }, { x: 4, y: 4, w: 4, h: 4 }], "▛": [{ x: 0, y: 0, w: 4, h: 8 }, { x: 4, y: 0, w: 4, h: 4 }], "▜": [{ x: 0, y: 0, w: 8, h: 4 }, { x: 4, y: 0, w: 4, h: 8 }], "▝": [{ x: 4, y: 0, w: 4, h: 4 }], "▞": [{ x: 4, y: 0, w: 4, h: 4 }, { x: 0, y: 4, w: 4, h: 4 }], "▟": [{ x: 4, y: 0, w: 4, h: 8 }, { x: 0, y: 4, w: 8, h: 4 }], "🭰": [{ x: 1, y: 0, w: 1, h: 8 }], "🭱": [{ x: 2, y: 0, w: 1, h: 8 }], "🭲": [{ x: 3, y: 0, w: 1, h: 8 }], "🭳": [{ x: 4, y: 0, w: 1, h: 8 }], "🭴": [{ x: 5, y: 0, w: 1, h: 8 }], "🭵": [{ x: 6, y: 0, w: 1, h: 8 }], "🭶": [{ x: 0, y: 1, w: 8, h: 1 }], "🭷": [{ x: 0, y: 2, w: 8, h: 1 }], "🭸": [{ x: 0, y: 3, w: 8, h: 1 }], "🭹": [{ x: 0, y: 4, w: 8, h: 1 }], "🭺": [{ x: 0, y: 5, w: 8, h: 1 }], "🭻": [{ x: 0, y: 6, w: 8, h: 1 }], "🭼": [{ x: 0, y: 0, w: 1, h: 8 }, { x: 0, y: 7, w: 8, h: 1 }], "🭽": [{ x: 0, y: 0, w: 1, h: 8 }, { x: 0, y: 0, w: 8, h: 1 }], "🭾": [{ x: 7, y: 0, w: 1, h: 8 }, { x: 0, y: 0, w: 8, h: 1 }], "🭿": [{ x: 7, y: 0, w: 1, h: 8 }, { x: 0, y: 7, w: 8, h: 1 }], "🮀": [{ x: 0, y: 0, w: 8, h: 1 }, { x: 0, y: 7, w: 8, h: 1 }], "🮁": [{ x: 0, y: 0, w: 8, h: 1 }, { x: 0, y: 2, w: 8, h: 1 }, { x: 0, y: 4, w: 8, h: 1 }, { x: 0, y: 7, w: 8, h: 1 }], "🮂": [{ x: 0, y: 0, w: 8, h: 2 }], "🮃": [{ x: 0, y: 0, w: 8, h: 3 }], "🮄": [{ x: 0, y: 0, w: 8, h: 5 }], "🮅": [{ x: 0, y: 0, w: 8, h: 6 }], "🮆": [{ x: 0, y: 0, w: 8, h: 7 }], "🮇": [{ x: 6, y: 0, w: 2, h: 8 }], "🮈": [{ x: 5, y: 0, w: 3, h: 8 }], "🮉": [{ x: 3, y: 0, w: 5, h: 8 }], "🮊": [{ x: 2, y: 0, w: 6, h: 8 }], "🮋": [{ x: 1, y: 0, w: 7, h: 8 }], "🮕": [{ x: 0, y: 0, w: 2, h: 2 }, { x: 4, y: 0, w: 2, h: 2 }, { x: 2, y: 2, w: 2, h: 2 }, { x: 6, y: 2, w: 2, h: 2 }, { x: 0, y: 4, w: 2, h: 2 }, { x: 4, y: 4, w: 2, h: 2 }, { x: 2, y: 6, w: 2, h: 2 }, { x: 6, y: 6, w: 2, h: 2 }], "🮖": [{ x: 2, y: 0, w: 2, h: 2 }, { x: 6, y: 0, w: 2, h: 2 }, { x: 0, y: 2, w: 2, h: 2 }, { x: 4, y: 2, w: 2, h: 2 }, { x: 2, y: 4, w: 2, h: 2 }, { x: 6, y: 4, w: 2, h: 2 }, { x: 0, y: 6, w: 2, h: 2 }, { x: 4, y: 6, w: 2, h: 2 }], "🮗": [{ x: 0, y: 2, w: 8, h: 2 }, { x: 0, y: 6, w: 8, h: 2 }] }; const r = { "░": [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0]], "▒": [[1, 0], [0, 0], [0, 1], [0, 0]], "▓": [[0, 1], [1, 1], [1, 0], [1, 1]] }; t.boxDrawingDefinitions = { "─": { 1: "M0,.5 L1,.5" }, "━": { 3: "M0,.5 L1,.5" }, "│": { 1: "M.5,0 L.5,1" }, "┃": { 3: "M.5,0 L.5,1" }, "┌": { 1: "M0.5,1 L.5,.5 L1,.5" }, "┏": { 3: "M0.5,1 L.5,.5 L1,.5" }, "┐": { 1: "M0,.5 L.5,.5 L.5,1" }, "┓": { 3: "M0,.5 L.5,.5 L.5,1" }, "└": { 1: "M.5,0 L.5,.5 L1,.5" }, "┗": { 3: "M.5,0 L.5,.5 L1,.5" }, "┘": { 1: "M.5,0 L.5,.5 L0,.5" }, "┛": { 3: "M.5,0 L.5,.5 L0,.5" }, "├": { 1: "M.5,0 L.5,1 M.5,.5 L1,.5" }, "┣": { 3: "M.5,0 L.5,1 M.5,.5 L1,.5" }, "┤": { 1: "M.5,0 L.5,1 M.5,.5 L0,.5" }, "┫": { 3: "M.5,0 L.5,1 M.5,.5 L0,.5" }, "┬": { 1: "M0,.5 L1,.5 M.5,.5 L.5,1" }, "┳": { 3: "M0,.5 L1,.5 M.5,.5 L.5,1" }, "┴": { 1: "M0,.5 L1,.5 M.5,.5 L.5,0" }, "┻": { 3: "M0,.5 L1,.5 M.5,.5 L.5,0" }, "┼": { 1: "M0,.5 L1,.5 M.5,0 L.5,1" }, "╋": { 3: "M0,.5 L1,.5 M.5,0 L.5,1" }, "╴": { 1: "M.5,.5 L0,.5" }, "╸": { 3: "M.5,.5 L0,.5" }, "╵": { 1: "M.5,.5 L.5,0" }, "╹": { 3: "M.5,.5 L.5,0" }, "╶": { 1: "M.5,.5 L1,.5" }, "╺": { 3: "M.5,.5 L1,.5" }, "╷": { 1: "M.5,.5 L.5,1" }, "╻": { 3: "M.5,.5 L.5,1" }, "═": { 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` }, "║": { 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` }, "╒": { 1: (e, t) => `M.5,1 L.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}` }, "╓": { 1: (e, t) => `M${.5 - e},1 L${.5 - e},.5 L1,.5 M${.5 + e},.5 L${.5 + e},1` }, "╔": { 1: (e, t) => `M1,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1` }, "╕": { 1: (e, t) => `M0,${.5 - t} L.5,${.5 - t} L.5,1 M0,${.5 + t} L.5,${.5 + t}` }, "╖": { 1: (e, t) => `M${.5 + e},1 L${.5 + e},.5 L0,.5 M${.5 - e},.5 L${.5 - e},1` }, "╗": { 1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},1` }, "╘": { 1: (e, t) => `M.5,0 L.5,${.5 + t} L1,${.5 + t} M.5,${.5 - t} L1,${.5 - t}` }, "╙": { 1: (e, t) => `M1,.5 L${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0` }, "╚": { 1: (e, t) => `M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0 M1,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},0` }, "╛": { 1: (e, t) => `M0,${.5 + t} L.5,${.5 + t} L.5,0 M0,${.5 - t} L.5,${.5 - t}` }, "╜": { 1: (e, t) => `M0,.5 L${.5 + e},.5 L${.5 + e},0 M${.5 - e},.5 L${.5 - e},0` }, "╝": { 1: (e, t) => `M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M0,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},0` }, "╞": { 1: (e, t) => `M.5,0 L.5,1 M.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}` }, "╟": { 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1 M${.5 + e},.5 L1,.5` }, "╠": { 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` }, "╡": { 1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L.5,${.5 - t} M0,${.5 + t} L.5,${.5 + t}` }, "╢": { 1: (e, t) => `M0,.5 L${.5 - e},.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` }, "╣": { 1: (e, t) => `M${.5 + e},0 L${.5 + e},1 M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0` }, "╤": { 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t} M.5,${.5 + t} L.5,1` }, "╥": { 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},1 M${.5 + e},.5 L${.5 + e},1` }, "╦": { 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1` }, "╧": { 1: (e, t) => `M.5,0 L.5,${.5 - t} M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` }, "╨": { 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0` }, "╩": { 1: (e, t) => `M0,${.5 + t} L1,${.5 + t} M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` }, "╪": { 1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` }, "╫": { 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` }, "╬": { 1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` }, "╱": { 1: "M1,0 L0,1" }, "╲": { 1: "M0,0 L1,1" }, "╳": { 1: "M1,0 L0,1 M0,0 L1,1" }, "╼": { 1: "M.5,.5 L0,.5", 3: "M.5,.5 L1,.5" }, "╽": { 1: "M.5,.5 L.5,0", 3: "M.5,.5 L.5,1" }, "╾": { 1: "M.5,.5 L1,.5", 3: "M.5,.5 L0,.5" }, "╿": { 1: "M.5,.5 L.5,1", 3: "M.5,.5 L.5,0" }, "┍": { 1: "M.5,.5 L.5,1", 3: "M.5,.5 L1,.5" }, "┎": { 1: "M.5,.5 L1,.5", 3: "M.5,.5 L.5,1" }, "┑": { 1: "M.5,.5 L.5,1", 3: "M.5,.5 L0,.5" }, "┒": { 1: "M.5,.5 L0,.5", 3: "M.5,.5 L.5,1" }, "┕": { 1: "M.5,.5 L.5,0", 3: "M.5,.5 L1,.5" }, "┖": { 1: "M.5,.5 L1,.5", 3: "M.5,.5 L.5,0" }, "┙": { 1: "M.5,.5 L.5,0", 3: "M.5,.5 L0,.5" }, "┚": { 1: "M.5,.5 L0,.5", 3: "M.5,.5 L.5,0" }, "┝": { 1: "M.5,0 L.5,1", 3: "M.5,.5 L1,.5" }, "┞": { 1: "M0.5,1 L.5,.5 L1,.5", 3: "M.5,.5 L.5,0" }, "┟": { 1: "M.5,0 L.5,.5 L1,.5", 3: "M.5,.5 L.5,1" }, "┠": { 1: "M.5,.5 L1,.5", 3: "M.5,0 L.5,1" }, "┡": { 1: "M.5,.5 L.5,1", 3: "M.5,0 L.5,.5 L1,.5" }, "┢": { 1: "M.5,.5 L.5,0", 3: "M0.5,1 L.5,.5 L1,.5" }, "┥": { 1: "M.5,0 L.5,1", 3: "M.5,.5 L0,.5" }, "┦": { 1: "M0,.5 L.5,.5 L.5,1", 3: "M.5,.5 L.5,0" }, "┧": { 1: "M.5,0 L.5,.5 L0,.5", 3: "M.5,.5 L.5,1" }, "┨": { 1: "M.5,.5 L0,.5", 3: "M.5,0 L.5,1" }, "┩": { 1: "M.5,.5 L.5,1", 3: "M.5,0 L.5,.5 L0,.5" }, "┪": { 1: "M.5,.5 L.5,0", 3: "M0,.5 L.5,.5 L.5,1" }, "┭": { 1: "M0.5,1 L.5,.5 L1,.5", 3: "M.5,.5 L0,.5" }, "┮": { 1: "M0,.5 L.5,.5 L.5,1", 3: "M.5,.5 L1,.5" }, "┯": { 1: "M.5,.5 L.5,1", 3: "M0,.5 L1,.5" }, "┰": { 1: "M0,.5 L1,.5", 3: "M.5,.5 L.5,1" }, "┱": { 1: "M.5,.5 L1,.5", 3: "M0,.5 L.5,.5 L.5,1" }, "┲": { 1: "M.5,.5 L0,.5", 3: "M0.5,1 L.5,.5 L1,.5" }, "┵": { 1: "M.5,0 L.5,.5 L1,.5", 3: "M.5,.5 L0,.5" }, "┶": { 1: "M.5,0 L.5,.5 L0,.5", 3: "M.5,.5 L1,.5" }, "┷": { 1: "M.5,.5 L.5,0", 3: "M0,.5 L1,.5" }, "┸": { 1: "M0,.5 L1,.5", 3: "M.5,.5 L.5,0" }, "┹": { 1: "M.5,.5 L1,.5", 3: "M.5,0 L.5,.5 L0,.5" }, "┺": { 1: "M.5,.5 L0,.5", 3: "M.5,0 L.5,.5 L1,.5" }, "┽": { 1: "M.5,0 L.5,1 M.5,.5 L1,.5", 3: "M.5,.5 L0,.5" }, "┾": { 1: "M.5,0 L.5,1 M.5,.5 L0,.5", 3: "M.5,.5 L1,.5" }, "┿": { 1: "M.5,0 L.5,1", 3: "M0,.5 L1,.5" }, "╀": { 1: "M0,.5 L1,.5 M.5,.5 L.5,1", 3: "M.5,.5 L.5,0" }, "╁": { 1: "M.5,.5 L.5,0 M0,.5 L1,.5", 3: "M.5,.5 L.5,1" }, "╂": { 1: "M0,.5 L1,.5", 3: "M.5,0 L.5,1" }, "╃": { 1: "M0.5,1 L.5,.5 L1,.5", 3: "M.5,0 L.5,.5 L0,.5" }, "╄": { 1: "M0,.5 L.5,.5 L.5,1", 3: "M.5,0 L.5,.5 L1,.5" }, "╅": { 1: "M.5,0 L.5,.5 L1,.5", 3: "M0,.5 L.5,.5 L.5,1" }, "╆": { 1: "M.5,0 L.5,.5 L0,.5", 3: "M0.5,1 L.5,.5 L1,.5" }, "╇": { 1: "M.5,.5 L.5,1", 3: "M.5,.5 L.5,0 M0,.5 L1,.5" }, "╈": { 1: "M.5,.5 L.5,0", 3: "M0,.5 L1,.5 M.5,.5 L.5,1" }, "╉": { 1: "M.5,.5 L1,.5", 3: "M.5,0 L.5,1 M.5,.5 L0,.5" }, "╊": { 1: "M.5,.5 L0,.5", 3: "M.5,0 L.5,1 M.5,.5 L1,.5" }, "╌": { 1: "M.1,.5 L.4,.5 M.6,.5 L.9,.5" }, "╍": { 3: "M.1,.5 L.4,.5 M.6,.5 L.9,.5" }, "┄": { 1: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5" }, "┅": { 3: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5" }, "┈": { 1: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5" }, "┉": { 3: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5" }, "╎": { 1: "M.5,.1 L.5,.4 M.5,.6 L.5,.9" }, "╏": { 3: "M.5,.1 L.5,.4 M.5,.6 L.5,.9" }, "┆": { 1: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333" }, "┇": { 3: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333" }, "┊": { 1: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95" }, "┋": { 3: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95" }, "╭": { 1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,1,.5` }, "╮": { 1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,0,.5` }, "╯": { 1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,0,.5` }, "╰": { 1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,1,.5` } }, t.powerlineDefinitions = { "": { d: "M0,0 L1,.5 L0,1", type: 0, rightPadding: 2 }, "": { d: "M-1,-.5 L1,.5 L-1,1.5", type: 1, leftPadding: 1, rightPadding: 1 }, "": { d: "M1,0 L0,.5 L1,1", type: 0, leftPadding: 2 }, "": { d: "M2,-.5 L0,.5 L2,1.5", type: 1, leftPadding: 1, rightPadding: 1 }, "": { d: "M0,0 L0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0", type: 0, rightPadding: 1 }, "": { d: "M.2,1 C.422,1,.8,.826,.78,.5 C.8,.174,0.422,0,.2,0", type: 1, rightPadding: 1 }, "": { d: "M1,0 L1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0", type: 0, leftPadding: 1 }, "": { d: "M.8,1 C0.578,1,0.2,.826,.22,.5 C0.2,0.174,0.578,0,0.8,0", type: 1, leftPadding: 1 }, "": { d: "M-.5,-.5 L1.5,1.5 L-.5,1.5", type: 0 }, "": { d: "M-.5,-.5 L1.5,1.5", type: 1, leftPadding: 1, rightPadding: 1 }, "": { d: "M1.5,-.5 L-.5,1.5 L1.5,1.5", type: 0 }, "": { d: "M1.5,-.5 L-.5,1.5 L-.5,-.5", type: 0 }, "": { d: "M1.5,-.5 L-.5,1.5", type: 1, leftPadding: 1, rightPadding: 1 }, "": { d: "M-.5,-.5 L1.5,1.5 L1.5,-.5", type: 0 } }, t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.tryDrawCustomChar = function (e, i, o, c, l, d, _, u) { const f = t.blockElementDefinitions[i]; if (f) return function (e, t, i, s, r, n) { for (let o = 0; o < t.length; o++) { const a = t[o], h = r / 8, c = n / 8; e.fillRect(i + a.x * h, s + a.y * c, a.w * h, a.h * c) } }(e, f, o, c, l, d), !0; const v = r[i]; if (v) return function (e, t, i, r, o, a) { let h = n.get(t); h || (h = new Map, n.set(t, h)); const c = e.fillStyle; if ("string" != typeof c) throw new Error(`Unexpected fillStyle type "${c}"`); let l = h.get(c); if (!l) { const i = t[0].length, r = t.length, n = e.canvas.ownerDocument.createElement("canvas"); n.width = i, n.height = r; const o = (0, s.throwIfFalsy)(n.getContext("2d")), a = new ImageData(i, r); let d, _, u, f; if (c.startsWith("#")) d = parseInt(c.slice(1, 3), 16), _ = parseInt(c.slice(3, 5), 16), u = parseInt(c.slice(5, 7), 16), f = c.length > 7 && parseInt(c.slice(7, 9), 16) || 1; else { if (!c.startsWith("rgba")) throw new Error(`Unexpected fillStyle color format "${c}" when drawing pattern glyph`);[d, _, u, f] = c.substring(5, c.length - 1).split(",").map((e => parseFloat(e))) } for (let e = 0; e < r; e++)for (let s = 0; s < i; s++)a.data[4 * (e * i + s)] = d, a.data[4 * (e * i + s) + 1] = _, a.data[4 * (e * i + s) + 2] = u, a.data[4 * (e * i + s) + 3] = t[e][s] * (255 * f); o.putImageData(a, 0, 0), l = (0, s.throwIfFalsy)(e.createPattern(n, null)), h.set(c, l) } e.fillStyle = l, e.fillRect(i, r, o, a) }(e, v, o, c, l, d), !0; const g = t.boxDrawingDefinitions[i]; if (g) return function (e, t, i, s, r, n, o) { e.strokeStyle = e.fillStyle; for (const [c, l] of Object.entries(t)) { let t; e.beginPath(), e.lineWidth = o * Number.parseInt(c), t = "function" == typeof l ? l(.15, .15 / n * r) : l; for (const c of t.split(" ")) { const t = c[0], l = a[t]; if (!l) { console.error(`Could not find drawing instructions for "${t}"`); continue } const d = c.substring(1).split(","); d[0] && d[1] && l(e, h(d, r, n, i, s, !0, o)) } e.stroke(), e.closePath() } }(e, g, o, c, l, d, u), !0; const p = t.powerlineDefinitions[i]; return !!p && (function (e, t, i, s, r, n, o, c) { const l = new Path2D; l.rect(i, s, r, n), e.clip(l), e.beginPath(); const d = o / 12; e.lineWidth = c * d; for (const o of t.d.split(" ")) { const l = o[0], _ = a[l]; if (!_) { console.error(`Could not find drawing instructions for "${l}"`); continue } const u = o.substring(1).split(","); u[0] && u[1] && _(e, h(u, r, n, i, s, !1, c, (t.leftPadding ?? 0) * (d / 2), (t.rightPadding ?? 0) * (d / 2))) } 1 === t.type ? (e.strokeStyle = e.fillStyle, e.stroke()) : e.fill(), e.closePath() }(e, p, o, c, l, d, _, u), !0) }; const n = new Map; function o(e, t, i = 0) { return Math.max(Math.min(e, t), i) } const a = { C: (e, t) => e.bezierCurveTo(t[0], t[1], t[2], t[3], t[4], t[5]), L: (e, t) => e.lineTo(t[0], t[1]), M: (e, t) => e.moveTo(t[0], t[1]) }; function h(e, t, i, s, r, n, a, h = 0, c = 0) { const l = e.map((e => parseFloat(e) || parseInt(e))); if (l.length < 2) throw new Error("Too few arguments for instruction"); for (let e = 0; e < l.length; e += 2)l[e] *= t - h * a - c * a, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, t, 0)), l[e] += s + h * a; for (let e = 1; e < l.length; e += 2)l[e] *= i, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, i, 0)), l[e] += r; return l } }, 56: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.observeDevicePixelDimensions = void 0; const s = i(859); t.observeDevicePixelDimensions = function (e, t, i) { let r = new t.ResizeObserver((t => { const s = t.find((t => t.target === e)); if (!s) return; if (!("devicePixelContentBoxSize" in s)) return r?.disconnect(), void (r = void 0); const n = s.devicePixelContentBoxSize[0].inlineSize, o = s.devicePixelContentBoxSize[0].blockSize; n > 0 && o > 0 && i(n, o) })); try { r.observe(e, { box: ["device-pixel-content-box"] }) } catch { r.disconnect(), r = void 0 } return (0, s.toDisposable)((() => r?.disconnect())) } }, 374: (e, t) => { function i(e) { return 57508 <= e && e <= 57558 } function s(e) { return e >= 128512 && e <= 128591 || e >= 127744 && e <= 128511 || e >= 128640 && e <= 128767 || e >= 9728 && e <= 9983 || e >= 9984 && e <= 10175 || e >= 65024 && e <= 65039 || e >= 129280 && e <= 129535 || e >= 127462 && e <= 127487 } Object.defineProperty(t, "__esModule", { value: !0 }), t.computeNextVariantOffset = t.createRenderDimensions = t.treatGlyphAsBackgroundColor = t.allowRescaling = t.isEmoji = t.isRestrictedPowerlineGlyph = t.isPowerlineGlyph = t.throwIfFalsy = void 0, t.throwIfFalsy = function (e) { if (!e) throw new Error("value must not be falsy"); return e }, t.isPowerlineGlyph = i, t.isRestrictedPowerlineGlyph = function (e) { return 57520 <= e && e <= 57527 }, t.isEmoji = s, t.allowRescaling = function (e, t, r, n) { return 1 === t && r > Math.ceil(1.5 * n) && void 0 !== e && e > 255 && !s(e) && !i(e) && !function (e) { return 57344 <= e && e <= 63743 }(e) }, t.treatGlyphAsBackgroundColor = function (e) { return i(e) || function (e) { return 9472 <= e && e <= 9631 }(e) }, t.createRenderDimensions = function () { return { css: { canvas: { width: 0, height: 0 }, cell: { width: 0, height: 0 } }, device: { canvas: { width: 0, height: 0 }, cell: { width: 0, height: 0 }, char: { width: 0, height: 0, left: 0, top: 0 } } } }, t.computeNextVariantOffset = function (e, t, i = 0) { return (e - (2 * Math.round(t) - i)) % (2 * Math.round(t)) } }, 296: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.createSelectionRenderModel = void 0; class i { constructor() { this.clear() } clear() { this.hasSelection = !1, this.columnSelectMode = !1, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0 } update(e, t, i, s = !1) { if (this.selectionStart = t, this.selectionEnd = i, !t || !i || t[0] === i[0] && t[1] === i[1]) return void this.clear(); const r = e.buffers.active.ydisp, n = t[1] - r, o = i[1] - r, a = Math.max(n, 0), h = Math.min(o, e.rows - 1); a >= e.rows || h < 0 ? this.clear() : (this.hasSelection = !0, this.columnSelectMode = s, this.viewportStartRow = n, this.viewportEndRow = o, this.viewportCappedStartRow = a, this.viewportCappedEndRow = h, this.startCol = t[0], this.endCol = i[0]) } isCellSelected(e, t, i) { return !!this.hasSelection && (i -= e.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? t >= this.startCol && i >= this.viewportCappedStartRow && t < this.endCol && i <= this.viewportCappedEndRow : t < this.startCol && i >= this.viewportCappedStartRow && t >= this.endCol && i <= this.viewportCappedEndRow : i > this.viewportStartRow && i < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportEndRow && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol) } } t.createSelectionRenderModel = function () { return new i } }, 509: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.TextureAtlas = void 0; const s = i(237), r = i(860), n = i(374), o = i(160), a = i(345), h = i(485), c = i(385), l = i(147), d = i(855), _ = { texturePage: 0, texturePosition: { x: 0, y: 0 }, texturePositionClipSpace: { x: 0, y: 0 }, offset: { x: 0, y: 0 }, size: { x: 0, y: 0 }, sizeClipSpace: { x: 0, y: 0 } }; let u; class f { get pages() { return this._pages } constructor(e, t, i) { this._document = e, this._config = t, this._unicodeService = i, this._didWarmUp = !1, this._cacheMap = new h.FourKeyMap, this._cacheMapCombined = new h.FourKeyMap, this._pages = [], this._activePages = [], this._workBoundingBox = { top: 0, left: 0, bottom: 0, right: 0 }, this._workAttributeData = new l.AttributeData, this._textureSize = 512, this._onAddTextureAtlasCanvas = new a.EventEmitter, this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = new a.EventEmitter, this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._requestClearModel = !1, this._createNewPage(), this._tmpCanvas = p(e, 4 * this._config.deviceCellWidth + 4, this._config.deviceCellHeight + 4), this._tmpCtx = (0, n.throwIfFalsy)(this._tmpCanvas.getContext("2d", { alpha: this._config.allowTransparency, willReadFrequently: !0 })) } dispose() { for (const e of this.pages) e.canvas.remove(); this._onAddTextureAtlasCanvas.dispose() } warmUp() { this._didWarmUp || (this._doWarmUp(), this._didWarmUp = !0) } _doWarmUp() { const e = new c.IdleTaskQueue; for (let t = 33; t < 126; t++)e.enqueue((() => { if (!this._cacheMap.get(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT)) { const e = this._drawToCache(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT); this._cacheMap.set(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT, e) } })) } beginFrame() { return this._requestClearModel } clearTexture() { if (0 !== this._pages[0].currentRow.x || 0 !== this._pages[0].currentRow.y) { for (const e of this._pages) e.clear(); this._cacheMap.clear(), this._cacheMapCombined.clear(), this._didWarmUp = !1 } } _createNewPage() { if (f.maxAtlasPages && this._pages.length >= Math.max(4, f.maxAtlasPages)) { const e = this._pages.filter((e => 2 * e.canvas.width <= (f.maxTextureSize || 4096))).sort(((e, t) => t.canvas.width !== e.canvas.width ? t.canvas.width - e.canvas.width : t.percentageUsed - e.percentageUsed)); let t = -1, i = 0; for (let s = 0; s < e.length; s++)if (e[s].canvas.width !== i) t = s, i = e[s].canvas.width; else if (s - t == 3) break; const s = e.slice(t, t + 4), r = s.map((e => e.glyphs[0].texturePage)).sort(((e, t) => e > t ? 1 : -1)), n = this.pages.length - s.length, o = this._mergePages(s, n); o.version++; for (let e = r.length - 1; e >= 0; e--)this._deletePage(r[e]); this.pages.push(o), this._requestClearModel = !0, this._onAddTextureAtlasCanvas.fire(o.canvas) } const e = new v(this._document, this._textureSize); return this._pages.push(e), this._activePages.push(e), this._onAddTextureAtlasCanvas.fire(e.canvas), e } _mergePages(e, t) { const i = 2 * e[0].canvas.width, s = new v(this._document, i, e); for (const [r, n] of e.entries()) { const e = r * n.canvas.width % i, o = Math.floor(r / 2) * n.canvas.height; s.ctx.drawImage(n.canvas, e, o); for (const s of n.glyphs) s.texturePage = t, s.sizeClipSpace.x = s.size.x / i, s.sizeClipSpace.y = s.size.y / i, s.texturePosition.x += e, s.texturePosition.y += o, s.texturePositionClipSpace.x = s.texturePosition.x / i, s.texturePositionClipSpace.y = s.texturePosition.y / i; this._onRemoveTextureAtlasCanvas.fire(n.canvas); const a = this._activePages.indexOf(n); -1 !== a && this._activePages.splice(a, 1) } return s } _deletePage(e) { this._pages.splice(e, 1); for (let t = e; t < this._pages.length; t++) { const e = this._pages[t]; for (const t of e.glyphs) t.texturePage--; e.version++ } } getRasterizedGlyphCombinedChar(e, t, i, s, r) { return this._getFromCacheMap(this._cacheMapCombined, e, t, i, s, r) } getRasterizedGlyph(e, t, i, s, r) { return this._getFromCacheMap(this._cacheMap, e, t, i, s, r) } _getFromCacheMap(e, t, i, s, r, n = !1) { return u = e.get(t, i, s, r), u || (u = this._drawToCache(t, i, s, r, n), e.set(t, i, s, r, u)), u } _getColorFromAnsiIndex(e) { if (e >= this._config.colors.ansi.length) throw new Error("No color found for idx " + e); return this._config.colors.ansi[e] } _getBackgroundColor(e, t, i, s) { if (this._config.allowTransparency) return o.NULL_COLOR; let r; switch (e) { case 16777216: case 33554432: r = this._getColorFromAnsiIndex(t); break; case 50331648: const e = l.AttributeData.toColorRGB(t); r = o.channels.toColor(e[0], e[1], e[2]); break; default: r = i ? o.color.opaque(this._config.colors.foreground) : this._config.colors.background }return r } _getForegroundColor(e, t, i, r, n, a, h, c, d, _) { const u = this._getMinimumContrastColor(e, t, i, r, n, a, h, d, c, _); if (u) return u; let f; switch (n) { case 16777216: case 33554432: this._config.drawBoldTextInBrightColors && d && a < 8 && (a += 8), f = this._getColorFromAnsiIndex(a); break; case 50331648: const e = l.AttributeData.toColorRGB(a); f = o.channels.toColor(e[0], e[1], e[2]); break; default: f = h ? this._config.colors.background : this._config.colors.foreground }return this._config.allowTransparency && (f = o.color.opaque(f)), c && (f = o.color.multiplyOpacity(f, s.DIM_OPACITY)), f } _resolveBackgroundRgba(e, t, i) { switch (e) { case 16777216: case 33554432: return this._getColorFromAnsiIndex(t).rgba; case 50331648: return t << 8; default: return i ? this._config.colors.foreground.rgba : this._config.colors.background.rgba } } _resolveForegroundRgba(e, t, i, s) { switch (e) { case 16777216: case 33554432: return this._config.drawBoldTextInBrightColors && s && t < 8 && (t += 8), this._getColorFromAnsiIndex(t).rgba; case 50331648: return t << 8; default: return i ? this._config.colors.background.rgba : this._config.colors.foreground.rgba } } _getMinimumContrastColor(e, t, i, s, r, n, a, h, c, l) { if (1 === this._config.minimumContrastRatio || l) return; const d = this._getContrastCache(c), _ = d.getColor(e, s); if (void 0 !== _) return _ || void 0; const u = this._resolveBackgroundRgba(t, i, a), f = this._resolveForegroundRgba(r, n, a, h), v = o.rgba.ensureContrastRatio(u, f, this._config.minimumContrastRatio / (c ? 2 : 1)); if (!v) return void d.setColor(e, s, null); const g = o.channels.toColor(v >> 24 & 255, v >> 16 & 255, v >> 8 & 255); return d.setColor(e, s, g), g } _getContrastCache(e) { return e ? this._config.colors.halfContrastCache : this._config.colors.contrastCache } _drawToCache(e, t, i, o, a = !1) { const h = "number" == typeof e ? String.fromCharCode(e) : e, c = Math.min(this._config.deviceCellWidth * Math.max(h.length, 2) + 4, this._textureSize); this._tmpCanvas.width < c && (this._tmpCanvas.width = c); const d = Math.min(this._config.deviceCellHeight + 8, this._textureSize); if (this._tmpCanvas.height < d && (this._tmpCanvas.height = d), this._tmpCtx.save(), this._workAttributeData.fg = i, this._workAttributeData.bg = t, this._workAttributeData.extended.ext = o, this._workAttributeData.isInvisible()) return _; const u = !!this._workAttributeData.isBold(), v = !!this._workAttributeData.isInverse(), p = !!this._workAttributeData.isDim(), m = !!this._workAttributeData.isItalic(), C = !!this._workAttributeData.isUnderline(), S = !!this._workAttributeData.isStrikethrough(), b = !!this._workAttributeData.isOverline(); let w = this._workAttributeData.getFgColor(), y = this._workAttributeData.getFgColorMode(), L = this._workAttributeData.getBgColor(), x = this._workAttributeData.getBgColorMode(); if (v) { const e = w; w = L, L = e; const t = y; y = x, x = t } const E = this._getBackgroundColor(x, L, v, p); this._tmpCtx.globalCompositeOperation = "copy", this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.globalCompositeOperation = "source-over"; const R = u ? this._config.fontWeightBold : this._config.fontWeight, M = m ? "italic" : ""; this._tmpCtx.font = `${M} ${R} ${this._config.fontSize * this._config.devicePixelRatio}px ${this._config.fontFamily}`, this._tmpCtx.textBaseline = s.TEXT_BASELINE; const A = 1 === h.length && (0, n.isPowerlineGlyph)(h.charCodeAt(0)), D = 1 === h.length && (0, n.isRestrictedPowerlineGlyph)(h.charCodeAt(0)), k = this._getForegroundColor(t, x, L, i, y, w, v, p, u, (0, n.treatGlyphAsBackgroundColor)(h.charCodeAt(0))); this._tmpCtx.fillStyle = k.css; const T = D ? 0 : 4; let B = !1; !1 !== this._config.customGlyphs && (B = (0, r.tryDrawCustomChar)(this._tmpCtx, h, T, T, this._config.deviceCellWidth, this._config.deviceCellHeight, this._config.fontSize, this._config.devicePixelRatio)); let O, P = !A; if (O = "number" == typeof e ? this._unicodeService.wcwidth(e) : this._unicodeService.getStringCellWidth(e), C) { this._tmpCtx.save(); const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)), t = e % 2 == 1 ? .5 : 0; if (this._tmpCtx.lineWidth = e, this._workAttributeData.isUnderlineColorDefault()) this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle; else if (this._workAttributeData.isUnderlineColorRGB()) P = !1, this._tmpCtx.strokeStyle = `rgb(${l.AttributeData.toColorRGB(this._workAttributeData.getUnderlineColor()).join(",")})`; else { P = !1; let e = this._workAttributeData.getUnderlineColor(); this._config.drawBoldTextInBrightColors && this._workAttributeData.isBold() && e < 8 && (e += 8), this._tmpCtx.strokeStyle = this._getColorFromAnsiIndex(e).css } this._tmpCtx.beginPath(); const i = T, s = Math.ceil(T + this._config.deviceCharHeight) - t - (a ? 2 * e : 0), r = s + e, o = s + 2 * e; let c = this._workAttributeData.getUnderlineVariantOffset(); for (let a = 0; a < O; a++) { this._tmpCtx.save(); const h = i + a * this._config.deviceCellWidth, l = i + (a + 1) * this._config.deviceCellWidth, d = h + this._config.deviceCellWidth / 2; switch (this._workAttributeData.extended.underlineStyle) { case 2: this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s), this._tmpCtx.moveTo(h, o), this._tmpCtx.lineTo(l, o); break; case 3: const i = e <= 1 ? o : Math.ceil(T + this._config.deviceCharHeight - e / 2) - t, a = e <= 1 ? s : Math.ceil(T + this._config.deviceCharHeight + e / 2) - t, _ = new Path2D; _.rect(h, s, this._config.deviceCellWidth, o - s), this._tmpCtx.clip(_), this._tmpCtx.moveTo(h - this._config.deviceCellWidth / 2, r), this._tmpCtx.bezierCurveTo(h - this._config.deviceCellWidth / 2, a, h, a, h, r), this._tmpCtx.bezierCurveTo(h, i, d, i, d, r), this._tmpCtx.bezierCurveTo(d, a, l, a, l, r), this._tmpCtx.bezierCurveTo(l, i, l + this._config.deviceCellWidth / 2, i, l + this._config.deviceCellWidth / 2, r); break; case 4: const u = 0 === c ? 0 : c >= e ? 2 * e - c : e - c; 0 == !(c >= e) || 0 === u ? (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h + u, s), this._tmpCtx.lineTo(l, s)) : (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(h + u, s), this._tmpCtx.moveTo(h + u + e, s), this._tmpCtx.lineTo(l, s)), c = (0, n.computeNextVariantOffset)(l - h, e, c); break; case 5: const f = .6, v = .3, g = l - h, p = Math.floor(f * g), m = Math.floor(v * g), C = g - p - m; this._tmpCtx.setLineDash([p, m, C]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s); break; default: this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s) }this._tmpCtx.stroke(), this._tmpCtx.restore() } if (this._tmpCtx.restore(), !B && this._config.fontSize >= 12 && !this._config.allowTransparency && " " !== h) { this._tmpCtx.save(), this._tmpCtx.textBaseline = "alphabetic"; const t = this._tmpCtx.measureText(h); if (this._tmpCtx.restore(), "actualBoundingBoxDescent" in t && t.actualBoundingBoxDescent > 0) { this._tmpCtx.save(); const t = new Path2D; t.rect(i, s - Math.ceil(e / 2), this._config.deviceCellWidth * O, o - s + Math.ceil(e / 2)), this._tmpCtx.clip(t), this._tmpCtx.lineWidth = 3 * this._config.devicePixelRatio, this._tmpCtx.strokeStyle = E.css, this._tmpCtx.strokeText(h, T, T + this._config.deviceCharHeight), this._tmpCtx.restore() } } } if (b) { const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)), t = e % 2 == 1 ? .5 : 0; this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + t), this._tmpCtx.stroke() } if (B || this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight), "_" === h && !this._config.allowTransparency) { let e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P); if (e) for (let t = 1; t <= 5 && (this._tmpCtx.save(), this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.restore(), this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight - t), e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P), e); t++); } if (S) { const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 10)), t = this._tmpCtx.lineWidth % 2 == 1 ? .5 : 0; this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.stroke() } this._tmpCtx.restore(); const I = this._tmpCtx.getImageData(0, 0, this._tmpCanvas.width, this._tmpCanvas.height); let F; if (F = this._config.allowTransparency ? function (e) { for (let t = 0; t < e.data.length; t += 4)if (e.data[t + 3] > 0) return !1; return !0 }(I) : g(I, E, k, P), F) return _; const H = this._findGlyphBoundingBox(I, this._workBoundingBox, c, D, B, T); let $, W; for (; ;) { if (0 === this._activePages.length) { const e = this._createNewPage(); $ = e, W = e.currentRow, W.height = H.size.y; break } $ = this._activePages[this._activePages.length - 1], W = $.currentRow; for (const e of this._activePages) H.size.y <= e.currentRow.height && ($ = e, W = e.currentRow); for (let e = this._activePages.length - 1; e >= 0; e--)for (const t of this._activePages[e].fixedRows) t.height <= W.height && H.size.y <= t.height && ($ = this._activePages[e], W = t); if (W.y + H.size.y >= $.canvas.height || W.height > H.size.y + 2) { let e = !1; if ($.currentRow.y + $.currentRow.height + H.size.y >= $.canvas.height) { let t; for (const e of this._activePages) if (e.currentRow.y + e.currentRow.height + H.size.y < e.canvas.height) { t = e; break } if (t) $ = t; else if (f.maxAtlasPages && this._pages.length >= f.maxAtlasPages && W.y + H.size.y <= $.canvas.height && W.height >= H.size.y && W.x + H.size.x <= $.canvas.width) e = !0; else { const t = this._createNewPage(); $ = t, W = t.currentRow, W.height = H.size.y, e = !0 } } e || ($.currentRow.height > 0 && $.fixedRows.push($.currentRow), W = { x: 0, y: $.currentRow.y + $.currentRow.height, height: H.size.y }, $.fixedRows.push(W), $.currentRow = { x: 0, y: W.y + W.height, height: 0 }) } if (W.x + H.size.x <= $.canvas.width) break; W === $.currentRow ? (W.x = 0, W.y += W.height, W.height = 0) : $.fixedRows.splice($.fixedRows.indexOf(W), 1) } return H.texturePage = this._pages.indexOf($), H.texturePosition.x = W.x, H.texturePosition.y = W.y, H.texturePositionClipSpace.x = W.x / $.canvas.width, H.texturePositionClipSpace.y = W.y / $.canvas.height, H.sizeClipSpace.x /= $.canvas.width, H.sizeClipSpace.y /= $.canvas.height, W.height = Math.max(W.height, H.size.y), W.x += H.size.x, $.ctx.putImageData(I, H.texturePosition.x - this._workBoundingBox.left, H.texturePosition.y - this._workBoundingBox.top, this._workBoundingBox.left, this._workBoundingBox.top, H.size.x, H.size.y), $.addGlyph(H), $.version++, H } _findGlyphBoundingBox(e, t, i, s, r, n) { t.top = 0; const o = s ? this._config.deviceCellHeight : this._tmpCanvas.height, a = s ? this._config.deviceCellWidth : i; let h = !1; for (let i = 0; i < o; i++) { for (let s = 0; s < a; s++) { const r = i * this._tmpCanvas.width * 4 + 4 * s + 3; if (0 !== e.data[r]) { t.top = i, h = !0; break } } if (h) break } t.left = 0, h = !1; for (let i = 0; i < n + a; i++) { for (let s = 0; s < o; s++) { const r = s * this._tmpCanvas.width * 4 + 4 * i + 3; if (0 !== e.data[r]) { t.left = i, h = !0; break } } if (h) break } t.right = a, h = !1; for (let i = n + a - 1; i >= n; i--) { for (let s = 0; s < o; s++) { const r = s * this._tmpCanvas.width * 4 + 4 * i + 3; if (0 !== e.data[r]) { t.right = i, h = !0; break } } if (h) break } t.bottom = o, h = !1; for (let i = o - 1; i >= 0; i--) { for (let s = 0; s < a; s++) { const r = i * this._tmpCanvas.width * 4 + 4 * s + 3; if (0 !== e.data[r]) { t.bottom = i, h = !0; break } } if (h) break } return { texturePage: 0, texturePosition: { x: 0, y: 0 }, texturePositionClipSpace: { x: 0, y: 0 }, size: { x: t.right - t.left + 1, y: t.bottom - t.top + 1 }, sizeClipSpace: { x: t.right - t.left + 1, y: t.bottom - t.top + 1 }, offset: { x: -t.left + n + (s || r ? Math.floor((this._config.deviceCellWidth - this._config.deviceCharWidth) / 2) : 0), y: -t.top + n + (s || r ? 1 === this._config.lineHeight ? 0 : Math.round((this._config.deviceCellHeight - this._config.deviceCharHeight) / 2) : 0) } } } } t.TextureAtlas = f; class v { get percentageUsed() { return this._usedPixels / (this.canvas.width * this.canvas.height) } get glyphs() { return this._glyphs } addGlyph(e) { this._glyphs.push(e), this._usedPixels += e.size.x * e.size.y } constructor(e, t, i) { if (this._usedPixels = 0, this._glyphs = [], this.version = 0, this.currentRow = { x: 0, y: 0, height: 0 }, this.fixedRows = [], i) for (const e of i) this._glyphs.push(...e.glyphs), this._usedPixels += e._usedPixels; this.canvas = p(e, t, t), this.ctx = (0, n.throwIfFalsy)(this.canvas.getContext("2d", { alpha: !0 })) } clear() { this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.currentRow.x = 0, this.currentRow.y = 0, this.currentRow.height = 0, this.fixedRows.length = 0, this.version++ } } function g(e, t, i, s) { const r = t.rgba >>> 24, n = t.rgba >>> 16 & 255, o = t.rgba >>> 8 & 255, a = i.rgba >>> 24, h = i.rgba >>> 16 & 255, c = i.rgba >>> 8 & 255, l = Math.floor((Math.abs(r - a) + Math.abs(n - h) + Math.abs(o - c)) / 12); let d = !0; for (let t = 0; t < e.data.length; t += 4)e.data[t] === r && e.data[t + 1] === n && e.data[t + 2] === o || s && Math.abs(e.data[t] - r) + Math.abs(e.data[t + 1] - n) + Math.abs(e.data[t + 2] - o) < l ? e.data[t + 3] = 0 : d = !1; return d } function p(e, t, i) { const s = e.createElement("canvas"); return s.width = t, s.height = i, s } }, 160: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.contrastRatio = t.toPaddedHex = t.rgba = t.rgb = t.css = t.color = t.channels = t.NULL_COLOR = void 0; let i = 0, s = 0, r = 0, n = 0; var o, a, h, c, l; function d(e) { const t = e.toString(16); return t.length < 2 ? "0" + t : t } function _(e, t) { return e < t ? (t + .05) / (e + .05) : (e + .05) / (t + .05) } t.NULL_COLOR = { css: "#00000000", rgba: 0 }, function (e) { e.toCss = function (e, t, i, s) { return void 0 !== s ? `#${d(e)}${d(t)}${d(i)}${d(s)}` : `#${d(e)}${d(t)}${d(i)}` }, e.toRgba = function (e, t, i, s = 255) { return (e << 24 | t << 16 | i << 8 | s) >>> 0 }, e.toColor = function (t, i, s, r) { return { css: e.toCss(t, i, s, r), rgba: e.toRgba(t, i, s, r) } } }(o || (t.channels = o = {})), function (e) { function t(e, t) { return n = Math.round(255 * t), [i, s, r] = l.toChannels(e.rgba), { css: o.toCss(i, s, r, n), rgba: o.toRgba(i, s, r, n) } } e.blend = function (e, t) { if (n = (255 & t.rgba) / 255, 1 === n) return { css: t.css, rgba: t.rgba }; const a = t.rgba >> 24 & 255, h = t.rgba >> 16 & 255, c = t.rgba >> 8 & 255, l = e.rgba >> 24 & 255, d = e.rgba >> 16 & 255, _ = e.rgba >> 8 & 255; return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), { css: o.toCss(i, s, r), rgba: o.toRgba(i, s, r) } }, e.isOpaque = function (e) { return !(255 & ~e.rgba) }, e.ensureContrastRatio = function (e, t, i) { const s = l.ensureContrastRatio(e.rgba, t.rgba, i); if (s) return o.toColor(s >> 24 & 255, s >> 16 & 255, s >> 8 & 255) }, e.opaque = function (e) { const t = (255 | e.rgba) >>> 0; return [i, s, r] = l.toChannels(t), { css: o.toCss(i, s, r), rgba: t } }, e.opacity = t, e.multiplyOpacity = function (e, i) { return n = 255 & e.rgba, t(e, n * i / 255) }, e.toColorRGB = function (e) { return [e.rgba >> 24 & 255, e.rgba >> 16 & 255, e.rgba >> 8 & 255] } }(a || (t.color = a = {})), function (e) { let t, a; try { const e = document.createElement("canvas"); e.width = 1, e.height = 1; const i = e.getContext("2d", { willReadFrequently: !0 }); i && (t = i, t.globalCompositeOperation = "copy", a = t.createLinearGradient(0, 0, 1, 1)) } catch { } e.toColor = function (e) { if (e.match(/#[\da-f]{3,8}/i)) switch (e.length) { case 4: return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), o.toColor(i, s, r); case 5: return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), n = parseInt(e.slice(4, 5).repeat(2), 16), o.toColor(i, s, r, n); case 7: return { css: e, rgba: (parseInt(e.slice(1), 16) << 8 | 255) >>> 0 }; case 9: return { css: e, rgba: parseInt(e.slice(1), 16) >>> 0 } }const h = e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/); if (h) return i = parseInt(h[1]), s = parseInt(h[2]), r = parseInt(h[3]), n = Math.round(255 * (void 0 === h[5] ? 1 : parseFloat(h[5]))), o.toColor(i, s, r, n); if (!t || !a) throw new Error("css.toColor: Unsupported css format"); if (t.fillStyle = a, t.fillStyle = e, "string" != typeof t.fillStyle) throw new Error("css.toColor: Unsupported css format"); if (t.fillRect(0, 0, 1, 1), [i, s, r, n] = t.getImageData(0, 0, 1, 1).data, 255 !== n) throw new Error("css.toColor: Unsupported css format"); return { rgba: o.toRgba(i, s, r, n), css: e } } }(h || (t.css = h = {})), function (e) { function t(e, t, i) { const s = e / 255, r = t / 255, n = i / 255; return .2126 * (s <= .03928 ? s / 12.92 : Math.pow((s + .055) / 1.055, 2.4)) + .7152 * (r <= .03928 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4)) + .0722 * (n <= .03928 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4)) } e.relativeLuminance = function (e) { return t(e >> 16 & 255, e >> 8 & 255, 255 & e) }, e.relativeLuminance2 = t }(c || (t.rgb = c = {})), function (e) { function t(e, t, i) { const s = e >> 24 & 255, r = e >> 16 & 255, n = e >> 8 & 255; let o = t >> 24 & 255, a = t >> 16 & 255, h = t >> 8 & 255, l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); for (; l < i && (o > 0 || a > 0 || h > 0);)o -= Math.max(0, Math.ceil(.1 * o)), a -= Math.max(0, Math.ceil(.1 * a)), h -= Math.max(0, Math.ceil(.1 * h)), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); return (o << 24 | a << 16 | h << 8 | 255) >>> 0 } function a(e, t, i) { const s = e >> 24 & 255, r = e >> 16 & 255, n = e >> 8 & 255; let o = t >> 24 & 255, a = t >> 16 & 255, h = t >> 8 & 255, l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); for (; l < i && (o < 255 || a < 255 || h < 255);)o = Math.min(255, o + Math.ceil(.1 * (255 - o))), a = Math.min(255, a + Math.ceil(.1 * (255 - a))), h = Math.min(255, h + Math.ceil(.1 * (255 - h))), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); return (o << 24 | a << 16 | h << 8 | 255) >>> 0 } e.blend = function (e, t) { if (n = (255 & t) / 255, 1 === n) return t; const a = t >> 24 & 255, h = t >> 16 & 255, c = t >> 8 & 255, l = e >> 24 & 255, d = e >> 16 & 255, _ = e >> 8 & 255; return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), o.toRgba(i, s, r) }, e.ensureContrastRatio = function (e, i, s) { const r = c.relativeLuminance(e >> 8), n = c.relativeLuminance(i >> 8); if (_(r, n) < s) { if (n < r) { const n = t(e, i, s), o = _(r, c.relativeLuminance(n >> 8)); if (o < s) { const t = a(e, i, s); return o > _(r, c.relativeLuminance(t >> 8)) ? n : t } return n } const o = a(e, i, s), h = _(r, c.relativeLuminance(o >> 8)); if (h < s) { const n = t(e, i, s); return h > _(r, c.relativeLuminance(n >> 8)) ? o : n } return o } }, e.reduceLuminance = t, e.increaseLuminance = a, e.toChannels = function (e) { return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e] } }(l || (t.rgba = l = {})), t.toPaddedHex = d, t.contrastRatio = _ }, 345: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class { constructor() { this._listeners = [], this._disposed = !1 } get event() { return this._event || (this._event = e => (this._listeners.push(e), { dispose: () => { if (!this._disposed) for (let t = 0; t < this._listeners.length; t++)if (this._listeners[t] === e) return void this._listeners.splice(t, 1) } })), this._event } fire(e, t) { const i = []; for (let e = 0; e < this._listeners.length; e++)i.push(this._listeners[e]); for (let s = 0; s < i.length; s++)i[s].call(void 0, e, t) } dispose() { this.clearListeners(), this._disposed = !0 } clearListeners() { this._listeners && (this._listeners.length = 0) } }, t.forwardEvent = function (e, t) { return e((e => t.fire(e))) }, t.runAndSubscribe = function (e, t) { return t(void 0), e((e => t(e))) } }, 859: (e, t) => { function i(e) { for (const t of e) t.dispose(); e.length = 0 } Object.defineProperty(t, "__esModule", { value: !0 }), t.getDisposeArrayDisposable = t.disposeArray = t.toDisposable = t.MutableDisposable = t.Disposable = void 0, t.Disposable = class { constructor() { this._disposables = [], this._isDisposed = !1 } dispose() { this._isDisposed = !0; for (const e of this._disposables) e.dispose(); this._disposables.length = 0 } register(e) { return this._disposables.push(e), e } unregister(e) { const t = this._disposables.indexOf(e); -1 !== t && this._disposables.splice(t, 1) } }, t.MutableDisposable = class { constructor() { this._isDisposed = !1 } get value() { return this._isDisposed ? void 0 : this._value } set value(e) { this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e) } clear() { this.value = void 0 } dispose() { this._isDisposed = !0, this._value?.dispose(), this._value = void 0 } }, t.toDisposable = function (e) { return { dispose: e } }, t.disposeArray = i, t.getDisposeArrayDisposable = function (e) { return { dispose: () => i(e) } } }, 485: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.FourKeyMap = t.TwoKeyMap = void 0; class i { constructor() { this._data = {} } set(e, t, i) { this._data[e] || (this._data[e] = {}), this._data[e][t] = i } get(e, t) { return this._data[e] ? this._data[e][t] : void 0 } clear() { this._data = {} } } t.TwoKeyMap = i, t.FourKeyMap = class { constructor() { this._data = new i } set(e, t, s, r, n) { this._data.get(e, t) || this._data.set(e, t, new i), this._data.get(e, t).set(s, r, n) } get(e, t, i, s) { return this._data.get(e, t)?.get(i, s) } clear() { this._data.clear() } } }, 399: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.isChromeOS = t.isLinux = t.isWindows = t.isIphone = t.isIpad = t.isMac = t.getSafariVersion = t.isSafari = t.isLegacyEdge = t.isFirefox = t.isNode = void 0, t.isNode = "undefined" != typeof process && "title" in process; const i = t.isNode ? "node" : navigator.userAgent, s = t.isNode ? "node" : navigator.platform; t.isFirefox = i.includes("Firefox"), t.isLegacyEdge = i.includes("Edge"), t.isSafari = /^((?!chrome|android).)*safari/i.test(i), t.getSafariVersion = function () { if (!t.isSafari) return 0; const e = i.match(/Version\/(\d+)/); return null === e || e.length < 2 ? 0 : parseInt(e[1]) }, t.isMac = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(s), t.isIpad = "iPad" === s, t.isIphone = "iPhone" === s, t.isWindows = ["Windows", "Win16", "Win32", "WinCE"].includes(s), t.isLinux = s.indexOf("Linux") >= 0, t.isChromeOS = /\bCrOS\b/.test(i) }, 385: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.DebouncedIdleTask = t.IdleTaskQueue = t.PriorityTaskQueue = void 0; const s = i(399); class r { constructor() { this._tasks = [], this._i = 0 } enqueue(e) { this._tasks.push(e), this._start() } flush() { for (; this._i < this._tasks.length;)this._tasks[this._i]() || this._i++; this.clear() } clear() { this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0 } _start() { this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this))) } _process(e) { this._idleCallback = void 0; let t = 0, i = 0, s = e.timeRemaining(), r = 0; for (; this._i < this._tasks.length;) { if (t = Date.now(), this._tasks[this._i]() || this._i++, t = Math.max(1, Date.now() - t), i = Math.max(t, i), r = e.timeRemaining(), 1.5 * i > r) return s - t < -20 && console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s - t))}ms`), void this._start(); s = r } this.clear() } } class n extends r { _requestCallback(e) { return setTimeout((() => e(this._createDeadline(16)))) } _cancelCallback(e) { clearTimeout(e) } _createDeadline(e) { const t = Date.now() + e; return { timeRemaining: () => Math.max(0, t - Date.now()) } } } t.PriorityTaskQueue = n, t.IdleTaskQueue = !s.isNode && "requestIdleCallback" in window ? class extends r { _requestCallback(e) { return requestIdleCallback(e) } _cancelCallback(e) { cancelIdleCallback(e) } } : n, t.DebouncedIdleTask = class { constructor() { this._queue = new t.IdleTaskQueue } set(e) { this._queue.clear(), this._queue.enqueue(e) } flush() { this._queue.flush() } } }, 147: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.ExtendedAttrs = t.AttributeData = void 0; class i { constructor() { this.fg = 0, this.bg = 0, this.extended = new s } static toColorRGB(e) { return [e >>> 16 & 255, e >>> 8 & 255, 255 & e] } static fromColorRGB(e) { return (255 & e[0]) << 16 | (255 & e[1]) << 8 | 255 & e[2] } clone() { const e = new i; return e.fg = this.fg, e.bg = this.bg, e.extended = this.extended.clone(), e } isInverse() { return 67108864 & this.fg } isBold() { return 134217728 & this.fg } isUnderline() { return this.hasExtendedAttrs() && 0 !== this.extended.underlineStyle ? 1 : 268435456 & this.fg } isBlink() { return 536870912 & this.fg } isInvisible() { return 1073741824 & this.fg } isItalic() { return 67108864 & this.bg } isDim() { return 134217728 & this.bg } isStrikethrough() { return 2147483648 & this.fg } isProtected() { return 536870912 & this.bg } isOverline() { return 1073741824 & this.bg } getFgColorMode() { return 50331648 & this.fg } getBgColorMode() { return 50331648 & this.bg } isFgRGB() { return !(50331648 & ~this.fg) } isBgRGB() { return !(50331648 & ~this.bg) } isFgPalette() { return 16777216 == (50331648 & this.fg) || 33554432 == (50331648 & this.fg) } isBgPalette() { return 16777216 == (50331648 & this.bg) || 33554432 == (50331648 & this.bg) } isFgDefault() { return !(50331648 & this.fg) } isBgDefault() { return !(50331648 & this.bg) } isAttributeDefault() { return 0 === this.fg && 0 === this.bg } getFgColor() { switch (50331648 & this.fg) { case 16777216: case 33554432: return 255 & this.fg; case 50331648: return 16777215 & this.fg; default: return -1 } } getBgColor() { switch (50331648 & this.bg) { case 16777216: case 33554432: return 255 & this.bg; case 50331648: return 16777215 & this.bg; default: return -1 } } hasExtendedAttrs() { return 268435456 & this.bg } updateExtended() { this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456 } getUnderlineColor() { if (268435456 & this.bg && ~this.extended.underlineColor) switch (50331648 & this.extended.underlineColor) { case 16777216: case 33554432: return 255 & this.extended.underlineColor; case 50331648: return 16777215 & this.extended.underlineColor; default: return this.getFgColor() }return this.getFgColor() } getUnderlineColorMode() { return 268435456 & this.bg && ~this.extended.underlineColor ? 50331648 & this.extended.underlineColor : this.getFgColorMode() } isUnderlineColorRGB() { return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & ~this.extended.underlineColor) : this.isFgRGB() } isUnderlineColorPalette() { return 268435456 & this.bg && ~this.extended.underlineColor ? 16777216 == (50331648 & this.extended.underlineColor) || 33554432 == (50331648 & this.extended.underlineColor) : this.isFgPalette() } isUnderlineColorDefault() { return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & this.extended.underlineColor) : this.isFgDefault() } getUnderlineStyle() { return 268435456 & this.fg ? 268435456 & this.bg ? this.extended.underlineStyle : 1 : 0 } getUnderlineVariantOffset() { return this.extended.underlineVariantOffset } } t.AttributeData = i; class s { get ext() { return this._urlId ? -469762049 & this._ext | this.underlineStyle << 26 : this._ext } set ext(e) { this._ext = e } get underlineStyle() { return this._urlId ? 5 : (469762048 & this._ext) >> 26 } set underlineStyle(e) { this._ext &= -469762049, this._ext |= e << 26 & 469762048 } get underlineColor() { return 67108863 & this._ext } set underlineColor(e) { this._ext &= -67108864, this._ext |= 67108863 & e } get urlId() { return this._urlId } set urlId(e) { this._urlId = e } get underlineVariantOffset() { const e = (3758096384 & this._ext) >> 29; return e < 0 ? 4294967288 ^ e : e } set underlineVariantOffset(e) { this._ext &= 536870911, this._ext |= e << 29 & 3758096384 } constructor(e = 0, t = 0) { this._ext = 0, this._urlId = 0, this._ext = e, this._urlId = t } clone() { return new s(this._ext, this._urlId) } isEmpty() { return 0 === this.underlineStyle && 0 === this._urlId } } t.ExtendedAttrs = s }, 782: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CellData = void 0; const s = i(133), r = i(855), n = i(147); class o extends n.AttributeData { constructor() { super(...arguments), this.content = 0, this.fg = 0, this.bg = 0, this.extended = new n.ExtendedAttrs, this.combinedData = "" } static fromCharData(e) { const t = new o; return t.setFromCharData(e), t } isCombined() { return 2097152 & this.content } getWidth() { return this.content >> 22 } getChars() { return 2097152 & this.content ? this.combinedData : 2097151 & this.content ? (0, s.stringFromCodePoint)(2097151 & this.content) : "" } getCode() { return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : 2097151 & this.content } setFromCharData(e) { this.fg = e[r.CHAR_DATA_ATTR_INDEX], this.bg = 0; let t = !1; if (e[r.CHAR_DATA_CHAR_INDEX].length > 2) t = !0; else if (2 === e[r.CHAR_DATA_CHAR_INDEX].length) { const i = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0); if (55296 <= i && i <= 56319) { const s = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1); 56320 <= s && s <= 57343 ? this.content = 1024 * (i - 55296) + s - 56320 + 65536 | e[r.CHAR_DATA_WIDTH_INDEX] << 22 : t = !0 } else t = !0 } else this.content = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | e[r.CHAR_DATA_WIDTH_INDEX] << 22; t && (this.combinedData = e[r.CHAR_DATA_CHAR_INDEX], this.content = 2097152 | e[r.CHAR_DATA_WIDTH_INDEX] << 22) } getAsCharData() { return [this.fg, this.getChars(), this.getWidth(), this.getCode()] } } t.CellData = o }, 855: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.WHITESPACE_CELL_CODE = t.WHITESPACE_CELL_WIDTH = t.WHITESPACE_CELL_CHAR = t.NULL_CELL_CODE = t.NULL_CELL_WIDTH = t.NULL_CELL_CHAR = t.CHAR_DATA_CODE_INDEX = t.CHAR_DATA_WIDTH_INDEX = t.CHAR_DATA_CHAR_INDEX = t.CHAR_DATA_ATTR_INDEX = t.DEFAULT_EXT = t.DEFAULT_ATTR = t.DEFAULT_COLOR = void 0, t.DEFAULT_COLOR = 0, t.DEFAULT_ATTR = 256 | t.DEFAULT_COLOR << 9, t.DEFAULT_EXT = 0, t.CHAR_DATA_ATTR_INDEX = 0, t.CHAR_DATA_CHAR_INDEX = 1, t.CHAR_DATA_WIDTH_INDEX = 2, t.CHAR_DATA_CODE_INDEX = 3, t.NULL_CELL_CHAR = "", t.NULL_CELL_WIDTH = 1, t.NULL_CELL_CODE = 0, t.WHITESPACE_CELL_CHAR = " ", t.WHITESPACE_CELL_WIDTH = 1, t.WHITESPACE_CELL_CODE = 32 }, 133: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.Utf8ToUtf32 = t.StringToUtf32 = t.utf32ToString = t.stringFromCodePoint = void 0, t.stringFromCodePoint = function (e) { return e > 65535 ? (e -= 65536, String.fromCharCode(55296 + (e >> 10)) + String.fromCharCode(e % 1024 + 56320)) : String.fromCharCode(e) }, t.utf32ToString = function (e, t = 0, i = e.length) { let s = ""; for (let r = t; r < i; ++r) { let t = e[r]; t > 65535 ? (t -= 65536, s += String.fromCharCode(55296 + (t >> 10)) + String.fromCharCode(t % 1024 + 56320)) : s += String.fromCharCode(t) } return s }, t.StringToUtf32 = class { constructor() { this._interim = 0 } clear() { this._interim = 0 } decode(e, t) { const i = e.length; if (!i) return 0; let s = 0, r = 0; if (this._interim) { const i = e.charCodeAt(r++); 56320 <= i && i <= 57343 ? t[s++] = 1024 * (this._interim - 55296) + i - 56320 + 65536 : (t[s++] = this._interim, t[s++] = i), this._interim = 0 } for (let n = r; n < i; ++n) { const r = e.charCodeAt(n); if (55296 <= r && r <= 56319) { if (++n >= i) return this._interim = r, s; const o = e.charCodeAt(n); 56320 <= o && o <= 57343 ? t[s++] = 1024 * (r - 55296) + o - 56320 + 65536 : (t[s++] = r, t[s++] = o) } else 65279 !== r && (t[s++] = r) } return s } }, t.Utf8ToUtf32 = class { constructor() { this.interim = new Uint8Array(3) } clear() { this.interim.fill(0) } decode(e, t) { const i = e.length; if (!i) return 0; let s, r, n, o, a = 0, h = 0, c = 0; if (this.interim[0]) { let s = !1, r = this.interim[0]; r &= 192 == (224 & r) ? 31 : 224 == (240 & r) ? 15 : 7; let n, o = 0; for (; (n = 63 & this.interim[++o]) && o < 4;)r <<= 6, r |= n; const h = 192 == (224 & this.interim[0]) ? 2 : 224 == (240 & this.interim[0]) ? 3 : 4, l = h - o; for (; c < l;) { if (c >= i) return 0; if (n = e[c++], 128 != (192 & n)) { c--, s = !0; break } this.interim[o++] = n, r <<= 6, r |= 63 & n } s || (2 === h ? r < 128 ? c-- : t[a++] = r : 3 === h ? r < 2048 || r >= 55296 && r <= 57343 || 65279 === r || (t[a++] = r) : r < 65536 || r > 1114111 || (t[a++] = r)), this.interim.fill(0) } const l = i - 4; let d = c; for (; d < i;) { for (; !(!(d < l) || 128 & (s = e[d]) || 128 & (r = e[d + 1]) || 128 & (n = e[d + 2]) || 128 & (o = e[d + 3]));)t[a++] = s, t[a++] = r, t[a++] = n, t[a++] = o, d += 4; if (s = e[d++], s < 128) t[a++] = s; else if (192 == (224 & s)) { if (d >= i) return this.interim[0] = s, a; if (r = e[d++], 128 != (192 & r)) { d--; continue } if (h = (31 & s) << 6 | 63 & r, h < 128) { d--; continue } t[a++] = h } else if (224 == (240 & s)) { if (d >= i) return this.interim[0] = s, a; if (r = e[d++], 128 != (192 & r)) { d--; continue } if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; if (n = e[d++], 128 != (192 & n)) { d--; continue } if (h = (15 & s) << 12 | (63 & r) << 6 | 63 & n, h < 2048 || h >= 55296 && h <= 57343 || 65279 === h) continue; t[a++] = h } else if (240 == (248 & s)) { if (d >= i) return this.interim[0] = s, a; if (r = e[d++], 128 != (192 & r)) { d--; continue } if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; if (n = e[d++], 128 != (192 & n)) { d--; continue } if (d >= i) return this.interim[0] = s, this.interim[1] = r, this.interim[2] = n, a; if (o = e[d++], 128 != (192 & o)) { d--; continue } if (h = (7 & s) << 18 | (63 & r) << 12 | (63 & n) << 6 | 63 & o, h < 65536 || h > 1114111) continue; t[a++] = h } } return a } } }, 776: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.traceCall = t.setTraceLogger = t.LogService = void 0; const n = i(859), o = i(97), a = { trace: o.LogLevelEnum.TRACE, debug: o.LogLevelEnum.DEBUG, info: o.LogLevelEnum.INFO, warn: o.LogLevelEnum.WARN, error: o.LogLevelEnum.ERROR, off: o.LogLevelEnum.OFF }; let h, c = t.LogService = class extends n.Disposable { get logLevel() { return this._logLevel } constructor(e) { super(), this._optionsService = e, this._logLevel = o.LogLevelEnum.OFF, this._updateLogLevel(), this.register(this._optionsService.onSpecificOptionChange("logLevel", (() => this._updateLogLevel()))), h = this } _updateLogLevel() { this._logLevel = a[this._optionsService.rawOptions.logLevel] } _evalLazyOptionalParams(e) { for (let t = 0; t < e.length; t++)"function" == typeof e[t] && (e[t] = e[t]()) } _log(e, t, i) { this._evalLazyOptionalParams(i), e.call(console, (this._optionsService.options.logger ? "" : "xterm.js: ") + t, ...i) } trace(e, ...t) { this._logLevel <= o.LogLevelEnum.TRACE && this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger) ?? console.log, e, t) } debug(e, ...t) { this._logLevel <= o.LogLevelEnum.DEBUG && this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger) ?? console.log, e, t) } info(e, ...t) { this._logLevel <= o.LogLevelEnum.INFO && this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger) ?? console.info, e, t) } warn(e, ...t) { this._logLevel <= o.LogLevelEnum.WARN && this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger) ?? console.warn, e, t) } error(e, ...t) { this._logLevel <= o.LogLevelEnum.ERROR && this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger) ?? console.error, e, t) } }; t.LogService = c = s([r(0, o.IOptionsService)], c), t.setTraceLogger = function (e) { h = e }, t.traceCall = function (e, t, i) { if ("function" != typeof i.value) throw new Error("not supported"); const s = i.value; i.value = function (...e) { if (h.logLevel !== o.LogLevelEnum.TRACE) return s.apply(this, e); h.trace(`GlyphRenderer#${s.name}(${e.map((e => JSON.stringify(e))).join(", ")})`); const t = s.apply(this, e); return h.trace(`GlyphRenderer#${s.name} return`, t), t } } }, 726: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.createDecorator = t.getServiceDependencies = t.serviceRegistry = void 0; const i = "di$target", s = "di$dependencies"; t.serviceRegistry = new Map, t.getServiceDependencies = function (e) { return e[s] || [] }, t.createDecorator = function (e) { if (t.serviceRegistry.has(e)) return t.serviceRegistry.get(e); const r = function (e, t, n) { if (3 !== arguments.length) throw new Error("@IServiceName-decorator can only be used to decorate a parameter"); !function (e, t, r) { t[i] === t ? t[s].push({ id: e, index: r }) : (t[s] = [{ id: e, index: r }], t[i] = t) }(r, e, n) }; return r.toString = () => e, t.serviceRegistry.set(e, r), r } }, 97: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.IDecorationService = t.IUnicodeService = t.IOscLinkService = t.IOptionsService = t.ILogService = t.LogLevelEnum = t.IInstantiationService = t.ICharsetService = t.ICoreService = t.ICoreMouseService = t.IBufferService = void 0; const s = i(726); var r; t.IBufferService = (0, s.createDecorator)("BufferService"), t.ICoreMouseService = (0, s.createDecorator)("CoreMouseService"), t.ICoreService = (0, s.createDecorator)("CoreService"), t.ICharsetService = (0, s.createDecorator)("CharsetService"), t.IInstantiationService = (0, s.createDecorator)("InstantiationService"), function (e) { e[e.TRACE = 0] = "TRACE", e[e.DEBUG = 1] = "DEBUG", e[e.INFO = 2] = "INFO", e[e.WARN = 3] = "WARN", e[e.ERROR = 4] = "ERROR", e[e.OFF = 5] = "OFF" }(r || (t.LogLevelEnum = r = {})), t.ILogService = (0, s.createDecorator)("LogService"), t.IOptionsService = (0, s.createDecorator)("OptionsService"), t.IOscLinkService = (0, s.createDecorator)("OscLinkService"), t.IUnicodeService = (0, s.createDecorator)("UnicodeService"), t.IDecorationService = (0, s.createDecorator)("DecorationService") } }, t = {}; function i(s) { var r = t[s]; if (void 0 !== r) return r.exports; var n = t[s] = { exports: {} }; return e[s].call(n.exports, n, n.exports, i), n.exports } var s = {}; return (() => { var e = s; Object.defineProperty(e, "__esModule", { value: !0 }), e.WebglAddon = void 0; const t = i(345), r = i(859), n = i(399), o = i(666), a = i(776); class h extends r.Disposable { constructor(e) { if (n.isSafari && (0, n.getSafariVersion)() < 16) { const e = { antialias: !1, depth: !1, preserveDrawingBuffer: !0 }; if (!document.createElement("canvas").getContext("webgl2", e)) throw new Error("Webgl2 is only supported on Safari 16 and above") } super(), this._preserveDrawingBuffer = e, this._onChangeTextureAtlas = this.register(new t.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new t.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = this.register(new t.EventEmitter), this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._onContextLoss = this.register(new t.EventEmitter), this.onContextLoss = this._onContextLoss.event } activate(e) { const i = e._core; if (!e.element) return void this.register(i.onWillOpen((() => this.activate(e)))); this._terminal = e; const s = i.coreService, n = i.optionsService, h = i, c = h._renderService, l = h._characterJoinerService, d = h._charSizeService, _ = h._coreBrowserService, u = h._decorationService, f = h._logService, v = h._themeService; (0, a.setTraceLogger)(f), this._renderer = this.register(new o.WebglRenderer(e, l, d, _, s, u, n, v, this._preserveDrawingBuffer)), this.register((0, t.forwardEvent)(this._renderer.onContextLoss, this._onContextLoss)), this.register((0, t.forwardEvent)(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)), this.register((0, t.forwardEvent)(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)), this.register((0, t.forwardEvent)(this._renderer.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas)), c.setRenderer(this._renderer), this.register((0, r.toDisposable)((() => { const t = this._terminal._core._renderService; t.setRenderer(this._terminal._core._createRenderer()), t.handleResize(e.cols, e.rows) }))) } get textureAtlas() { return this._renderer?.textureAtlas } clearTextureAtlas() { this._renderer?.clearTextureAtlas() } } e.WebglAddon = h })(), s })(), e.exports = t() }, 314: e => { "use strict"; e.exports = function (e) { var t = []; return t.toString = function () { return this.map((function (t) { var i = "", s = void 0 !== t[5]; return t[4] && (i += "@supports (".concat(t[4], ") {")), t[2] && (i += "@media ".concat(t[2], " {")), s && (i += "@layer".concat(t[5].length > 0 ? " ".concat(t[5]) : "", " {")), i += e(t), s && (i += "}"), t[2] && (i += "}"), t[4] && (i += "}"), i })).join("") }, t.i = function (e, i, s, r, n) { "string" == typeof e && (e = [[null, e, void 0]]); var o = {}; if (s) for (var a = 0; a < this.length; a++) { var h = this[a][0]; null != h && (o[h] = !0) } for (var c = 0; c < e.length; c++) { var l = [].concat(e[c]); s && o[l[0]] || (void 0 !== n && (void 0 === l[5] || (l[1] = "@layer".concat(l[5].length > 0 ? " ".concat(l[5]) : "", " {").concat(l[1], "}")), l[5] = n), i && (l[2] ? (l[1] = "@media ".concat(l[2], " {").concat(l[1], "}"), l[2] = i) : l[2] = i), r && (l[4] ? (l[1] = "@supports (".concat(l[4], ") {").concat(l[1], "}"), l[4] = r) : l[4] = "".concat(r)), t.push(l)) } }, t } }, 372: e => { var t; self, t = () => (() => { var e = { 575: function (e, t, i) { "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== i.g && i.g, e.exports = function () { "use strict"; var e, t = "3.7.7", i = t, s = "function" == typeof Buffer, r = "function" == typeof TextDecoder ? new TextDecoder : void 0, n = "function" == typeof TextEncoder ? new TextEncoder : void 0, o = Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="), a = (e = {}, o.forEach((function (t, i) { return e[t] = i })), e), h = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/, c = String.fromCharCode.bind(String), l = "function" == typeof Uint8Array.from ? Uint8Array.from.bind(Uint8Array) : function (e) { return new Uint8Array(Array.prototype.slice.call(e, 0)) }, d = function (e) { return e.replace(/=/g, "").replace(/[+\/]/g, (function (e) { return "+" == e ? "-" : "_" })) }, _ = function (e) { return e.replace(/[^A-Za-z0-9\+\/]/g, "") }, u = function (e) { for (var t, i, s, r, n = "", a = e.length % 3, h = 0; h < e.length;) { if ((i = e.charCodeAt(h++)) > 255 || (s = e.charCodeAt(h++)) > 255 || (r = e.charCodeAt(h++)) > 255) throw new TypeError("invalid character found"); n += o[(t = i << 16 | s << 8 | r) >> 18 & 63] + o[t >> 12 & 63] + o[t >> 6 & 63] + o[63 & t] } return a ? n.slice(0, a - 3) + "===".substring(a) : n }, f = "function" == typeof btoa ? function (e) { return btoa(e) } : s ? function (e) { return Buffer.from(e, "binary").toString("base64") } : u, v = s ? function (e) { return Buffer.from(e).toString("base64") } : function (e) { for (var t = [], i = 0, s = e.length; i < s; i += 4096)t.push(c.apply(null, e.subarray(i, i + 4096))); return f(t.join("")) }, g = function (e, t) { return void 0 === t && (t = !1), t ? d(v(e)) : v(e) }, p = function (e) { if (e.length < 2) return (t = e.charCodeAt(0)) < 128 ? e : t < 2048 ? c(192 | t >>> 6) + c(128 | 63 & t) : c(224 | t >>> 12 & 15) + c(128 | t >>> 6 & 63) + c(128 | 63 & t); var t = 65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320); return c(240 | t >>> 18 & 7) + c(128 | t >>> 12 & 63) + c(128 | t >>> 6 & 63) + c(128 | 63 & t) }, m = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g, C = function (e) { return e.replace(m, p) }, S = s ? function (e) { return Buffer.from(e, "utf8").toString("base64") } : n ? function (e) { return v(n.encode(e)) } : function (e) { return f(C(e)) }, b = function (e, t) { return void 0 === t && (t = !1), t ? d(S(e)) : S(e) }, w = function (e) { return b(e, !0) }, y = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g, L = function (e) { switch (e.length) { case 4: var t = ((7 & e.charCodeAt(0)) << 18 | (63 & e.charCodeAt(1)) << 12 | (63 & e.charCodeAt(2)) << 6 | 63 & e.charCodeAt(3)) - 65536; return c(55296 + (t >>> 10)) + c(56320 + (1023 & t)); case 3: return c((15 & e.charCodeAt(0)) << 12 | (63 & e.charCodeAt(1)) << 6 | 63 & e.charCodeAt(2)); default: return c((31 & e.charCodeAt(0)) << 6 | 63 & e.charCodeAt(1)) } }, x = function (e) { return e.replace(y, L) }, E = function (e) { if (e = e.replace(/\s+/g, ""), !h.test(e)) throw new TypeError("malformed base64."); e += "==".slice(2 - (3 & e.length)); for (var t, i, s, r = "", n = 0; n < e.length;)t = a[e.charAt(n++)] << 18 | a[e.charAt(n++)] << 12 | (i = a[e.charAt(n++)]) << 6 | (s = a[e.charAt(n++)]), r += 64 === i ? c(t >> 16 & 255) : 64 === s ? c(t >> 16 & 255, t >> 8 & 255) : c(t >> 16 & 255, t >> 8 & 255, 255 & t); return r }, R = "function" == typeof atob ? function (e) { return atob(_(e)) } : s ? function (e) { return Buffer.from(e, "base64").toString("binary") } : E, M = s ? function (e) { return l(Buffer.from(e, "base64")) } : function (e) { return l(R(e).split("").map((function (e) { return e.charCodeAt(0) }))) }, A = function (e) { return M(k(e)) }, D = s ? function (e) { return Buffer.from(e, "base64").toString("utf8") } : r ? function (e) { return r.decode(M(e)) } : function (e) { return x(R(e)) }, k = function (e) { return _(e.replace(/[-_]/g, (function (e) { return "-" == e ? "+" : "/" }))) }, T = function (e) { return D(k(e)) }, B = function (e) { return { value: e, enumerable: !1, writable: !0, configurable: !0 } }, O = function () { var e = function (e, t) { return Object.defineProperty(String.prototype, e, B(t)) }; e("fromBase64", (function () { return T(this) })), e("toBase64", (function (e) { return b(this, e) })), e("toBase64URI", (function () { return b(this, !0) })), e("toBase64URL", (function () { return b(this, !0) })), e("toUint8Array", (function () { return A(this) })) }, P = function () { var e = function (e, t) { return Object.defineProperty(Uint8Array.prototype, e, B(t)) }; e("toBase64", (function (e) { return g(this, e) })), e("toBase64URI", (function () { return g(this, !0) })), e("toBase64URL", (function () { return g(this, !0) })) }, I = { version: t, VERSION: i, atob: R, atobPolyfill: E, btoa: f, btoaPolyfill: u, fromBase64: T, toBase64: b, encode: b, encodeURI: w, encodeURL: w, utob: C, btou: x, decode: T, isValid: function (e) { if ("string" != typeof e) return !1; var t = e.replace(/\s+/g, "").replace(/={0,2}$/, ""); return !/[^\s0-9a-zA-Z\+/]/.test(t) || !/[^\s0-9a-zA-Z\-_]/.test(t) }, fromUint8Array: g, toUint8Array: A, extendString: O, extendUint8Array: P, extendBuiltins: function () { O(), P() }, Base64: {} }; return Object.keys(I).forEach((function (e) { return I.Base64[e] = I[e] })), I }() } }, t = {}; function i(s) { var r = t[s]; if (void 0 !== r) return r.exports; var n = t[s] = { exports: {} }; return e[s].call(n.exports, n, n.exports, i), n.exports } i.g = function () { if ("object" == typeof globalThis) return globalThis; try { return this || new Function("return this")() } catch (e) { if ("object" == typeof window) return window } }(); var s = {}; return (() => { "use strict"; var e = s; Object.defineProperty(e, "__esModule", { value: !0 }), e.Base64 = e.BrowserClipboardProvider = e.ClipboardAddon = void 0; const t = i(575); e.ClipboardAddon = class { constructor(e = new n, t = new r) { this._base64 = e, this._provider = t } activate(e) { this._terminal = e, this._disposable = e.parser.registerOscHandler(52, (e => this._setOrReportClipboard(e))) } dispose() { return this._disposable?.dispose() } _readText(e, t) { const i = this._base64.encodeText(t); this._terminal?.input(`]52;${e};${i}`, !1) } _setOrReportClipboard(e) { const t = e.split(";"); if (t.length < 2) return !0; const i = t[0], s = t[1]; if ("?" === s) { const e = this._provider.readText(i); return e instanceof Promise ? e.then((e => (this._readText(i, e), !0))) : (this._readText(i, e), !0) } let r = ""; try { r = this._base64.decodeText(s) } catch { } const n = this._provider.writeText(i, r); return !(n instanceof Promise) || n.then((() => !0)) } }; class r { async readText(e) { return "c" !== e ? Promise.resolve("") : navigator.clipboard.readText() } async writeText(e, t) { return "c" !== e ? Promise.resolve() : navigator.clipboard.writeText(t) } } e.BrowserClipboardProvider = r; class n { encodeText(e) { return t.Base64.encode(e) } decodeText(e) { const i = t.Base64.decode(e); return t.Base64.isValid(e) && t.Base64.encode(i) === e ? i : "" } } e.Base64 = n })(), s })(), e.exports = t() }, 540: e => { "use strict"; e.exports = function (e) { var t = document.createElement("style"); return e.setAttributes(t, e.attributes), e.insert(t, e.options), t } }, 544: function (e) { var t; t = () => (() => { "use strict"; var e = { 433: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.UnicodeV11 = void 0; const s = i(938), r = [[768, 879], [1155, 1161], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1536, 1541], [1552, 1562], [1564, 1564], [1611, 1631], [1648, 1648], [1750, 1757], [1759, 1764], [1767, 1768], [1770, 1773], [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2035], [2045, 2045], [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2093], [2137, 2139], [2259, 2306], [2362, 2362], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2391], [2402, 2403], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2558, 2558], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2641, 2641], [2672, 2673], [2677, 2677], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2810, 2815], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2884], [2893, 2893], [2902, 2902], [2914, 2915], [2946, 2946], [3008, 3008], [3021, 3021], [3072, 3072], [3076, 3076], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3170, 3171], [3201, 3201], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3328, 3329], [3387, 3388], [3393, 3396], [3405, 3405], [3426, 3427], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3655, 3662], [3761, 3761], [3764, 3772], [3784, 3789], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3981, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4151], [4153, 4154], [4157, 4158], [4184, 4185], [4190, 4192], [4209, 4212], [4226, 4226], [4229, 4230], [4237, 4237], [4253, 4253], [4448, 4607], [4957, 4959], [5906, 5908], [5938, 5940], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6109, 6109], [6155, 6158], [6277, 6278], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6683, 6683], [6742, 6742], [6744, 6750], [6752, 6752], [6754, 6754], [6757, 6764], [6771, 6780], [6783, 6783], [6832, 6846], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7040, 7041], [7074, 7077], [7080, 7081], [7083, 7085], [7142, 7142], [7144, 7145], [7149, 7149], [7151, 7153], [7212, 7219], [7222, 7223], [7376, 7378], [7380, 7392], [7394, 7400], [7405, 7405], [7412, 7412], [7416, 7417], [7616, 7673], [7675, 7679], [8203, 8207], [8234, 8238], [8288, 8292], [8294, 8303], [8400, 8432], [11503, 11505], [11647, 11647], [11744, 11775], [12330, 12333], [12441, 12442], [42607, 42610], [42612, 42621], [42654, 42655], [42736, 42737], [43010, 43010], [43014, 43014], [43019, 43019], [43045, 43046], [43204, 43205], [43232, 43249], [43263, 43263], [43302, 43309], [43335, 43345], [43392, 43394], [43443, 43443], [43446, 43449], [43452, 43453], [43493, 43493], [43561, 43566], [43569, 43570], [43573, 43574], [43587, 43587], [43596, 43596], [43644, 43644], [43696, 43696], [43698, 43700], [43703, 43704], [43710, 43711], [43713, 43713], [43756, 43757], [43766, 43766], [44005, 44005], [44008, 44008], [44013, 44013], [64286, 64286], [65024, 65039], [65056, 65071], [65279, 65279], [65529, 65531]], n = [[66045, 66045], [66272, 66272], [66422, 66426], [68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [68325, 68326], [68900, 68903], [69446, 69456], [69633, 69633], [69688, 69702], [69759, 69761], [69811, 69814], [69817, 69818], [69821, 69821], [69837, 69837], [69888, 69890], [69927, 69931], [69933, 69940], [70003, 70003], [70016, 70017], [70070, 70078], [70089, 70092], [70191, 70193], [70196, 70196], [70198, 70199], [70206, 70206], [70367, 70367], [70371, 70378], [70400, 70401], [70459, 70460], [70464, 70464], [70502, 70508], [70512, 70516], [70712, 70719], [70722, 70724], [70726, 70726], [70750, 70750], [70835, 70840], [70842, 70842], [70847, 70848], [70850, 70851], [71090, 71093], [71100, 71101], [71103, 71104], [71132, 71133], [71219, 71226], [71229, 71229], [71231, 71232], [71339, 71339], [71341, 71341], [71344, 71349], [71351, 71351], [71453, 71455], [71458, 71461], [71463, 71467], [71727, 71735], [71737, 71738], [72148, 72151], [72154, 72155], [72160, 72160], [72193, 72202], [72243, 72248], [72251, 72254], [72263, 72263], [72273, 72278], [72281, 72283], [72330, 72342], [72344, 72345], [72752, 72758], [72760, 72765], [72767, 72767], [72850, 72871], [72874, 72880], [72882, 72883], [72885, 72886], [73009, 73014], [73018, 73018], [73020, 73021], [73023, 73029], [73031, 73031], [73104, 73105], [73109, 73109], [73111, 73111], [73459, 73460], [78896, 78904], [92912, 92916], [92976, 92982], [94031, 94031], [94095, 94098], [113821, 113822], [113824, 113827], [119143, 119145], [119155, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [121344, 121398], [121403, 121452], [121461, 121461], [121476, 121476], [121499, 121503], [121505, 121519], [122880, 122886], [122888, 122904], [122907, 122913], [122915, 122916], [122918, 122922], [123184, 123190], [123628, 123631], [125136, 125142], [125252, 125258], [917505, 917505], [917536, 917631], [917760, 917999]], o = [[4352, 4447], [8986, 8987], [9001, 9002], [9193, 9196], [9200, 9200], [9203, 9203], [9725, 9726], [9748, 9749], [9800, 9811], [9855, 9855], [9875, 9875], [9889, 9889], [9898, 9899], [9917, 9918], [9924, 9925], [9934, 9934], [9940, 9940], [9962, 9962], [9970, 9971], [9973, 9973], [9978, 9978], [9981, 9981], [9989, 9989], [9994, 9995], [10024, 10024], [10060, 10060], [10062, 10062], [10067, 10069], [10071, 10071], [10133, 10135], [10160, 10160], [10175, 10175], [11035, 11036], [11088, 11088], [11093, 11093], [11904, 11929], [11931, 12019], [12032, 12245], [12272, 12283], [12288, 12329], [12334, 12350], [12353, 12438], [12443, 12543], [12549, 12591], [12593, 12686], [12688, 12730], [12736, 12771], [12784, 12830], [12832, 12871], [12880, 19903], [19968, 42124], [42128, 42182], [43360, 43388], [44032, 55203], [63744, 64255], [65040, 65049], [65072, 65106], [65108, 65126], [65128, 65131], [65281, 65376], [65504, 65510]], a = [[94176, 94179], [94208, 100343], [100352, 101106], [110592, 110878], [110928, 110930], [110948, 110951], [110960, 111355], [126980, 126980], [127183, 127183], [127374, 127374], [127377, 127386], [127488, 127490], [127504, 127547], [127552, 127560], [127568, 127569], [127584, 127589], [127744, 127776], [127789, 127797], [127799, 127868], [127870, 127891], [127904, 127946], [127951, 127955], [127968, 127984], [127988, 127988], [127992, 128062], [128064, 128064], [128066, 128252], [128255, 128317], [128331, 128334], [128336, 128359], [128378, 128378], [128405, 128406], [128420, 128420], [128507, 128591], [128640, 128709], [128716, 128716], [128720, 128722], [128725, 128725], [128747, 128748], [128756, 128762], [128992, 129003], [129293, 129393], [129395, 129398], [129402, 129442], [129445, 129450], [129454, 129482], [129485, 129535], [129648, 129651], [129656, 129658], [129664, 129666], [129680, 129685], [131072, 196605], [196608, 262141]]; let h; function c(e, t) { let i, s = 0, r = t.length - 1; if (e < t[0][0] || e > t[r][1]) return !1; for (; r >= s;)if (i = s + r >> 1, e > t[i][1]) s = i + 1; else { if (!(e < t[i][0])) return !0; r = i - 1 } return !1 } t.UnicodeV11 = class { constructor() { if (this.version = "11", !h) { h = new Uint8Array(65536), h.fill(1), h[0] = 0, h.fill(0, 1, 32), h.fill(0, 127, 160); for (let e = 0; e < r.length; ++e)h.fill(0, r[e][0], r[e][1] + 1); for (let e = 0; e < o.length; ++e)h.fill(2, o[e][0], o[e][1] + 1) } } wcwidth(e) { return e < 32 ? 0 : e < 127 ? 1 : e < 65536 ? h[e] : c(e, n) ? 0 : c(e, a) ? 2 : 1 } charProperties(e, t) { let i = this.wcwidth(e), r = 0 === i && 0 !== t; if (r) { const e = s.UnicodeService.extractWidth(t); 0 === e ? r = !1 : e > i && (i = e) } return s.UnicodeService.createPropertyValue(0, i, r) } } }, 345: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class { constructor() { this._listeners = [], this._disposed = !1 } get event() { return this._event || (this._event = e => (this._listeners.push(e), { dispose: () => { if (!this._disposed) for (let t = 0; t < this._listeners.length; t++)if (this._listeners[t] === e) return void this._listeners.splice(t, 1) } })), this._event } fire(e, t) { const i = []; for (let e = 0; e < this._listeners.length; e++)i.push(this._listeners[e]); for (let s = 0; s < i.length; s++)i[s].call(void 0, e, t) } dispose() { this.clearListeners(), this._disposed = !0 } clearListeners() { this._listeners && (this._listeners.length = 0) } }, t.forwardEvent = function (e, t) { return e((e => t.fire(e))) }, t.runAndSubscribe = function (e, t) { return t(void 0), e((e => t(e))) } }, 490: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.UnicodeV6 = void 0; const s = i(938), r = [[768, 879], [1155, 1158], [1160, 1161], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1536, 1539], [1552, 1557], [1611, 1630], [1648, 1648], [1750, 1764], [1767, 1768], [1770, 1773], [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2035], [2305, 2306], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2388], [2402, 2403], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2672, 2673], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2883], [2893, 2893], [2902, 2902], [2946, 2946], [3008, 3008], [3021, 3021], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3393, 3395], [3405, 3405], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3655, 3662], [3761, 3761], [3764, 3769], [3771, 3772], [3784, 3789], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3984, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4146], [4150, 4151], [4153, 4153], [4184, 4185], [4448, 4607], [4959, 4959], [5906, 5908], [5938, 5940], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6109, 6109], [6155, 6157], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7616, 7626], [7678, 7679], [8203, 8207], [8234, 8238], [8288, 8291], [8298, 8303], [8400, 8431], [12330, 12335], [12441, 12442], [43014, 43014], [43019, 43019], [43045, 43046], [64286, 64286], [65024, 65039], [65056, 65059], [65279, 65279], [65529, 65531]], n = [[68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [119143, 119145], [119155, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [917505, 917505], [917536, 917631], [917760, 917999]]; let o; t.UnicodeV6 = class { constructor() { if (this.version = "6", !o) { o = new Uint8Array(65536), o.fill(1), o[0] = 0, o.fill(0, 1, 32), o.fill(0, 127, 160), o.fill(2, 4352, 4448), o[9001] = 2, o[9002] = 2, o.fill(2, 11904, 42192), o[12351] = 1, o.fill(2, 44032, 55204), o.fill(2, 63744, 64256), o.fill(2, 65040, 65050), o.fill(2, 65072, 65136), o.fill(2, 65280, 65377), o.fill(2, 65504, 65511); for (let e = 0; e < r.length; ++e)o.fill(0, r[e][0], r[e][1] + 1) } } wcwidth(e) { return e < 32 ? 0 : e < 127 ? 1 : e < 65536 ? o[e] : function (e, t) { let i, s = 0, r = t.length - 1; if (e < t[0][0] || e > t[r][1]) return !1; for (; r >= s;)if (i = s + r >> 1, e > t[i][1]) s = i + 1; else { if (!(e < t[i][0])) return !0; r = i - 1 } return !1 }(e, n) ? 0 : e >= 131072 && e <= 196605 || e >= 196608 && e <= 262141 ? 2 : 1 } charProperties(e, t) { let i = this.wcwidth(e), r = 0 === i && 0 !== t; if (r) { const e = s.UnicodeService.extractWidth(t); 0 === e ? r = !1 : e > i && (i = e) } return s.UnicodeService.createPropertyValue(0, i, r) } } }, 938: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.UnicodeService = void 0; const s = i(345), r = i(490); class n { static extractShouldJoin(e) { return !!(1 & e) } static extractWidth(e) { return e >> 1 & 3 } static extractCharKind(e) { return e >> 3 } static createPropertyValue(e, t, i = !1) { return (16777215 & e) << 3 | (3 & t) << 1 | (i ? 1 : 0) } constructor() { this._providers = Object.create(null), this._active = "", this._onChange = new s.EventEmitter, this.onChange = this._onChange.event; const e = new r.UnicodeV6; this.register(e), this._active = e.version, this._activeProvider = e } dispose() { this._onChange.dispose() } get versions() { return Object.keys(this._providers) } get activeVersion() { return this._active } set activeVersion(e) { if (!this._providers[e]) throw new Error(`unknown Unicode version "${e}"`); this._active = e, this._activeProvider = this._providers[e], this._onChange.fire(e) } register(e) { this._providers[e.version] = e } wcwidth(e) { return this._activeProvider.wcwidth(e) } getStringCellWidth(e) { let t = 0, i = 0; const s = e.length; for (let r = 0; r < s; ++r) { let o = e.charCodeAt(r); if (55296 <= o && o <= 56319) { if (++r >= s) return t + this.wcwidth(o); const i = e.charCodeAt(r); 56320 <= i && i <= 57343 ? o = 1024 * (o - 55296) + i - 56320 + 65536 : t += this.wcwidth(i) } const a = this.charProperties(o, i); let h = n.extractWidth(a); n.extractShouldJoin(a) && (h -= n.extractWidth(i)), t += h, i = a } return t } charProperties(e, t) { return this._activeProvider.charProperties(e, t) } } t.UnicodeService = n } }, t = {}; function i(s) { var r = t[s]; if (void 0 !== r) return r.exports; var n = t[s] = { exports: {} }; return e[s](n, n.exports, i), n.exports } var s = {}; return (() => { var e = s; Object.defineProperty(e, "__esModule", { value: !0 }), e.Unicode11Addon = void 0; const t = i(433); e.Unicode11Addon = class { activate(e) { e.unicode.register(new t.UnicodeV11) } dispose() { } } })(), s })(), e.exports = t() }, 601: e => { "use strict"; e.exports = function (e) { return e[1] } }, 616: e => { var t; self, t = () => (() => { "use strict"; var e, t = {}; return e = t, Object.defineProperty(e, "__esModule", { value: !0 }), e.FitAddon = void 0, e.FitAddon = class { activate(e) { this._terminal = e } dispose() { } fit() { const e = this.proposeDimensions(); if (!e || !this._terminal || isNaN(e.cols) || isNaN(e.rows)) return; const t = this._terminal._core; this._terminal.rows === e.rows && this._terminal.cols === e.cols || (t._renderService.clear(), this._terminal.resize(e.cols, e.rows)) } proposeDimensions() { if (!this._terminal) return; if (!this._terminal.element || !this._terminal.element.parentElement) return; const e = this._terminal._core, t = e._renderService.dimensions; if (0 === t.css.cell.width || 0 === t.css.cell.height) return; const i = 0 === this._terminal.options.scrollback ? 0 : e.viewport.scrollBarWidth, s = window.getComputedStyle(this._terminal.element.parentElement), r = parseInt(s.getPropertyValue("height")), n = Math.max(0, parseInt(s.getPropertyValue("width"))), o = window.getComputedStyle(this._terminal.element), a = r - (parseInt(o.getPropertyValue("padding-top")) + parseInt(o.getPropertyValue("padding-bottom"))), h = n - (parseInt(o.getPropertyValue("padding-right")) + parseInt(o.getPropertyValue("padding-left"))) - i; return { cols: Math.max(2, Math.floor(h / t.css.cell.width)), rows: Math.max(1, Math.floor(a / t.css.cell.height)) } } }, t })(), e.exports = t() }, 659: e => { "use strict"; var t = {}; e.exports = function (e, i) { var s = function (e) { if (void 0 === t[e]) { var i = document.querySelector(e); if (window.HTMLIFrameElement && i instanceof window.HTMLIFrameElement) try { i = i.contentDocument.head } catch (e) { i = null } t[e] = i } return t[e] }(e); if (!s) throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); s.appendChild(i) } }, 825: e => { "use strict"; e.exports = function (e) { if ("undefined" == typeof document) return { update: function () { }, remove: function () { } }; var t = e.insertStyleElement(e); return { update: function (i) { !function (e, t, i) { var s = ""; i.supports && (s += "@supports (".concat(i.supports, ") {")), i.media && (s += "@media ".concat(i.media, " {")); var r = void 0 !== i.layer; r && (s += "@layer".concat(i.layer.length > 0 ? " ".concat(i.layer) : "", " {")), s += i.css, r && (s += "}"), i.media && (s += "}"), i.supports && (s += "}"); var n = i.sourceMap; n && "undefined" != typeof btoa && (s += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n)))), " */")), t.styleTagTransform(s, e, t.options) }(t, e, i) }, remove: function () { !function (e) { if (null === e.parentNode) return !1; e.parentNode.removeChild(e) }(t) } } } }, 832: e => { var t; self, t = () => (() => { "use strict"; var e = { 6: (e, t) => { function i(e) { try { const t = new URL(e), i = t.password && t.username ? `${t.protocol}//${t.username}:${t.password}@${t.host}` : t.username ? `${t.protocol}//${t.username}@${t.host}` : `${t.protocol}//${t.host}`; return e.toLocaleLowerCase().startsWith(i.toLocaleLowerCase()) } catch (e) { return !1 } } Object.defineProperty(t, "__esModule", { value: !0 }), t.LinkComputer = t.WebLinkProvider = void 0, t.WebLinkProvider = class { constructor(e, t, i, s = {}) { this._terminal = e, this._regex = t, this._handler = i, this._options = s } provideLinks(e, t) { const i = s.computeLink(e, this._regex, this._terminal, this._handler); t(this._addCallbacks(i)) } _addCallbacks(e) { return e.map((e => (e.leave = this._options.leave, e.hover = (t, i) => { if (this._options.hover) { const { range: s } = e; this._options.hover(t, i, s) } }, e))) } }; class s { static computeLink(e, t, r, n) { const o = new RegExp(t.source, (t.flags || "") + "g"), [a, h] = s._getWindowedLineStrings(e - 1, r), c = a.join(""); let l; const d = []; for (; l = o.exec(c);) { const e = l[0]; if (!i(e)) continue; const [t, o] = s._mapStrIdx(r, h, 0, l.index), [a, c] = s._mapStrIdx(r, t, o, e.length); if (-1 === t || -1 === o || -1 === a || -1 === c) continue; const _ = { start: { x: o + 1, y: t + 1 }, end: { x: c, y: a + 1 } }; d.push({ range: _, text: e, activate: n }) } return d } static _getWindowedLineStrings(e, t) { let i, s = e, r = e, n = 0, o = ""; const a = []; if (i = t.buffer.active.getLine(e)) { const e = i.translateToString(!0); if (i.isWrapped && " " !== e[0]) { for (n = 0; (i = t.buffer.active.getLine(--s)) && n < 2048 && (o = i.translateToString(!0), n += o.length, a.push(o), i.isWrapped && -1 === o.indexOf(" "));); a.reverse() } for (a.push(e), n = 0; (i = t.buffer.active.getLine(++r)) && i.isWrapped && n < 2048 && (o = i.translateToString(!0), n += o.length, a.push(o), -1 === o.indexOf(" "));); } return [a, s] } static _mapStrIdx(e, t, i, s) { const r = e.buffer.active, n = r.getNullCell(); let o = i; for (; s;) { const e = r.getLine(t); if (!e) return [-1, -1]; for (let i = o; i < e.length; ++i) { e.getCell(i, n); const o = n.getChars(); if (n.getWidth() && (s -= o.length || 1, i === e.length - 1 && "" === o)) { const e = r.getLine(t + 1); e && e.isWrapped && (e.getCell(0, n), 2 === n.getWidth() && (s += 1)) } if (s < 0) return [t, i] } t++, o = 0 } return [t, o] } } t.LinkComputer = s } }, t = {}; function i(s) { var r = t[s]; if (void 0 !== r) return r.exports; var n = t[s] = { exports: {} }; return e[s](n, n.exports, i), n.exports } var s = {}; return (() => { var e = s; Object.defineProperty(e, "__esModule", { value: !0 }), e.WebLinksAddon = void 0; const t = i(6), r = /(https?|HTTPS?):[/]{2}[^\s"'!*(){}|\\\^<>`]*[^\s"':,.!?{}|\\\^~\[\]`()<>]/; function n(e, t) { const i = window.open(); if (i) { try { i.opener = null } catch { } i.location.href = t } else console.warn("Opening link blocked as opener could not be cleared") } e.WebLinksAddon = class { constructor(e = n, t = {}) { this._handler = e, this._options = t } activate(e) { this._terminal = e; const i = this._options, s = i.urlRegex || r; this._linkProvider = this._terminal.registerLinkProvider(new t.WebLinkProvider(this._terminal, s, this._handler, i)) } dispose() { this._linkProvider?.dispose() } } })(), s })(), e.exports = t() }, 856: e => { var t; globalThis, t = () => (() => { "use strict"; var e = { 4567: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.AccessibilityManager = void 0; const n = i(9042), o = i(9924), a = i(844), h = i(4725), c = i(2585), l = i(3656); let d = t.AccessibilityManager = class extends a.Disposable { constructor(e, t, i, s) { super(), this._terminal = e, this._coreBrowserService = i, this._renderService = s, this._rowColumns = new WeakMap, this._liveRegionLineCount = 0, this._charsToConsume = [], this._charsToAnnounce = "", this._accessibilityContainer = this._coreBrowserService.mainDocument.createElement("div"), this._accessibilityContainer.classList.add("xterm-accessibility"), this._rowContainer = this._coreBrowserService.mainDocument.createElement("div"), this._rowContainer.setAttribute("role", "list"), this._rowContainer.classList.add("xterm-accessibility-tree"), this._rowElements = []; for (let e = 0; e < this._terminal.rows; e++)this._rowElements[e] = this._createAccessibilityTreeNode(), this._rowContainer.appendChild(this._rowElements[e]); if (this._topBoundaryFocusListener = e => this._handleBoundaryFocus(e, 0), this._bottomBoundaryFocusListener = e => this._handleBoundaryFocus(e, 1), this._rowElements[0].addEventListener("focus", this._topBoundaryFocusListener), this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._refreshRowsDimensions(), this._accessibilityContainer.appendChild(this._rowContainer), this._liveRegion = this._coreBrowserService.mainDocument.createElement("div"), this._liveRegion.classList.add("live-region"), this._liveRegion.setAttribute("aria-live", "assertive"), this._accessibilityContainer.appendChild(this._liveRegion), this._liveRegionDebouncer = this.register(new o.TimeBasedDebouncer(this._renderRows.bind(this))), !this._terminal.element) throw new Error("Cannot enable accessibility before Terminal.open"); this._terminal.element.insertAdjacentElement("afterbegin", this._accessibilityContainer), this.register(this._terminal.onResize((e => this._handleResize(e.rows)))), this.register(this._terminal.onRender((e => this._refreshRows(e.start, e.end)))), this.register(this._terminal.onScroll((() => this._refreshRows()))), this.register(this._terminal.onA11yChar((e => this._handleChar(e)))), this.register(this._terminal.onLineFeed((() => this._handleChar("\n")))), this.register(this._terminal.onA11yTab((e => this._handleTab(e)))), this.register(this._terminal.onKey((e => this._handleKey(e.key)))), this.register(this._terminal.onBlur((() => this._clearLiveRegion()))), this.register(this._renderService.onDimensionsChange((() => this._refreshRowsDimensions()))), this.register((0, l.addDisposableDomListener)(document, "selectionchange", (() => this._handleSelectionChange()))), this.register(this._coreBrowserService.onDprChange((() => this._refreshRowsDimensions()))), this._refreshRows(), this.register((0, a.toDisposable)((() => { this._accessibilityContainer.remove(), this._rowElements.length = 0 }))) } _handleTab(e) { for (let t = 0; t < e; t++)this._handleChar(" ") } _handleChar(e) { this._liveRegionLineCount < 21 && (this._charsToConsume.length > 0 ? this._charsToConsume.shift() !== e && (this._charsToAnnounce += e) : this._charsToAnnounce += e, "\n" === e && (this._liveRegionLineCount++, 21 === this._liveRegionLineCount && (this._liveRegion.textContent += n.tooMuchOutput))) } _clearLiveRegion() { this._liveRegion.textContent = "", this._liveRegionLineCount = 0 } _handleKey(e) { this._clearLiveRegion(), /\p{Control}/u.test(e) || this._charsToConsume.push(e) } _refreshRows(e, t) { this._liveRegionDebouncer.refresh(e, t, this._terminal.rows) } _renderRows(e, t) { const i = this._terminal.buffer, s = i.lines.length.toString(); for (let r = e; r <= t; r++) { const e = i.lines.get(i.ydisp + r), t = [], n = e?.translateToString(!0, void 0, void 0, t) || "", o = (i.ydisp + r + 1).toString(), a = this._rowElements[r]; a && (0 === n.length ? (a.innerText = " ", this._rowColumns.set(a, [0, 1])) : (a.textContent = n, this._rowColumns.set(a, t)), a.setAttribute("aria-posinset", o), a.setAttribute("aria-setsize", s)) } this._announceCharacters() } _announceCharacters() { 0 !== this._charsToAnnounce.length && (this._liveRegion.textContent += this._charsToAnnounce, this._charsToAnnounce = "") } _handleBoundaryFocus(e, t) { const i = e.target, s = this._rowElements[0 === t ? 1 : this._rowElements.length - 2]; if (i.getAttribute("aria-posinset") === (0 === t ? "1" : `${this._terminal.buffer.lines.length}`)) return; if (e.relatedTarget !== s) return; let r, n; if (0 === t ? (r = i, n = this._rowElements.pop(), this._rowContainer.removeChild(n)) : (r = this._rowElements.shift(), n = i, this._rowContainer.removeChild(r)), r.removeEventListener("focus", this._topBoundaryFocusListener), n.removeEventListener("focus", this._bottomBoundaryFocusListener), 0 === t) { const e = this._createAccessibilityTreeNode(); this._rowElements.unshift(e), this._rowContainer.insertAdjacentElement("afterbegin", e) } else { const e = this._createAccessibilityTreeNode(); this._rowElements.push(e), this._rowContainer.appendChild(e) } this._rowElements[0].addEventListener("focus", this._topBoundaryFocusListener), this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._terminal.scrollLines(0 === t ? -1 : 1), this._rowElements[0 === t ? 1 : this._rowElements.length - 2].focus(), e.preventDefault(), e.stopImmediatePropagation() } _handleSelectionChange() { if (0 === this._rowElements.length) return; const e = document.getSelection(); if (!e) return; if (e.isCollapsed) return void (this._rowContainer.contains(e.anchorNode) && this._terminal.clearSelection()); if (!e.anchorNode || !e.focusNode) return void console.error("anchorNode and/or focusNode are null"); let t = { node: e.anchorNode, offset: e.anchorOffset }, i = { node: e.focusNode, offset: e.focusOffset }; if ((t.node.compareDocumentPosition(i.node) & Node.DOCUMENT_POSITION_PRECEDING || t.node === i.node && t.offset > i.offset) && ([t, i] = [i, t]), t.node.compareDocumentPosition(this._rowElements[0]) & (Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_FOLLOWING) && (t = { node: this._rowElements[0].childNodes[0], offset: 0 }), !this._rowContainer.contains(t.node)) return; const s = this._rowElements.slice(-1)[0]; if (i.node.compareDocumentPosition(s) & (Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_PRECEDING) && (i = { node: s, offset: s.textContent?.length ?? 0 }), !this._rowContainer.contains(i.node)) return; const r = ({ node: e, offset: t }) => { const i = e instanceof Text ? e.parentNode : e; let s = parseInt(i?.getAttribute("aria-posinset"), 10) - 1; if (isNaN(s)) return console.warn("row is invalid. Race condition?"), null; const r = this._rowColumns.get(i); if (!r) return console.warn("columns is null. Race condition?"), null; let n = t < r.length ? r[t] : r.slice(-1)[0] + 1; return n >= this._terminal.cols && (++s, n = 0), { row: s, column: n } }, n = r(t), o = r(i); if (n && o) { if (n.row > o.row || n.row === o.row && n.column >= o.column) throw new Error("invalid range"); this._terminal.select(n.column, n.row, (o.row - n.row) * this._terminal.cols - n.column + o.column) } } _handleResize(e) { this._rowElements[this._rowElements.length - 1].removeEventListener("focus", this._bottomBoundaryFocusListener); for (let e = this._rowContainer.children.length; e < this._terminal.rows; e++)this._rowElements[e] = this._createAccessibilityTreeNode(), this._rowContainer.appendChild(this._rowElements[e]); for (; this._rowElements.length > e;)this._rowContainer.removeChild(this._rowElements.pop()); this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._refreshRowsDimensions() } _createAccessibilityTreeNode() { const e = this._coreBrowserService.mainDocument.createElement("div"); return e.setAttribute("role", "listitem"), e.tabIndex = -1, this._refreshRowDimensions(e), e } _refreshRowsDimensions() { if (this._renderService.dimensions.css.cell.height) { this._accessibilityContainer.style.width = `${this._renderService.dimensions.css.canvas.width}px`, this._rowElements.length !== this._terminal.rows && this._handleResize(this._terminal.rows); for (let e = 0; e < this._terminal.rows; e++)this._refreshRowDimensions(this._rowElements[e]) } } _refreshRowDimensions(e) { e.style.height = `${this._renderService.dimensions.css.cell.height}px` } }; t.AccessibilityManager = d = s([r(1, c.IInstantiationService), r(2, h.ICoreBrowserService), r(3, h.IRenderService)], d) }, 3614: (e, t) => { function i(e) { return e.replace(/\r?\n/g, "\r") } function s(e, t) { return t ? "[200~" + e + "[201~" : e } function r(e, t, r, n) { e = s(e = i(e), r.decPrivateModes.bracketedPasteMode && !0 !== n.rawOptions.ignoreBracketedPasteMode), r.triggerDataEvent(e, !0), t.value = "" } function n(e, t, i) { const s = i.getBoundingClientRect(), r = e.clientX - s.left - 10, n = e.clientY - s.top - 10; t.style.width = "20px", t.style.height = "20px", t.style.left = `${r}px`, t.style.top = `${n}px`, t.style.zIndex = "1000", t.focus() } Object.defineProperty(t, "__esModule", { value: !0 }), t.rightClickHandler = t.moveTextAreaUnderMouseCursor = t.paste = t.handlePasteEvent = t.copyHandler = t.bracketTextForPaste = t.prepareTextForTerminal = void 0, t.prepareTextForTerminal = i, t.bracketTextForPaste = s, t.copyHandler = function (e, t) { e.clipboardData && e.clipboardData.setData("text/plain", t.selectionText), e.preventDefault() }, t.handlePasteEvent = function (e, t, i, s) { e.stopPropagation(), e.clipboardData && r(e.clipboardData.getData("text/plain"), t, i, s) }, t.paste = r, t.moveTextAreaUnderMouseCursor = n, t.rightClickHandler = function (e, t, i, s, r) { n(e, t, i), r && s.rightClickSelect(e), t.value = s.selectionText, t.select() } }, 7239: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.ColorContrastCache = void 0; const s = i(1505); t.ColorContrastCache = class { constructor() { this._color = new s.TwoKeyMap, this._css = new s.TwoKeyMap } setCss(e, t, i) { this._css.set(e, t, i) } getCss(e, t) { return this._css.get(e, t) } setColor(e, t, i) { this._color.set(e, t, i) } getColor(e, t) { return this._color.get(e, t) } clear() { this._color.clear(), this._css.clear() } } }, 3656: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.addDisposableDomListener = void 0, t.addDisposableDomListener = function (e, t, i, s) { e.addEventListener(t, i, s); let r = !1; return { dispose: () => { r || (r = !0, e.removeEventListener(t, i, s)) } } } }, 3551: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.Linkifier = void 0; const n = i(3656), o = i(8460), a = i(844), h = i(2585), c = i(4725); let l = t.Linkifier = class extends a.Disposable { get currentLink() { return this._currentLink } constructor(e, t, i, s, r) { super(), this._element = e, this._mouseService = t, this._renderService = i, this._bufferService = s, this._linkProviderService = r, this._linkCacheDisposables = [], this._isMouseOut = !0, this._wasResized = !1, this._activeLine = -1, this._onShowLinkUnderline = this.register(new o.EventEmitter), this.onShowLinkUnderline = this._onShowLinkUnderline.event, this._onHideLinkUnderline = this.register(new o.EventEmitter), this.onHideLinkUnderline = this._onHideLinkUnderline.event, this.register((0, a.getDisposeArrayDisposable)(this._linkCacheDisposables)), this.register((0, a.toDisposable)((() => { this._lastMouseEvent = void 0, this._activeProviderReplies?.clear() }))), this.register(this._bufferService.onResize((() => { this._clearCurrentLink(), this._wasResized = !0 }))), this.register((0, n.addDisposableDomListener)(this._element, "mouseleave", (() => { this._isMouseOut = !0, this._clearCurrentLink() }))), this.register((0, n.addDisposableDomListener)(this._element, "mousemove", this._handleMouseMove.bind(this))), this.register((0, n.addDisposableDomListener)(this._element, "mousedown", this._handleMouseDown.bind(this))), this.register((0, n.addDisposableDomListener)(this._element, "mouseup", this._handleMouseUp.bind(this))) } _handleMouseMove(e) { this._lastMouseEvent = e; const t = this._positionFromMouseEvent(e, this._element, this._mouseService); if (!t) return; this._isMouseOut = !1; const i = e.composedPath(); for (let e = 0; e < i.length; e++) { const t = i[e]; if (t.classList.contains("xterm")) break; if (t.classList.contains("xterm-hover")) return } this._lastBufferCell && t.x === this._lastBufferCell.x && t.y === this._lastBufferCell.y || (this._handleHover(t), this._lastBufferCell = t) } _handleHover(e) { if (this._activeLine !== e.y || this._wasResized) return this._clearCurrentLink(), this._askForLink(e, !1), void (this._wasResized = !1); this._currentLink && this._linkAtPosition(this._currentLink.link, e) || (this._clearCurrentLink(), this._askForLink(e, !0)) } _askForLink(e, t) { this._activeProviderReplies && t || (this._activeProviderReplies?.forEach((e => { e?.forEach((e => { e.link.dispose && e.link.dispose() })) })), this._activeProviderReplies = new Map, this._activeLine = e.y); let i = !1; for (const [s, r] of this._linkProviderService.linkProviders.entries()) if (t) { const t = this._activeProviderReplies?.get(s); t && (i = this._checkLinkProviderResult(s, e, i)) } else r.provideLinks(e.y, (t => { if (this._isMouseOut) return; const r = t?.map((e => ({ link: e }))); this._activeProviderReplies?.set(s, r), i = this._checkLinkProviderResult(s, e, i), this._activeProviderReplies?.size === this._linkProviderService.linkProviders.length && this._removeIntersectingLinks(e.y, this._activeProviderReplies) })) } _removeIntersectingLinks(e, t) { const i = new Set; for (let s = 0; s < t.size; s++) { const r = t.get(s); if (r) for (let t = 0; t < r.length; t++) { const s = r[t], n = s.link.range.start.y < e ? 0 : s.link.range.start.x, o = s.link.range.end.y > e ? this._bufferService.cols : s.link.range.end.x; for (let e = n; e <= o; e++) { if (i.has(e)) { r.splice(t--, 1); break } i.add(e) } } } } _checkLinkProviderResult(e, t, i) { if (!this._activeProviderReplies) return i; const s = this._activeProviderReplies.get(e); let r = !1; for (let t = 0; t < e; t++)this._activeProviderReplies.has(t) && !this._activeProviderReplies.get(t) || (r = !0); if (!r && s) { const e = s.find((e => this._linkAtPosition(e.link, t))); e && (i = !0, this._handleNewLink(e)) } if (this._activeProviderReplies.size === this._linkProviderService.linkProviders.length && !i) for (let e = 0; e < this._activeProviderReplies.size; e++) { const s = this._activeProviderReplies.get(e)?.find((e => this._linkAtPosition(e.link, t))); if (s) { i = !0, this._handleNewLink(s); break } } return i } _handleMouseDown() { this._mouseDownLink = this._currentLink } _handleMouseUp(e) { if (!this._currentLink) return; const t = this._positionFromMouseEvent(e, this._element, this._mouseService); t && this._mouseDownLink === this._currentLink && this._linkAtPosition(this._currentLink.link, t) && this._currentLink.link.activate(e, this._currentLink.link.text) } _clearCurrentLink(e, t) { this._currentLink && this._lastMouseEvent && (!e || !t || this._currentLink.link.range.start.y >= e && this._currentLink.link.range.end.y <= t) && (this._linkLeave(this._element, this._currentLink.link, this._lastMouseEvent), this._currentLink = void 0, (0, a.disposeArray)(this._linkCacheDisposables)) } _handleNewLink(e) { if (!this._lastMouseEvent) return; const t = this._positionFromMouseEvent(this._lastMouseEvent, this._element, this._mouseService); t && this._linkAtPosition(e.link, t) && (this._currentLink = e, this._currentLink.state = { decorations: { underline: void 0 === e.link.decorations || e.link.decorations.underline, pointerCursor: void 0 === e.link.decorations || e.link.decorations.pointerCursor }, isHovered: !0 }, this._linkHover(this._element, e.link, this._lastMouseEvent), e.link.decorations = {}, Object.defineProperties(e.link.decorations, { pointerCursor: { get: () => this._currentLink?.state?.decorations.pointerCursor, set: e => { this._currentLink?.state && this._currentLink.state.decorations.pointerCursor !== e && (this._currentLink.state.decorations.pointerCursor = e, this._currentLink.state.isHovered && this._element.classList.toggle("xterm-cursor-pointer", e)) } }, underline: { get: () => this._currentLink?.state?.decorations.underline, set: t => { this._currentLink?.state && this._currentLink?.state?.decorations.underline !== t && (this._currentLink.state.decorations.underline = t, this._currentLink.state.isHovered && this._fireUnderlineEvent(e.link, t)) } } }), this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange((e => { if (!this._currentLink) return; const t = 0 === e.start ? 0 : e.start + 1 + this._bufferService.buffer.ydisp, i = this._bufferService.buffer.ydisp + 1 + e.end; if (this._currentLink.link.range.start.y >= t && this._currentLink.link.range.end.y <= i && (this._clearCurrentLink(t, i), this._lastMouseEvent)) { const e = this._positionFromMouseEvent(this._lastMouseEvent, this._element, this._mouseService); e && this._askForLink(e, !1) } })))) } _linkHover(e, t, i) { this._currentLink?.state && (this._currentLink.state.isHovered = !0, this._currentLink.state.decorations.underline && this._fireUnderlineEvent(t, !0), this._currentLink.state.decorations.pointerCursor && e.classList.add("xterm-cursor-pointer")), t.hover && t.hover(i, t.text) } _fireUnderlineEvent(e, t) { const i = e.range, s = this._bufferService.buffer.ydisp, r = this._createLinkUnderlineEvent(i.start.x - 1, i.start.y - s - 1, i.end.x, i.end.y - s - 1, void 0); (t ? this._onShowLinkUnderline : this._onHideLinkUnderline).fire(r) } _linkLeave(e, t, i) { this._currentLink?.state && (this._currentLink.state.isHovered = !1, this._currentLink.state.decorations.underline && this._fireUnderlineEvent(t, !1), this._currentLink.state.decorations.pointerCursor && e.classList.remove("xterm-cursor-pointer")), t.leave && t.leave(i, t.text) } _linkAtPosition(e, t) { const i = e.range.start.y * this._bufferService.cols + e.range.start.x, s = e.range.end.y * this._bufferService.cols + e.range.end.x, r = t.y * this._bufferService.cols + t.x; return i <= r && r <= s } _positionFromMouseEvent(e, t, i) { const s = i.getCoords(e, t, this._bufferService.cols, this._bufferService.rows); if (s) return { x: s[0], y: s[1] + this._bufferService.buffer.ydisp } } _createLinkUnderlineEvent(e, t, i, s, r) { return { x1: e, y1: t, x2: i, y2: s, cols: this._bufferService.cols, fg: r } } }; t.Linkifier = l = s([r(1, c.IMouseService), r(2, c.IRenderService), r(3, h.IBufferService), r(4, c.ILinkProviderService)], l) }, 9042: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.tooMuchOutput = t.promptLabel = void 0, t.promptLabel = "Terminal input", t.tooMuchOutput = "Too much output to announce, navigate to rows manually to read" }, 3730: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.OscLinkProvider = void 0; const n = i(511), o = i(2585); let a = t.OscLinkProvider = class { constructor(e, t, i) { this._bufferService = e, this._optionsService = t, this._oscLinkService = i } provideLinks(e, t) { const i = this._bufferService.buffer.lines.get(e - 1); if (!i) return void t(void 0); const s = [], r = this._optionsService.rawOptions.linkHandler, o = new n.CellData, a = i.getTrimmedLength(); let c = -1, l = -1, d = !1; for (let t = 0; t < a; t++)if (-1 !== l || i.hasContent(t)) { if (i.loadCell(t, o), o.hasExtendedAttrs() && o.extended.urlId) { if (-1 === l) { l = t, c = o.extended.urlId; continue } d = o.extended.urlId !== c } else -1 !== l && (d = !0); if (d || -1 !== l && t === a - 1) { const i = this._oscLinkService.getLinkData(c)?.uri; if (i) { const n = { start: { x: l + 1, y: e }, end: { x: t + (d || t !== a - 1 ? 0 : 1), y: e } }; let o = !1; if (!r?.allowNonHttpProtocols) try { const e = new URL(i);["http:", "https:"].includes(e.protocol) || (o = !0) } catch (e) { o = !0 } o || s.push({ text: i, range: n, activate: (e, t) => r ? r.activate(e, t, n) : h(0, t), hover: (e, t) => r?.hover?.(e, t, n), leave: (e, t) => r?.leave?.(e, t, n) }) } d = !1, o.hasExtendedAttrs() && o.extended.urlId ? (l = t, c = o.extended.urlId) : (l = -1, c = -1) } } t(s) } }; function h(e, t) { if (confirm(`Do you want to navigate to ${t}?\n\nWARNING: This link could potentially be dangerous`)) { const e = window.open(); if (e) { try { e.opener = null } catch { } e.location.href = t } else console.warn("Opening link blocked as opener could not be cleared") } } t.OscLinkProvider = a = s([r(0, o.IBufferService), r(1, o.IOptionsService), r(2, o.IOscLinkService)], a) }, 6193: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.RenderDebouncer = void 0, t.RenderDebouncer = class { constructor(e, t) { this._renderCallback = e, this._coreBrowserService = t, this._refreshCallbacks = [] } dispose() { this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0) } addRefreshCallback(e) { return this._refreshCallbacks.push(e), this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._innerRefresh()))), this._animationFrame } refresh(e, t, i) { this._rowCount = i, e = void 0 !== e ? e : 0, t = void 0 !== t ? t : this._rowCount - 1, this._rowStart = void 0 !== this._rowStart ? Math.min(this._rowStart, e) : e, this._rowEnd = void 0 !== this._rowEnd ? Math.max(this._rowEnd, t) : t, this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._innerRefresh()))) } _innerRefresh() { if (this._animationFrame = void 0, void 0 === this._rowStart || void 0 === this._rowEnd || void 0 === this._rowCount) return void this._runRefreshCallbacks(); const e = Math.max(this._rowStart, 0), t = Math.min(this._rowEnd, this._rowCount - 1); this._rowStart = void 0, this._rowEnd = void 0, this._renderCallback(e, t), this._runRefreshCallbacks() } _runRefreshCallbacks() { for (const e of this._refreshCallbacks) e(0); this._refreshCallbacks = [] } } }, 3236: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.Terminal = void 0; const s = i(3614), r = i(3656), n = i(3551), o = i(9042), a = i(3730), h = i(1680), c = i(3107), l = i(5744), d = i(2950), _ = i(1296), u = i(428), f = i(4269), v = i(5114), g = i(8934), p = i(3230), m = i(9312), C = i(4725), S = i(6731), b = i(8055), w = i(8969), y = i(8460), L = i(844), x = i(6114), E = i(8437), R = i(2584), M = i(7399), A = i(5941), D = i(9074), k = i(2585), T = i(5435), B = i(4567), O = i(779); class P extends w.CoreTerminal { get onFocus() { return this._onFocus.event } get onBlur() { return this._onBlur.event } get onA11yChar() { return this._onA11yCharEmitter.event } get onA11yTab() { return this._onA11yTabEmitter.event } get onWillOpen() { return this._onWillOpen.event } constructor(e = {}) { super(e), this.browser = x, this._keyDownHandled = !1, this._keyDownSeen = !1, this._keyPressHandled = !1, this._unprocessedDeadKey = !1, this._accessibilityManager = this.register(new L.MutableDisposable), this._onCursorMove = this.register(new y.EventEmitter), this.onCursorMove = this._onCursorMove.event, this._onKey = this.register(new y.EventEmitter), this.onKey = this._onKey.event, this._onRender = this.register(new y.EventEmitter), this.onRender = this._onRender.event, this._onSelectionChange = this.register(new y.EventEmitter), this.onSelectionChange = this._onSelectionChange.event, this._onTitleChange = this.register(new y.EventEmitter), this.onTitleChange = this._onTitleChange.event, this._onBell = this.register(new y.EventEmitter), this.onBell = this._onBell.event, this._onFocus = this.register(new y.EventEmitter), this._onBlur = this.register(new y.EventEmitter), this._onA11yCharEmitter = this.register(new y.EventEmitter), this._onA11yTabEmitter = this.register(new y.EventEmitter), this._onWillOpen = this.register(new y.EventEmitter), this._setup(), this._decorationService = this._instantiationService.createInstance(D.DecorationService), this._instantiationService.setService(k.IDecorationService, this._decorationService), this._linkProviderService = this._instantiationService.createInstance(O.LinkProviderService), this._instantiationService.setService(C.ILinkProviderService, this._linkProviderService), this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(a.OscLinkProvider)), this.register(this._inputHandler.onRequestBell((() => this._onBell.fire()))), this.register(this._inputHandler.onRequestRefreshRows(((e, t) => this.refresh(e, t)))), this.register(this._inputHandler.onRequestSendFocus((() => this._reportFocus()))), this.register(this._inputHandler.onRequestReset((() => this.reset()))), this.register(this._inputHandler.onRequestWindowsOptionsReport((e => this._reportWindowsOptions(e)))), this.register(this._inputHandler.onColor((e => this._handleColorEvent(e)))), this.register((0, y.forwardEvent)(this._inputHandler.onCursorMove, this._onCursorMove)), this.register((0, y.forwardEvent)(this._inputHandler.onTitleChange, this._onTitleChange)), this.register((0, y.forwardEvent)(this._inputHandler.onA11yChar, this._onA11yCharEmitter)), this.register((0, y.forwardEvent)(this._inputHandler.onA11yTab, this._onA11yTabEmitter)), this.register(this._bufferService.onResize((e => this._afterResize(e.cols, e.rows)))), this.register((0, L.toDisposable)((() => { this._customKeyEventHandler = void 0, this.element?.parentNode?.removeChild(this.element) }))) } _handleColorEvent(e) { if (this._themeService) for (const t of e) { let e, i = ""; switch (t.index) { case 256: e = "foreground", i = "10"; break; case 257: e = "background", i = "11"; break; case 258: e = "cursor", i = "12"; break; default: e = "ansi", i = "4;" + t.index }switch (t.type) { case 0: const s = b.color.toColorRGB("ansi" === e ? this._themeService.colors.ansi[t.index] : this._themeService.colors[e]); this.coreService.triggerDataEvent(`${R.C0.ESC}]${i};${(0, A.toRgbString)(s)}${R.C1_ESCAPED.ST}`); break; case 1: if ("ansi" === e) this._themeService.modifyColors((e => e.ansi[t.index] = b.channels.toColor(...t.color))); else { const i = e; this._themeService.modifyColors((e => e[i] = b.channels.toColor(...t.color))) } break; case 2: this._themeService.restoreColor(t.index) } } } _setup() { super._setup(), this._customKeyEventHandler = void 0 } get buffer() { return this.buffers.active } focus() { this.textarea && this.textarea.focus({ preventScroll: !0 }) } _handleScreenReaderModeOptionChange(e) { e ? !this._accessibilityManager.value && this._renderService && (this._accessibilityManager.value = this._instantiationService.createInstance(B.AccessibilityManager, this)) : this._accessibilityManager.clear() } _handleTextAreaFocus(e) { this.coreService.decPrivateModes.sendFocus && this.coreService.triggerDataEvent(R.C0.ESC + "[I"), this.element.classList.add("focus"), this._showCursor(), this._onFocus.fire() } blur() { return this.textarea?.blur() } _handleTextAreaBlur() { this.textarea.value = "", this.refresh(this.buffer.y, this.buffer.y), this.coreService.decPrivateModes.sendFocus && this.coreService.triggerDataEvent(R.C0.ESC + "[O"), this.element.classList.remove("focus"), this._onBlur.fire() } _syncTextArea() { if (!this.textarea || !this.buffer.isCursorInViewport || this._compositionHelper.isComposing || !this._renderService) return; const e = this.buffer.ybase + this.buffer.y, t = this.buffer.lines.get(e); if (!t) return; const i = Math.min(this.buffer.x, this.cols - 1), s = this._renderService.dimensions.css.cell.height, r = t.getWidth(i), n = this._renderService.dimensions.css.cell.width * r, o = this.buffer.y * this._renderService.dimensions.css.cell.height, a = i * this._renderService.dimensions.css.cell.width; this.textarea.style.left = a + "px", this.textarea.style.top = o + "px", this.textarea.style.width = n + "px", this.textarea.style.height = s + "px", this.textarea.style.lineHeight = s + "px", this.textarea.style.zIndex = "-5" } _initGlobal() { this._bindKeys(), this.register((0, r.addDisposableDomListener)(this.element, "copy", (e => { this.hasSelection() && (0, s.copyHandler)(e, this._selectionService) }))); const e = e => (0, s.handlePasteEvent)(e, this.textarea, this.coreService, this.optionsService); this.register((0, r.addDisposableDomListener)(this.textarea, "paste", e)), this.register((0, r.addDisposableDomListener)(this.element, "paste", e)), x.isFirefox ? this.register((0, r.addDisposableDomListener)(this.element, "mousedown", (e => { 2 === e.button && (0, s.rightClickHandler)(e, this.textarea, this.screenElement, this._selectionService, this.options.rightClickSelectsWord) }))) : this.register((0, r.addDisposableDomListener)(this.element, "contextmenu", (e => { (0, s.rightClickHandler)(e, this.textarea, this.screenElement, this._selectionService, this.options.rightClickSelectsWord) }))), x.isLinux && this.register((0, r.addDisposableDomListener)(this.element, "auxclick", (e => { 1 === e.button && (0, s.moveTextAreaUnderMouseCursor)(e, this.textarea, this.screenElement) }))) } _bindKeys() { this.register((0, r.addDisposableDomListener)(this.textarea, "keyup", (e => this._keyUp(e)), !0)), this.register((0, r.addDisposableDomListener)(this.textarea, "keydown", (e => this._keyDown(e)), !0)), this.register((0, r.addDisposableDomListener)(this.textarea, "keypress", (e => this._keyPress(e)), !0)), this.register((0, r.addDisposableDomListener)(this.textarea, "compositionstart", (() => this._compositionHelper.compositionstart()))), this.register((0, r.addDisposableDomListener)(this.textarea, "compositionupdate", (e => this._compositionHelper.compositionupdate(e)))), this.register((0, r.addDisposableDomListener)(this.textarea, "compositionend", (() => this._compositionHelper.compositionend()))), this.register((0, r.addDisposableDomListener)(this.textarea, "input", (e => this._inputEvent(e)), !0)), this.register(this.onRender((() => this._compositionHelper.updateCompositionElements()))) } open(e) { if (!e) throw new Error("Terminal requires a parent element."); if (e.isConnected || this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"), this.element?.ownerDocument.defaultView && this._coreBrowserService) return void (this.element.ownerDocument.defaultView !== this._coreBrowserService.window && (this._coreBrowserService.window = this.element.ownerDocument.defaultView)); this._document = e.ownerDocument, this.options.documentOverride && this.options.documentOverride instanceof Document && (this._document = this.optionsService.rawOptions.documentOverride), this.element = this._document.createElement("div"), this.element.dir = "ltr", this.element.classList.add("terminal"), this.element.classList.add("xterm"), e.appendChild(this.element); const t = this._document.createDocumentFragment(); this._viewportElement = this._document.createElement("div"), this._viewportElement.classList.add("xterm-viewport"), t.appendChild(this._viewportElement), this._viewportScrollArea = this._document.createElement("div"), this._viewportScrollArea.classList.add("xterm-scroll-area"), this._viewportElement.appendChild(this._viewportScrollArea), this.screenElement = this._document.createElement("div"), this.screenElement.classList.add("xterm-screen"), this.register((0, r.addDisposableDomListener)(this.screenElement, "mousemove", (e => this.updateCursorStyle(e)))), this._helperContainer = this._document.createElement("div"), this._helperContainer.classList.add("xterm-helpers"), this.screenElement.appendChild(this._helperContainer), t.appendChild(this.screenElement), this.textarea = this._document.createElement("textarea"), this.textarea.classList.add("xterm-helper-textarea"), this.textarea.setAttribute("aria-label", o.promptLabel), x.isChromeOS || this.textarea.setAttribute("aria-multiline", "false"), this.textarea.setAttribute("autocorrect", "off"), this.textarea.setAttribute("autocapitalize", "off"), this.textarea.setAttribute("spellcheck", "false"), this.textarea.tabIndex = 0, this._coreBrowserService = this.register(this._instantiationService.createInstance(v.CoreBrowserService, this.textarea, e.ownerDocument.defaultView ?? window, this._document ?? "undefined" != typeof window ? window.document : null)), this._instantiationService.setService(C.ICoreBrowserService, this._coreBrowserService), this.register((0, r.addDisposableDomListener)(this.textarea, "focus", (e => this._handleTextAreaFocus(e)))), this.register((0, r.addDisposableDomListener)(this.textarea, "blur", (() => this._handleTextAreaBlur()))), this._helperContainer.appendChild(this.textarea), this._charSizeService = this._instantiationService.createInstance(u.CharSizeService, this._document, this._helperContainer), this._instantiationService.setService(C.ICharSizeService, this._charSizeService), this._themeService = this._instantiationService.createInstance(S.ThemeService), this._instantiationService.setService(C.IThemeService, this._themeService), this._characterJoinerService = this._instantiationService.createInstance(f.CharacterJoinerService), this._instantiationService.setService(C.ICharacterJoinerService, this._characterJoinerService), this._renderService = this.register(this._instantiationService.createInstance(p.RenderService, this.rows, this.screenElement)), this._instantiationService.setService(C.IRenderService, this._renderService), this.register(this._renderService.onRenderedViewportChange((e => this._onRender.fire(e)))), this.onResize((e => this._renderService.resize(e.cols, e.rows))), this._compositionView = this._document.createElement("div"), this._compositionView.classList.add("composition-view"), this._compositionHelper = this._instantiationService.createInstance(d.CompositionHelper, this.textarea, this._compositionView), this._helperContainer.appendChild(this._compositionView), this._mouseService = this._instantiationService.createInstance(g.MouseService), this._instantiationService.setService(C.IMouseService, this._mouseService), this.linkifier = this.register(this._instantiationService.createInstance(n.Linkifier, this.screenElement)), this.element.appendChild(t); try { this._onWillOpen.fire(this.element) } catch { } this._renderService.hasRenderer() || this._renderService.setRenderer(this._createRenderer()), this.viewport = this._instantiationService.createInstance(h.Viewport, this._viewportElement, this._viewportScrollArea), this.viewport.onRequestScrollLines((e => this.scrollLines(e.amount, e.suppressScrollEvent, 1))), this.register(this._inputHandler.onRequestSyncScrollBar((() => this.viewport.syncScrollArea()))), this.register(this.viewport), this.register(this.onCursorMove((() => { this._renderService.handleCursorMove(), this._syncTextArea() }))), this.register(this.onResize((() => this._renderService.handleResize(this.cols, this.rows)))), this.register(this.onBlur((() => this._renderService.handleBlur()))), this.register(this.onFocus((() => this._renderService.handleFocus()))), this.register(this._renderService.onDimensionsChange((() => this.viewport.syncScrollArea()))), this._selectionService = this.register(this._instantiationService.createInstance(m.SelectionService, this.element, this.screenElement, this.linkifier)), this._instantiationService.setService(C.ISelectionService, this._selectionService), this.register(this._selectionService.onRequestScrollLines((e => this.scrollLines(e.amount, e.suppressScrollEvent)))), this.register(this._selectionService.onSelectionChange((() => this._onSelectionChange.fire()))), this.register(this._selectionService.onRequestRedraw((e => this._renderService.handleSelectionChanged(e.start, e.end, e.columnSelectMode)))), this.register(this._selectionService.onLinuxMouseSelection((e => { this.textarea.value = e, this.textarea.focus(), this.textarea.select() }))), this.register(this._onScroll.event((e => { this.viewport.syncScrollArea(), this._selectionService.refresh() }))), this.register((0, r.addDisposableDomListener)(this._viewportElement, "scroll", (() => this._selectionService.refresh()))), this.register(this._instantiationService.createInstance(c.BufferDecorationRenderer, this.screenElement)), this.register((0, r.addDisposableDomListener)(this.element, "mousedown", (e => this._selectionService.handleMouseDown(e)))), this.coreMouseService.areMouseEventsActive ? (this._selectionService.disable(), this.element.classList.add("enable-mouse-events")) : this._selectionService.enable(), this.options.screenReaderMode && (this._accessibilityManager.value = this._instantiationService.createInstance(B.AccessibilityManager, this)), this.register(this.optionsService.onSpecificOptionChange("screenReaderMode", (e => this._handleScreenReaderModeOptionChange(e)))), this.options.overviewRulerWidth && (this._overviewRulerRenderer = this.register(this._instantiationService.createInstance(l.OverviewRulerRenderer, this._viewportElement, this.screenElement))), this.optionsService.onSpecificOptionChange("overviewRulerWidth", (e => { !this._overviewRulerRenderer && e && this._viewportElement && this.screenElement && (this._overviewRulerRenderer = this.register(this._instantiationService.createInstance(l.OverviewRulerRenderer, this._viewportElement, this.screenElement))) })), this._charSizeService.measure(), this.refresh(0, this.rows - 1), this._initGlobal(), this.bindMouse() } _createRenderer() { return this._instantiationService.createInstance(_.DomRenderer, this, this._document, this.element, this.screenElement, this._viewportElement, this._helperContainer, this.linkifier) } bindMouse() { const e = this, t = this.element; function i(t) { const i = e._mouseService.getMouseReportCoords(t, e.screenElement); if (!i) return !1; let s, r; switch (t.overrideType || t.type) { case "mousemove": r = 32, void 0 === t.buttons ? (s = 3, void 0 !== t.button && (s = t.button < 3 ? t.button : 3)) : s = 1 & t.buttons ? 0 : 4 & t.buttons ? 1 : 2 & t.buttons ? 2 : 3; break; case "mouseup": r = 0, s = t.button < 3 ? t.button : 3; break; case "mousedown": r = 1, s = t.button < 3 ? t.button : 3; break; case "wheel": if (e._customWheelEventHandler && !1 === e._customWheelEventHandler(t)) return !1; if (0 === e.viewport.getLinesScrolled(t)) return !1; r = t.deltaY < 0 ? 0 : 1, s = 4; break; default: return !1 }return !(void 0 === r || void 0 === s || s > 4) && e.coreMouseService.triggerMouseEvent({ col: i.col, row: i.row, x: i.x, y: i.y, button: s, action: r, ctrl: t.ctrlKey, alt: t.altKey, shift: t.shiftKey }) } const s = { mouseup: null, wheel: null, mousedrag: null, mousemove: null }, n = { mouseup: e => (i(e), e.buttons || (this._document.removeEventListener("mouseup", s.mouseup), s.mousedrag && this._document.removeEventListener("mousemove", s.mousedrag)), this.cancel(e)), wheel: e => (i(e), this.cancel(e, !0)), mousedrag: e => { e.buttons && i(e) }, mousemove: e => { e.buttons || i(e) } }; this.register(this.coreMouseService.onProtocolChange((e => { e ? ("debug" === this.optionsService.rawOptions.logLevel && this._logService.debug("Binding to mouse events:", this.coreMouseService.explainEvents(e)), this.element.classList.add("enable-mouse-events"), this._selectionService.disable()) : (this._logService.debug("Unbinding from mouse events."), this.element.classList.remove("enable-mouse-events"), this._selectionService.enable()), 8 & e ? s.mousemove || (t.addEventListener("mousemove", n.mousemove), s.mousemove = n.mousemove) : (t.removeEventListener("mousemove", s.mousemove), s.mousemove = null), 16 & e ? s.wheel || (t.addEventListener("wheel", n.wheel, { passive: !1 }), s.wheel = n.wheel) : (t.removeEventListener("wheel", s.wheel), s.wheel = null), 2 & e ? s.mouseup || (s.mouseup = n.mouseup) : (this._document.removeEventListener("mouseup", s.mouseup), s.mouseup = null), 4 & e ? s.mousedrag || (s.mousedrag = n.mousedrag) : (this._document.removeEventListener("mousemove", s.mousedrag), s.mousedrag = null) }))), this.coreMouseService.activeProtocol = this.coreMouseService.activeProtocol, this.register((0, r.addDisposableDomListener)(t, "mousedown", (e => { if (e.preventDefault(), this.focus(), this.coreMouseService.areMouseEventsActive && !this._selectionService.shouldForceSelection(e)) return i(e), s.mouseup && this._document.addEventListener("mouseup", s.mouseup), s.mousedrag && this._document.addEventListener("mousemove", s.mousedrag), this.cancel(e) }))), this.register((0, r.addDisposableDomListener)(t, "wheel", (e => { if (!s.wheel) { if (this._customWheelEventHandler && !1 === this._customWheelEventHandler(e)) return !1; if (!this.buffer.hasScrollback) { const t = this.viewport.getLinesScrolled(e); if (0 === t) return; const i = R.C0.ESC + (this.coreService.decPrivateModes.applicationCursorKeys ? "O" : "[") + (e.deltaY < 0 ? "A" : "B"); let s = ""; for (let e = 0; e < Math.abs(t); e++)s += i; return this.coreService.triggerDataEvent(s, !0), this.cancel(e, !0) } return this.viewport.handleWheel(e) ? this.cancel(e) : void 0 } }), { passive: !1 })), this.register((0, r.addDisposableDomListener)(t, "touchstart", (e => { if (!this.coreMouseService.areMouseEventsActive) return this.viewport.handleTouchStart(e), this.cancel(e) }), { passive: !0 })), this.register((0, r.addDisposableDomListener)(t, "touchmove", (e => { if (!this.coreMouseService.areMouseEventsActive) return this.viewport.handleTouchMove(e) ? void 0 : this.cancel(e) }), { passive: !1 })) } refresh(e, t) { this._renderService?.refreshRows(e, t) } updateCursorStyle(e) { this._selectionService?.shouldColumnSelect(e) ? this.element.classList.add("column-select") : this.element.classList.remove("column-select") } _showCursor() { this.coreService.isCursorInitialized || (this.coreService.isCursorInitialized = !0, this.refresh(this.buffer.y, this.buffer.y)) } scrollLines(e, t, i = 0) { 1 === i ? (super.scrollLines(e, t, i), this.refresh(0, this.rows - 1)) : this.viewport?.scrollLines(e) } paste(e) { (0, s.paste)(e, this.textarea, this.coreService, this.optionsService) } attachCustomKeyEventHandler(e) { this._customKeyEventHandler = e } attachCustomWheelEventHandler(e) { this._customWheelEventHandler = e } registerLinkProvider(e) { return this._linkProviderService.registerLinkProvider(e) } registerCharacterJoiner(e) { if (!this._characterJoinerService) throw new Error("Terminal must be opened first"); const t = this._characterJoinerService.register(e); return this.refresh(0, this.rows - 1), t } deregisterCharacterJoiner(e) { if (!this._characterJoinerService) throw new Error("Terminal must be opened first"); this._characterJoinerService.deregister(e) && this.refresh(0, this.rows - 1) } get markers() { return this.buffer.markers } registerMarker(e) { return this.buffer.addMarker(this.buffer.ybase + this.buffer.y + e) } registerDecoration(e) { return this._decorationService.registerDecoration(e) } hasSelection() { return !!this._selectionService && this._selectionService.hasSelection } select(e, t, i) { this._selectionService.setSelection(e, t, i) } getSelection() { return this._selectionService ? this._selectionService.selectionText : "" } getSelectionPosition() { if (this._selectionService && this._selectionService.hasSelection) return { start: { x: this._selectionService.selectionStart[0], y: this._selectionService.selectionStart[1] }, end: { x: this._selectionService.selectionEnd[0], y: this._selectionService.selectionEnd[1] } } } clearSelection() { this._selectionService?.clearSelection() } selectAll() { this._selectionService?.selectAll() } selectLines(e, t) { this._selectionService?.selectLines(e, t) } _keyDown(e) { if (this._keyDownHandled = !1, this._keyDownSeen = !0, this._customKeyEventHandler && !1 === this._customKeyEventHandler(e)) return !1; const t = this.browser.isMac && this.options.macOptionIsMeta && e.altKey; if (!t && !this._compositionHelper.keydown(e)) return this.options.scrollOnUserInput && this.buffer.ybase !== this.buffer.ydisp && this.scrollToBottom(), !1; t || "Dead" !== e.key && "AltGraph" !== e.key || (this._unprocessedDeadKey = !0); const i = (0, M.evaluateKeyboardEvent)(e, this.coreService.decPrivateModes.applicationCursorKeys, this.browser.isMac, this.options.macOptionIsMeta); if (this.updateCursorStyle(e), 3 === i.type || 2 === i.type) { const t = this.rows - 1; return this.scrollLines(2 === i.type ? -t : t), this.cancel(e, !0) } return 1 === i.type && this.selectAll(), !!this._isThirdLevelShift(this.browser, e) || (i.cancel && this.cancel(e, !0), !i.key || !!(e.key && !e.ctrlKey && !e.altKey && !e.metaKey && 1 === e.key.length && e.key.charCodeAt(0) >= 65 && e.key.charCodeAt(0) <= 90) || (this._unprocessedDeadKey ? (this._unprocessedDeadKey = !1, !0) : (i.key !== R.C0.ETX && i.key !== R.C0.CR || (this.textarea.value = ""), this._onKey.fire({ key: i.key, domEvent: e }), this._showCursor(), this.coreService.triggerDataEvent(i.key, !0), !this.optionsService.rawOptions.screenReaderMode || e.altKey || e.ctrlKey ? this.cancel(e, !0) : void (this._keyDownHandled = !0)))) } _isThirdLevelShift(e, t) { const i = e.isMac && !this.options.macOptionIsMeta && t.altKey && !t.ctrlKey && !t.metaKey || e.isWindows && t.altKey && t.ctrlKey && !t.metaKey || e.isWindows && t.getModifierState("AltGraph"); return "keypress" === t.type ? i : i && (!t.keyCode || t.keyCode > 47) } _keyUp(e) { this._keyDownSeen = !1, this._customKeyEventHandler && !1 === this._customKeyEventHandler(e) || (function (e) { return 16 === e.keyCode || 17 === e.keyCode || 18 === e.keyCode }(e) || this.focus(), this.updateCursorStyle(e), this._keyPressHandled = !1) } _keyPress(e) { let t; if (this._keyPressHandled = !1, this._keyDownHandled) return !1; if (this._customKeyEventHandler && !1 === this._customKeyEventHandler(e)) return !1; if (this.cancel(e), e.charCode) t = e.charCode; else if (null === e.which || void 0 === e.which) t = e.keyCode; else { if (0 === e.which || 0 === e.charCode) return !1; t = e.which } return !(!t || (e.altKey || e.ctrlKey || e.metaKey) && !this._isThirdLevelShift(this.browser, e) || (t = String.fromCharCode(t), this._onKey.fire({ key: t, domEvent: e }), this._showCursor(), this.coreService.triggerDataEvent(t, !0), this._keyPressHandled = !0, this._unprocessedDeadKey = !1, 0)) } _inputEvent(e) { if (e.data && "insertText" === e.inputType && (!e.composed || !this._keyDownSeen) && !this.optionsService.rawOptions.screenReaderMode) { if (this._keyPressHandled) return !1; this._unprocessedDeadKey = !1; const t = e.data; return this.coreService.triggerDataEvent(t, !0), this.cancel(e), !0 } return !1 } resize(e, t) { e !== this.cols || t !== this.rows ? super.resize(e, t) : this._charSizeService && !this._charSizeService.hasValidSize && this._charSizeService.measure() } _afterResize(e, t) { this._charSizeService?.measure(), this.viewport?.syncScrollArea(!0) } clear() { if (0 !== this.buffer.ybase || 0 !== this.buffer.y) { this.buffer.clearAllMarkers(), this.buffer.lines.set(0, this.buffer.lines.get(this.buffer.ybase + this.buffer.y)), this.buffer.lines.length = 1, this.buffer.ydisp = 0, this.buffer.ybase = 0, this.buffer.y = 0; for (let e = 1; e < this.rows; e++)this.buffer.lines.push(this.buffer.getBlankLine(E.DEFAULT_ATTR_DATA)); this._onScroll.fire({ position: this.buffer.ydisp, source: 0 }), this.viewport?.reset(), this.refresh(0, this.rows - 1) } } reset() { this.options.rows = this.rows, this.options.cols = this.cols; const e = this._customKeyEventHandler; this._setup(), super.reset(), this._selectionService?.reset(), this._decorationService.reset(), this.viewport?.reset(), this._customKeyEventHandler = e, this.refresh(0, this.rows - 1) } clearTextureAtlas() { this._renderService?.clearTextureAtlas() } _reportFocus() { this.element?.classList.contains("focus") ? this.coreService.triggerDataEvent(R.C0.ESC + "[I") : this.coreService.triggerDataEvent(R.C0.ESC + "[O") } _reportWindowsOptions(e) { if (this._renderService) switch (e) { case T.WindowsOptionsReportType.GET_WIN_SIZE_PIXELS: const e = this._renderService.dimensions.css.canvas.width.toFixed(0), t = this._renderService.dimensions.css.canvas.height.toFixed(0); this.coreService.triggerDataEvent(`${R.C0.ESC}[4;${t};${e}t`); break; case T.WindowsOptionsReportType.GET_CELL_SIZE_PIXELS: const i = this._renderService.dimensions.css.cell.width.toFixed(0), s = this._renderService.dimensions.css.cell.height.toFixed(0); this.coreService.triggerDataEvent(`${R.C0.ESC}[6;${s};${i}t`) } } cancel(e, t) { if (this.options.cancelEvents || t) return e.preventDefault(), e.stopPropagation(), !1 } } t.Terminal = P }, 9924: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.TimeBasedDebouncer = void 0, t.TimeBasedDebouncer = class { constructor(e, t = 1e3) { this._renderCallback = e, this._debounceThresholdMS = t, this._lastRefreshMs = 0, this._additionalRefreshRequested = !1 } dispose() { this._refreshTimeoutID && clearTimeout(this._refreshTimeoutID) } refresh(e, t, i) { this._rowCount = i, e = void 0 !== e ? e : 0, t = void 0 !== t ? t : this._rowCount - 1, this._rowStart = void 0 !== this._rowStart ? Math.min(this._rowStart, e) : e, this._rowEnd = void 0 !== this._rowEnd ? Math.max(this._rowEnd, t) : t; const s = Date.now(); if (s - this._lastRefreshMs >= this._debounceThresholdMS) this._lastRefreshMs = s, this._innerRefresh(); else if (!this._additionalRefreshRequested) { const e = s - this._lastRefreshMs, t = this._debounceThresholdMS - e; this._additionalRefreshRequested = !0, this._refreshTimeoutID = window.setTimeout((() => { this._lastRefreshMs = Date.now(), this._innerRefresh(), this._additionalRefreshRequested = !1, this._refreshTimeoutID = void 0 }), t) } } _innerRefresh() { if (void 0 === this._rowStart || void 0 === this._rowEnd || void 0 === this._rowCount) return; const e = Math.max(this._rowStart, 0), t = Math.min(this._rowEnd, this._rowCount - 1); this._rowStart = void 0, this._rowEnd = void 0, this._renderCallback(e, t) } } }, 1680: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.Viewport = void 0; const n = i(3656), o = i(4725), a = i(8460), h = i(844), c = i(2585); let l = t.Viewport = class extends h.Disposable { constructor(e, t, i, s, r, o, h, c) { super(), this._viewportElement = e, this._scrollArea = t, this._bufferService = i, this._optionsService = s, this._charSizeService = r, this._renderService = o, this._coreBrowserService = h, this.scrollBarWidth = 0, this._currentRowHeight = 0, this._currentDeviceCellHeight = 0, this._lastRecordedBufferLength = 0, this._lastRecordedViewportHeight = 0, this._lastRecordedBufferHeight = 0, this._lastTouchY = 0, this._lastScrollTop = 0, this._wheelPartialScroll = 0, this._refreshAnimationFrame = null, this._ignoreNextScrollEvent = !1, this._smoothScrollState = { startTime: 0, origin: -1, target: -1 }, this._onRequestScrollLines = this.register(new a.EventEmitter), this.onRequestScrollLines = this._onRequestScrollLines.event, this.scrollBarWidth = this._viewportElement.offsetWidth - this._scrollArea.offsetWidth || 15, this.register((0, n.addDisposableDomListener)(this._viewportElement, "scroll", this._handleScroll.bind(this))), this._activeBuffer = this._bufferService.buffer, this.register(this._bufferService.buffers.onBufferActivate((e => this._activeBuffer = e.activeBuffer))), this._renderDimensions = this._renderService.dimensions, this.register(this._renderService.onDimensionsChange((e => this._renderDimensions = e))), this._handleThemeChange(c.colors), this.register(c.onChangeColors((e => this._handleThemeChange(e)))), this.register(this._optionsService.onSpecificOptionChange("scrollback", (() => this.syncScrollArea()))), setTimeout((() => this.syncScrollArea())) } _handleThemeChange(e) { this._viewportElement.style.backgroundColor = e.background.css } reset() { this._currentRowHeight = 0, this._currentDeviceCellHeight = 0, this._lastRecordedBufferLength = 0, this._lastRecordedViewportHeight = 0, this._lastRecordedBufferHeight = 0, this._lastTouchY = 0, this._lastScrollTop = 0, this._coreBrowserService.window.requestAnimationFrame((() => this.syncScrollArea())) } _refresh(e) { if (e) return this._innerRefresh(), void (null !== this._refreshAnimationFrame && this._coreBrowserService.window.cancelAnimationFrame(this._refreshAnimationFrame)); null === this._refreshAnimationFrame && (this._refreshAnimationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._innerRefresh()))) } _innerRefresh() { if (this._charSizeService.height > 0) { this._currentRowHeight = this._renderDimensions.device.cell.height / this._coreBrowserService.dpr, this._currentDeviceCellHeight = this._renderDimensions.device.cell.height, this._lastRecordedViewportHeight = this._viewportElement.offsetHeight; const e = Math.round(this._currentRowHeight * this._lastRecordedBufferLength) + (this._lastRecordedViewportHeight - this._renderDimensions.css.canvas.height); this._lastRecordedBufferHeight !== e && (this._lastRecordedBufferHeight = e, this._scrollArea.style.height = this._lastRecordedBufferHeight + "px") } const e = this._bufferService.buffer.ydisp * this._currentRowHeight; this._viewportElement.scrollTop !== e && (this._ignoreNextScrollEvent = !0, this._viewportElement.scrollTop = e), this._refreshAnimationFrame = null } syncScrollArea(e = !1) { if (this._lastRecordedBufferLength !== this._bufferService.buffer.lines.length) return this._lastRecordedBufferLength = this._bufferService.buffer.lines.length, void this._refresh(e); this._lastRecordedViewportHeight === this._renderService.dimensions.css.canvas.height && this._lastScrollTop === this._activeBuffer.ydisp * this._currentRowHeight && this._renderDimensions.device.cell.height === this._currentDeviceCellHeight || this._refresh(e) } _handleScroll(e) { if (this._lastScrollTop = this._viewportElement.scrollTop, !this._viewportElement.offsetParent) return; if (this._ignoreNextScrollEvent) return this._ignoreNextScrollEvent = !1, void this._onRequestScrollLines.fire({ amount: 0, suppressScrollEvent: !0 }); const t = Math.round(this._lastScrollTop / this._currentRowHeight) - this._bufferService.buffer.ydisp; this._onRequestScrollLines.fire({ amount: t, suppressScrollEvent: !0 }) } _smoothScroll() { if (this._isDisposed || -1 === this._smoothScrollState.origin || -1 === this._smoothScrollState.target) return; const e = this._smoothScrollPercent(); this._viewportElement.scrollTop = this._smoothScrollState.origin + Math.round(e * (this._smoothScrollState.target - this._smoothScrollState.origin)), e < 1 ? this._coreBrowserService.window.requestAnimationFrame((() => this._smoothScroll())) : this._clearSmoothScrollState() } _smoothScrollPercent() { return this._optionsService.rawOptions.smoothScrollDuration && this._smoothScrollState.startTime ? Math.max(Math.min((Date.now() - this._smoothScrollState.startTime) / this._optionsService.rawOptions.smoothScrollDuration, 1), 0) : 1 } _clearSmoothScrollState() { this._smoothScrollState.startTime = 0, this._smoothScrollState.origin = -1, this._smoothScrollState.target = -1 } _bubbleScroll(e, t) { const i = this._viewportElement.scrollTop + this._lastRecordedViewportHeight; return !(t < 0 && 0 !== this._viewportElement.scrollTop || t > 0 && i < this._lastRecordedBufferHeight) || (e.cancelable && e.preventDefault(), !1) } handleWheel(e) { const t = this._getPixelsScrolled(e); return 0 !== t && (this._optionsService.rawOptions.smoothScrollDuration ? (this._smoothScrollState.startTime = Date.now(), this._smoothScrollPercent() < 1 ? (this._smoothScrollState.origin = this._viewportElement.scrollTop, -1 === this._smoothScrollState.target ? this._smoothScrollState.target = this._viewportElement.scrollTop + t : this._smoothScrollState.target += t, this._smoothScrollState.target = Math.max(Math.min(this._smoothScrollState.target, this._viewportElement.scrollHeight), 0), this._smoothScroll()) : this._clearSmoothScrollState()) : this._viewportElement.scrollTop += t, this._bubbleScroll(e, t)) } scrollLines(e) { if (0 !== e) if (this._optionsService.rawOptions.smoothScrollDuration) { const t = e * this._currentRowHeight; this._smoothScrollState.startTime = Date.now(), this._smoothScrollPercent() < 1 ? (this._smoothScrollState.origin = this._viewportElement.scrollTop, this._smoothScrollState.target = this._smoothScrollState.origin + t, this._smoothScrollState.target = Math.max(Math.min(this._smoothScrollState.target, this._viewportElement.scrollHeight), 0), this._smoothScroll()) : this._clearSmoothScrollState() } else this._onRequestScrollLines.fire({ amount: e, suppressScrollEvent: !1 }) } _getPixelsScrolled(e) { if (0 === e.deltaY || e.shiftKey) return 0; let t = this._applyScrollModifier(e.deltaY, e); return e.deltaMode === WheelEvent.DOM_DELTA_LINE ? t *= this._currentRowHeight : e.deltaMode === WheelEvent.DOM_DELTA_PAGE && (t *= this._currentRowHeight * this._bufferService.rows), t } getBufferElements(e, t) { let i, s = ""; const r = [], n = t ?? this._bufferService.buffer.lines.length, o = this._bufferService.buffer.lines; for (let t = e; t < n; t++) { const e = o.get(t); if (!e) continue; const n = o.get(t + 1)?.isWrapped; if (s += e.translateToString(!n), !n || t === o.length - 1) { const e = document.createElement("div"); e.textContent = s, r.push(e), s.length > 0 && (i = e), s = "" } } return { bufferElements: r, cursorElement: i } } getLinesScrolled(e) { if (0 === e.deltaY || e.shiftKey) return 0; let t = this._applyScrollModifier(e.deltaY, e); return e.deltaMode === WheelEvent.DOM_DELTA_PIXEL ? (t /= this._currentRowHeight + 0, this._wheelPartialScroll += t, t = Math.floor(Math.abs(this._wheelPartialScroll)) * (this._wheelPartialScroll > 0 ? 1 : -1), this._wheelPartialScroll %= 1) : e.deltaMode === WheelEvent.DOM_DELTA_PAGE && (t *= this._bufferService.rows), t } _applyScrollModifier(e, t) { const i = this._optionsService.rawOptions.fastScrollModifier; return "alt" === i && t.altKey || "ctrl" === i && t.ctrlKey || "shift" === i && t.shiftKey ? e * this._optionsService.rawOptions.fastScrollSensitivity * this._optionsService.rawOptions.scrollSensitivity : e * this._optionsService.rawOptions.scrollSensitivity } handleTouchStart(e) { this._lastTouchY = e.touches[0].pageY } handleTouchMove(e) { const t = this._lastTouchY - e.touches[0].pageY; return this._lastTouchY = e.touches[0].pageY, 0 !== t && (this._viewportElement.scrollTop += t, this._bubbleScroll(e, t)) } }; t.Viewport = l = s([r(2, c.IBufferService), r(3, c.IOptionsService), r(4, o.ICharSizeService), r(5, o.IRenderService), r(6, o.ICoreBrowserService), r(7, o.IThemeService)], l) }, 3107: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.BufferDecorationRenderer = void 0; const n = i(4725), o = i(844), a = i(2585); let h = t.BufferDecorationRenderer = class extends o.Disposable { constructor(e, t, i, s, r) { super(), this._screenElement = e, this._bufferService = t, this._coreBrowserService = i, this._decorationService = s, this._renderService = r, this._decorationElements = new Map, this._altBufferIsActive = !1, this._dimensionsChanged = !1, this._container = document.createElement("div"), this._container.classList.add("xterm-decoration-container"), this._screenElement.appendChild(this._container), this.register(this._renderService.onRenderedViewportChange((() => this._doRefreshDecorations()))), this.register(this._renderService.onDimensionsChange((() => { this._dimensionsChanged = !0, this._queueRefresh() }))), this.register(this._coreBrowserService.onDprChange((() => this._queueRefresh()))), this.register(this._bufferService.buffers.onBufferActivate((() => { this._altBufferIsActive = this._bufferService.buffer === this._bufferService.buffers.alt }))), this.register(this._decorationService.onDecorationRegistered((() => this._queueRefresh()))), this.register(this._decorationService.onDecorationRemoved((e => this._removeDecoration(e)))), this.register((0, o.toDisposable)((() => { this._container.remove(), this._decorationElements.clear() }))) } _queueRefresh() { void 0 === this._animationFrame && (this._animationFrame = this._renderService.addRefreshCallback((() => { this._doRefreshDecorations(), this._animationFrame = void 0 }))) } _doRefreshDecorations() { for (const e of this._decorationService.decorations) this._renderDecoration(e); this._dimensionsChanged = !1 } _renderDecoration(e) { this._refreshStyle(e), this._dimensionsChanged && this._refreshXPosition(e) } _createElement(e) { const t = this._coreBrowserService.mainDocument.createElement("div"); t.classList.add("xterm-decoration"), t.classList.toggle("xterm-decoration-top-layer", "top" === e?.options?.layer), t.style.width = `${Math.round((e.options.width || 1) * this._renderService.dimensions.css.cell.width)}px`, t.style.height = (e.options.height || 1) * this._renderService.dimensions.css.cell.height + "px", t.style.top = (e.marker.line - this._bufferService.buffers.active.ydisp) * this._renderService.dimensions.css.cell.height + "px", t.style.lineHeight = `${this._renderService.dimensions.css.cell.height}px`; const i = e.options.x ?? 0; return i && i > this._bufferService.cols && (t.style.display = "none"), this._refreshXPosition(e, t), t } _refreshStyle(e) { const t = e.marker.line - this._bufferService.buffers.active.ydisp; if (t < 0 || t >= this._bufferService.rows) e.element && (e.element.style.display = "none", e.onRenderEmitter.fire(e.element)); else { let i = this._decorationElements.get(e); i || (i = this._createElement(e), e.element = i, this._decorationElements.set(e, i), this._container.appendChild(i), e.onDispose((() => { this._decorationElements.delete(e), i.remove() }))), i.style.top = t * this._renderService.dimensions.css.cell.height + "px", i.style.display = this._altBufferIsActive ? "none" : "block", e.onRenderEmitter.fire(i) } } _refreshXPosition(e, t = e.element) { if (!t) return; const i = e.options.x ?? 0; "right" === (e.options.anchor || "left") ? t.style.right = i ? i * this._renderService.dimensions.css.cell.width + "px" : "" : t.style.left = i ? i * this._renderService.dimensions.css.cell.width + "px" : "" } _removeDecoration(e) { this._decorationElements.get(e)?.remove(), this._decorationElements.delete(e), e.dispose() } }; t.BufferDecorationRenderer = h = s([r(1, a.IBufferService), r(2, n.ICoreBrowserService), r(3, a.IDecorationService), r(4, n.IRenderService)], h) }, 5871: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.ColorZoneStore = void 0, t.ColorZoneStore = class { constructor() { this._zones = [], this._zonePool = [], this._zonePoolIndex = 0, this._linePadding = { full: 0, left: 0, center: 0, right: 0 } } get zones() { return this._zonePool.length = Math.min(this._zonePool.length, this._zones.length), this._zones } clear() { this._zones.length = 0, this._zonePoolIndex = 0 } addDecoration(e) { if (e.options.overviewRulerOptions) { for (const t of this._zones) if (t.color === e.options.overviewRulerOptions.color && t.position === e.options.overviewRulerOptions.position) { if (this._lineIntersectsZone(t, e.marker.line)) return; if (this._lineAdjacentToZone(t, e.marker.line, e.options.overviewRulerOptions.position)) return void this._addLineToZone(t, e.marker.line) } if (this._zonePoolIndex < this._zonePool.length) return this._zonePool[this._zonePoolIndex].color = e.options.overviewRulerOptions.color, this._zonePool[this._zonePoolIndex].position = e.options.overviewRulerOptions.position, this._zonePool[this._zonePoolIndex].startBufferLine = e.marker.line, this._zonePool[this._zonePoolIndex].endBufferLine = e.marker.line, void this._zones.push(this._zonePool[this._zonePoolIndex++]); this._zones.push({ color: e.options.overviewRulerOptions.color, position: e.options.overviewRulerOptions.position, startBufferLine: e.marker.line, endBufferLine: e.marker.line }), this._zonePool.push(this._zones[this._zones.length - 1]), this._zonePoolIndex++ } } setPadding(e) { this._linePadding = e } _lineIntersectsZone(e, t) { return t >= e.startBufferLine && t <= e.endBufferLine } _lineAdjacentToZone(e, t, i) { return t >= e.startBufferLine - this._linePadding[i || "full"] && t <= e.endBufferLine + this._linePadding[i || "full"] } _addLineToZone(e, t) { e.startBufferLine = Math.min(e.startBufferLine, t), e.endBufferLine = Math.max(e.endBufferLine, t) } } }, 5744: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.OverviewRulerRenderer = void 0; const n = i(5871), o = i(4725), a = i(844), h = i(2585), c = { full: 0, left: 0, center: 0, right: 0 }, l = { full: 0, left: 0, center: 0, right: 0 }, d = { full: 0, left: 0, center: 0, right: 0 }; let _ = t.OverviewRulerRenderer = class extends a.Disposable { get _width() { return this._optionsService.options.overviewRulerWidth || 0 } constructor(e, t, i, s, r, o, h) { super(), this._viewportElement = e, this._screenElement = t, this._bufferService = i, this._decorationService = s, this._renderService = r, this._optionsService = o, this._coreBrowserService = h, this._colorZoneStore = new n.ColorZoneStore, this._shouldUpdateDimensions = !0, this._shouldUpdateAnchor = !0, this._lastKnownBufferLength = 0, this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add("xterm-decoration-overview-ruler"), this._refreshCanvasDimensions(), this._viewportElement.parentElement?.insertBefore(this._canvas, this._viewportElement); const c = this._canvas.getContext("2d"); if (!c) throw new Error("Ctx cannot be null"); this._ctx = c, this._registerDecorationListeners(), this._registerBufferChangeListeners(), this._registerDimensionChangeListeners(), this.register((0, a.toDisposable)((() => { this._canvas?.remove() }))) } _registerDecorationListeners() { this.register(this._decorationService.onDecorationRegistered((() => this._queueRefresh(void 0, !0)))), this.register(this._decorationService.onDecorationRemoved((() => this._queueRefresh(void 0, !0)))) } _registerBufferChangeListeners() { this.register(this._renderService.onRenderedViewportChange((() => this._queueRefresh()))), this.register(this._bufferService.buffers.onBufferActivate((() => { this._canvas.style.display = this._bufferService.buffer === this._bufferService.buffers.alt ? "none" : "block" }))), this.register(this._bufferService.onScroll((() => { this._lastKnownBufferLength !== this._bufferService.buffers.normal.lines.length && (this._refreshDrawHeightConstants(), this._refreshColorZonePadding()) }))) } _registerDimensionChangeListeners() { this.register(this._renderService.onRender((() => { this._containerHeight && this._containerHeight === this._screenElement.clientHeight || (this._queueRefresh(!0), this._containerHeight = this._screenElement.clientHeight) }))), this.register(this._optionsService.onSpecificOptionChange("overviewRulerWidth", (() => this._queueRefresh(!0)))), this.register(this._coreBrowserService.onDprChange((() => this._queueRefresh(!0)))), this._queueRefresh(!0) } _refreshDrawConstants() { const e = Math.floor(this._canvas.width / 3), t = Math.ceil(this._canvas.width / 3); l.full = this._canvas.width, l.left = e, l.center = t, l.right = e, this._refreshDrawHeightConstants(), d.full = 0, d.left = 0, d.center = l.left, d.right = l.left + l.center } _refreshDrawHeightConstants() { c.full = Math.round(2 * this._coreBrowserService.dpr); const e = this._canvas.height / this._bufferService.buffer.lines.length, t = Math.round(Math.max(Math.min(e, 12), 6) * this._coreBrowserService.dpr); c.left = t, c.center = t, c.right = t } _refreshColorZonePadding() { this._colorZoneStore.setPadding({ full: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.full), left: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.left), center: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.center), right: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.right) }), this._lastKnownBufferLength = this._bufferService.buffers.normal.lines.length } _refreshCanvasDimensions() { this._canvas.style.width = `${this._width}px`, this._canvas.width = Math.round(this._width * this._coreBrowserService.dpr), this._canvas.style.height = `${this._screenElement.clientHeight}px`, this._canvas.height = Math.round(this._screenElement.clientHeight * this._coreBrowserService.dpr), this._refreshDrawConstants(), this._refreshColorZonePadding() } _refreshDecorations() { this._shouldUpdateDimensions && this._refreshCanvasDimensions(), this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height), this._colorZoneStore.clear(); for (const e of this._decorationService.decorations) this._colorZoneStore.addDecoration(e); this._ctx.lineWidth = 1; const e = this._colorZoneStore.zones; for (const t of e) "full" !== t.position && this._renderColorZone(t); for (const t of e) "full" === t.position && this._renderColorZone(t); this._shouldUpdateDimensions = !1, this._shouldUpdateAnchor = !1 } _renderColorZone(e) { this._ctx.fillStyle = e.color, this._ctx.fillRect(d[e.position || "full"], Math.round((this._canvas.height - 1) * (e.startBufferLine / this._bufferService.buffers.active.lines.length) - c[e.position || "full"] / 2), l[e.position || "full"], Math.round((this._canvas.height - 1) * ((e.endBufferLine - e.startBufferLine) / this._bufferService.buffers.active.lines.length) + c[e.position || "full"])) } _queueRefresh(e, t) { this._shouldUpdateDimensions = e || this._shouldUpdateDimensions, this._shouldUpdateAnchor = t || this._shouldUpdateAnchor, void 0 === this._animationFrame && (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { this._refreshDecorations(), this._animationFrame = void 0 }))) } }; t.OverviewRulerRenderer = _ = s([r(2, h.IBufferService), r(3, h.IDecorationService), r(4, o.IRenderService), r(5, h.IOptionsService), r(6, o.ICoreBrowserService)], _) }, 2950: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.CompositionHelper = void 0; const n = i(4725), o = i(2585), a = i(2584); let h = t.CompositionHelper = class { get isComposing() { return this._isComposing } constructor(e, t, i, s, r, n) { this._textarea = e, this._compositionView = t, this._bufferService = i, this._optionsService = s, this._coreService = r, this._renderService = n, this._isComposing = !1, this._isSendingComposition = !1, this._compositionPosition = { start: 0, end: 0 }, this._dataAlreadySent = "" } compositionstart() { this._isComposing = !0, this._compositionPosition.start = this._textarea.value.length, this._compositionView.textContent = "", this._dataAlreadySent = "", this._compositionView.classList.add("active") } compositionupdate(e) { this._compositionView.textContent = e.data, this.updateCompositionElements(), setTimeout((() => { this._compositionPosition.end = this._textarea.value.length }), 0) } compositionend() { this._finalizeComposition(!0) } keydown(e) { if (this._isComposing || this._isSendingComposition) { if (229 === e.keyCode) return !1; if (16 === e.keyCode || 17 === e.keyCode || 18 === e.keyCode) return !1; this._finalizeComposition(!1) } return 229 !== e.keyCode || (this._handleAnyTextareaChanges(), !1) } _finalizeComposition(e) { if (this._compositionView.classList.remove("active"), this._isComposing = !1, e) { const e = { start: this._compositionPosition.start, end: this._compositionPosition.end }; this._isSendingComposition = !0, setTimeout((() => { if (this._isSendingComposition) { let t; this._isSendingComposition = !1, e.start += this._dataAlreadySent.length, t = this._isComposing ? this._textarea.value.substring(e.start, e.end) : this._textarea.value.substring(e.start), t.length > 0 && this._coreService.triggerDataEvent(t, !0) } }), 0) } else { this._isSendingComposition = !1; const e = this._textarea.value.substring(this._compositionPosition.start, this._compositionPosition.end); this._coreService.triggerDataEvent(e, !0) } } _handleAnyTextareaChanges() { const e = this._textarea.value; setTimeout((() => { if (!this._isComposing) { const t = this._textarea.value, i = t.replace(e, ""); this._dataAlreadySent = i, t.length > e.length ? this._coreService.triggerDataEvent(i, !0) : t.length < e.length ? this._coreService.triggerDataEvent(`${a.C0.DEL}`, !0) : t.length === e.length && t !== e && this._coreService.triggerDataEvent(t, !0) } }), 0) } updateCompositionElements(e) { if (this._isComposing) { if (this._bufferService.buffer.isCursorInViewport) { const e = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1), t = this._renderService.dimensions.css.cell.height, i = this._bufferService.buffer.y * this._renderService.dimensions.css.cell.height, s = e * this._renderService.dimensions.css.cell.width; this._compositionView.style.left = s + "px", this._compositionView.style.top = i + "px", this._compositionView.style.height = t + "px", this._compositionView.style.lineHeight = t + "px", this._compositionView.style.fontFamily = this._optionsService.rawOptions.fontFamily, this._compositionView.style.fontSize = this._optionsService.rawOptions.fontSize + "px"; const r = this._compositionView.getBoundingClientRect(); this._textarea.style.left = s + "px", this._textarea.style.top = i + "px", this._textarea.style.width = Math.max(r.width, 1) + "px", this._textarea.style.height = Math.max(r.height, 1) + "px", this._textarea.style.lineHeight = r.height + "px" } e || setTimeout((() => this.updateCompositionElements(!0)), 0) } } }; t.CompositionHelper = h = s([r(2, o.IBufferService), r(3, o.IOptionsService), r(4, o.ICoreService), r(5, n.IRenderService)], h) }, 9806: (e, t) => { function i(e, t, i) { const s = i.getBoundingClientRect(), r = e.getComputedStyle(i), n = parseInt(r.getPropertyValue("padding-left")), o = parseInt(r.getPropertyValue("padding-top")); return [t.clientX - s.left - n, t.clientY - s.top - o] } Object.defineProperty(t, "__esModule", { value: !0 }), t.getCoords = t.getCoordsRelativeToElement = void 0, t.getCoordsRelativeToElement = i, t.getCoords = function (e, t, s, r, n, o, a, h, c) { if (!o) return; const l = i(e, t, s); return l ? (l[0] = Math.ceil((l[0] + (c ? a / 2 : 0)) / a), l[1] = Math.ceil(l[1] / h), l[0] = Math.min(Math.max(l[0], 1), r + (c ? 1 : 0)), l[1] = Math.min(Math.max(l[1], 1), n), l) : void 0 } }, 9504: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.moveToCellSequence = void 0; const s = i(2584); function r(e, t, i, s) { const r = e - n(e, i), a = t - n(t, i), l = Math.abs(r - a) - function (e, t, i) { let s = 0; const r = e - n(e, i), a = t - n(t, i); for (let n = 0; n < Math.abs(r - a); n++) { const a = "A" === o(e, t) ? -1 : 1, h = i.buffer.lines.get(r + a * n); h?.isWrapped && s++ } return s }(e, t, i); return c(l, h(o(e, t), s)) } function n(e, t) { let i = 0, s = t.buffer.lines.get(e), r = s?.isWrapped; for (; r && e >= 0 && e < t.rows;)i++, s = t.buffer.lines.get(--e), r = s?.isWrapped; return i } function o(e, t) { return e > t ? "A" : "B" } function a(e, t, i, s, r, n) { let o = e, a = t, h = ""; for (; o !== i || a !== s;)o += r ? 1 : -1, r && o > n.cols - 1 ? (h += n.buffer.translateBufferLineToString(a, !1, e, o), o = 0, e = 0, a++) : !r && o < 0 && (h += n.buffer.translateBufferLineToString(a, !1, 0, e + 1), o = n.cols - 1, e = o, a--); return h + n.buffer.translateBufferLineToString(a, !1, e, o) } function h(e, t) { const i = t ? "O" : "["; return s.C0.ESC + i + e } function c(e, t) { e = Math.floor(e); let i = ""; for (let s = 0; s < e; s++)i += t; return i } t.moveToCellSequence = function (e, t, i, s) { const o = i.buffer.x, l = i.buffer.y; if (!i.buffer.hasScrollback) return function (e, t, i, s, o, l) { return 0 === r(t, s, o, l).length ? "" : c(a(e, t, e, t - n(t, o), !1, o).length, h("D", l)) }(o, l, 0, t, i, s) + r(l, t, i, s) + function (e, t, i, s, o, l) { let d; d = r(t, s, o, l).length > 0 ? s - n(s, o) : t; const _ = s, u = function (e, t, i, s, o, a) { let h; return h = r(i, s, o, a).length > 0 ? s - n(s, o) : t, e < i && h <= s || e >= i && h < s ? "C" : "D" }(e, t, i, s, o, l); return c(a(e, d, i, _, "C" === u, o).length, h(u, l)) }(o, l, e, t, i, s); let d; if (l === t) return d = o > e ? "D" : "C", c(Math.abs(o - e), h(d, s)); d = l > t ? "D" : "C"; const _ = Math.abs(l - t); return c(function (e, t) { return t.cols - e }(l > t ? e : o, i) + (_ - 1) * i.cols + 1 + ((l > t ? o : e) - 1), h(d, s)) } }, 1296: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.DomRenderer = void 0; const n = i(3787), o = i(2550), a = i(2223), h = i(6171), c = i(6052), l = i(4725), d = i(8055), _ = i(8460), u = i(844), f = i(2585), v = "xterm-dom-renderer-owner-", g = "xterm-rows", p = "xterm-fg-", m = "xterm-bg-", C = "xterm-focus", S = "xterm-selection"; let b = 1, w = t.DomRenderer = class extends u.Disposable { constructor(e, t, i, s, r, a, l, d, f, p, m, C, w) { super(), this._terminal = e, this._document = t, this._element = i, this._screenElement = s, this._viewportElement = r, this._helperContainer = a, this._linkifier2 = l, this._charSizeService = f, this._optionsService = p, this._bufferService = m, this._coreBrowserService = C, this._themeService = w, this._terminalClass = b++, this._rowElements = [], this._selectionRenderModel = (0, c.createSelectionRenderModel)(), this.onRequestRedraw = this.register(new _.EventEmitter).event, this._rowContainer = this._document.createElement("div"), this._rowContainer.classList.add(g), this._rowContainer.style.lineHeight = "normal", this._rowContainer.setAttribute("aria-hidden", "true"), this._refreshRowElements(this._bufferService.cols, this._bufferService.rows), this._selectionContainer = this._document.createElement("div"), this._selectionContainer.classList.add(S), this._selectionContainer.setAttribute("aria-hidden", "true"), this.dimensions = (0, h.createRenderDimensions)(), this._updateDimensions(), this.register(this._optionsService.onOptionChange((() => this._handleOptionsChanged()))), this.register(this._themeService.onChangeColors((e => this._injectCss(e)))), this._injectCss(this._themeService.colors), this._rowFactory = d.createInstance(n.DomRendererRowFactory, document), this._element.classList.add(v + this._terminalClass), this._screenElement.appendChild(this._rowContainer), this._screenElement.appendChild(this._selectionContainer), this.register(this._linkifier2.onShowLinkUnderline((e => this._handleLinkHover(e)))), this.register(this._linkifier2.onHideLinkUnderline((e => this._handleLinkLeave(e)))), this.register((0, u.toDisposable)((() => { this._element.classList.remove(v + this._terminalClass), this._rowContainer.remove(), this._selectionContainer.remove(), this._widthCache.dispose(), this._themeStyleElement.remove(), this._dimensionsStyleElement.remove() }))), this._widthCache = new o.WidthCache(this._document, this._helperContainer), this._widthCache.setFont(this._optionsService.rawOptions.fontFamily, this._optionsService.rawOptions.fontSize, this._optionsService.rawOptions.fontWeight, this._optionsService.rawOptions.fontWeightBold), this._setDefaultSpacing() } _updateDimensions() { const e = this._coreBrowserService.dpr; this.dimensions.device.char.width = this._charSizeService.width * e, this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * e), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.left = 0, this.dimensions.device.char.top = 0, this.dimensions.device.canvas.width = this.dimensions.device.cell.width * this._bufferService.cols, this.dimensions.device.canvas.height = this.dimensions.device.cell.height * this._bufferService.rows, this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / e), this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / e), this.dimensions.css.cell.width = this.dimensions.css.canvas.width / this._bufferService.cols, this.dimensions.css.cell.height = this.dimensions.css.canvas.height / this._bufferService.rows; for (const e of this._rowElements) e.style.width = `${this.dimensions.css.canvas.width}px`, e.style.height = `${this.dimensions.css.cell.height}px`, e.style.lineHeight = `${this.dimensions.css.cell.height}px`, e.style.overflow = "hidden"; this._dimensionsStyleElement || (this._dimensionsStyleElement = this._document.createElement("style"), this._screenElement.appendChild(this._dimensionsStyleElement)); const t = `${this._terminalSelector} .${g} span { display: inline-block; height: 100%; vertical-align: top;}`; this._dimensionsStyleElement.textContent = t, this._selectionContainer.style.height = this._viewportElement.style.height, this._screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._screenElement.style.height = `${this.dimensions.css.canvas.height}px` } _injectCss(e) { this._themeStyleElement || (this._themeStyleElement = this._document.createElement("style"), this._screenElement.appendChild(this._themeStyleElement)); let t = `${this._terminalSelector} .${g} { color: ${e.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px; font-kerning: none; white-space: pre}`; t += `${this._terminalSelector} .${g} .xterm-dim { color: ${d.color.multiplyOpacity(e.foreground, .5).css};}`, t += `${this._terminalSelector} span:not(.xterm-bold) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.xterm-bold { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.xterm-italic { font-style: italic;}`; const i = `blink_underline_${this._terminalClass}`, s = `blink_bar_${this._terminalClass}`, r = `blink_block_${this._terminalClass}`; t += `@keyframes ${i} { 50% { border-bottom-style: hidden; }}`, t += `@keyframes ${s} { 50% { box-shadow: none; }}`, t += `@keyframes ${r} { 0% { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css}; } 50% { background-color: inherit; color: ${e.cursor.css}; }}`, t += `${this._terminalSelector} .${g}.${C} .xterm-cursor.xterm-cursor-blink.xterm-cursor-underline { animation: ${i} 1s step-end infinite;}${this._terminalSelector} .${g}.${C} .xterm-cursor.xterm-cursor-blink.xterm-cursor-bar { animation: ${s} 1s step-end infinite;}${this._terminalSelector} .${g}.${C} .xterm-cursor.xterm-cursor-blink.xterm-cursor-block { animation: ${r} 1s step-end infinite;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-block { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css};}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-block:not(.xterm-cursor-blink) { background-color: ${e.cursor.css} !important; color: ${e.cursorAccent.css} !important;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-outline { outline: 1px solid ${e.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-bar { box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${e.cursor.css} inset;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-underline { border-bottom: 1px ${e.cursor.css}; border-bottom-style: solid; height: calc(100% - 1px);}`, t += `${this._terminalSelector} .${S} { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .${S} div { position: absolute; background-color: ${e.selectionBackgroundOpaque.css};}${this._terminalSelector} .${S} div { position: absolute; background-color: ${e.selectionInactiveBackgroundOpaque.css};}`; for (const [i, s] of e.ansi.entries()) t += `${this._terminalSelector} .${p}${i} { color: ${s.css}; }${this._terminalSelector} .${p}${i}.xterm-dim { color: ${d.color.multiplyOpacity(s, .5).css}; }${this._terminalSelector} .${m}${i} { background-color: ${s.css}; }`; t += `${this._terminalSelector} .${p}${a.INVERTED_DEFAULT_COLOR} { color: ${d.color.opaque(e.background).css}; }${this._terminalSelector} .${p}${a.INVERTED_DEFAULT_COLOR}.xterm-dim { color: ${d.color.multiplyOpacity(d.color.opaque(e.background), .5).css}; }${this._terminalSelector} .${m}${a.INVERTED_DEFAULT_COLOR} { background-color: ${e.foreground.css}; }`, this._themeStyleElement.textContent = t } _setDefaultSpacing() { const e = this.dimensions.css.cell.width - this._widthCache.get("W", !1, !1); this._rowContainer.style.letterSpacing = `${e}px`, this._rowFactory.defaultSpacing = e } handleDevicePixelRatioChange() { this._updateDimensions(), this._widthCache.clear(), this._setDefaultSpacing() } _refreshRowElements(e, t) { for (let e = this._rowElements.length; e <= t; e++) { const e = this._document.createElement("div"); this._rowContainer.appendChild(e), this._rowElements.push(e) } for (; this._rowElements.length > t;)this._rowContainer.removeChild(this._rowElements.pop()) } handleResize(e, t) { this._refreshRowElements(e, t), this._updateDimensions(), this.handleSelectionChanged(this._selectionRenderModel.selectionStart, this._selectionRenderModel.selectionEnd, this._selectionRenderModel.columnSelectMode) } handleCharSizeChanged() { this._updateDimensions(), this._widthCache.clear(), this._setDefaultSpacing() } handleBlur() { this._rowContainer.classList.remove(C), this.renderRows(0, this._bufferService.rows - 1) } handleFocus() { this._rowContainer.classList.add(C), this.renderRows(this._bufferService.buffer.y, this._bufferService.buffer.y) } handleSelectionChanged(e, t, i) { if (this._selectionContainer.replaceChildren(), this._rowFactory.handleSelectionChanged(e, t, i), this.renderRows(0, this._bufferService.rows - 1), !e || !t) return; this._selectionRenderModel.update(this._terminal, e, t, i); const s = this._selectionRenderModel.viewportStartRow, r = this._selectionRenderModel.viewportEndRow, n = this._selectionRenderModel.viewportCappedStartRow, o = this._selectionRenderModel.viewportCappedEndRow; if (n >= this._bufferService.rows || o < 0) return; const a = this._document.createDocumentFragment(); if (i) { const i = e[0] > t[0]; a.appendChild(this._createSelectionElement(n, i ? t[0] : e[0], i ? e[0] : t[0], o - n + 1)) } else { const i = s === n ? e[0] : 0, h = n === r ? t[0] : this._bufferService.cols; a.appendChild(this._createSelectionElement(n, i, h)); const c = o - n - 1; if (a.appendChild(this._createSelectionElement(n + 1, 0, this._bufferService.cols, c)), n !== o) { const e = r === o ? t[0] : this._bufferService.cols; a.appendChild(this._createSelectionElement(o, 0, e)) } } this._selectionContainer.appendChild(a) } _createSelectionElement(e, t, i, s = 1) { const r = this._document.createElement("div"), n = t * this.dimensions.css.cell.width; let o = this.dimensions.css.cell.width * (i - t); return n + o > this.dimensions.css.canvas.width && (o = this.dimensions.css.canvas.width - n), r.style.height = s * this.dimensions.css.cell.height + "px", r.style.top = e * this.dimensions.css.cell.height + "px", r.style.left = `${n}px`, r.style.width = `${o}px`, r } handleCursorMove() { } _handleOptionsChanged() { this._updateDimensions(), this._injectCss(this._themeService.colors), this._widthCache.setFont(this._optionsService.rawOptions.fontFamily, this._optionsService.rawOptions.fontSize, this._optionsService.rawOptions.fontWeight, this._optionsService.rawOptions.fontWeightBold), this._setDefaultSpacing() } clear() { for (const e of this._rowElements) e.replaceChildren() } renderRows(e, t) { const i = this._bufferService.buffer, s = i.ybase + i.y, r = Math.min(i.x, this._bufferService.cols - 1), n = this._optionsService.rawOptions.cursorBlink, o = this._optionsService.rawOptions.cursorStyle, a = this._optionsService.rawOptions.cursorInactiveStyle; for (let h = e; h <= t; h++) { const e = h + i.ydisp, t = this._rowElements[h], c = i.lines.get(e); if (!t || !c) break; t.replaceChildren(...this._rowFactory.createRow(c, e, e === s, o, a, r, n, this.dimensions.css.cell.width, this._widthCache, -1, -1)) } } get _terminalSelector() { return `.${v}${this._terminalClass}` } _handleLinkHover(e) { this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, !0) } _handleLinkLeave(e) { this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, !1) } _setCellUnderline(e, t, i, s, r, n) { i < 0 && (e = 0), s < 0 && (t = 0); const o = this._bufferService.rows - 1; i = Math.max(Math.min(i, o), 0), s = Math.max(Math.min(s, o), 0), r = Math.min(r, this._bufferService.cols); const a = this._bufferService.buffer, h = a.ybase + a.y, c = Math.min(a.x, r - 1), l = this._optionsService.rawOptions.cursorBlink, d = this._optionsService.rawOptions.cursorStyle, _ = this._optionsService.rawOptions.cursorInactiveStyle; for (let o = i; o <= s; ++o) { const u = o + a.ydisp, f = this._rowElements[o], v = a.lines.get(u); if (!f || !v) break; f.replaceChildren(...this._rowFactory.createRow(v, u, u === h, d, _, c, l, this.dimensions.css.cell.width, this._widthCache, n ? o === i ? e : 0 : -1, n ? (o === s ? t : r) - 1 : -1)) } } }; t.DomRenderer = w = s([r(7, f.IInstantiationService), r(8, l.ICharSizeService), r(9, f.IOptionsService), r(10, f.IBufferService), r(11, l.ICoreBrowserService), r(12, l.IThemeService)], w) }, 3787: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.DomRendererRowFactory = void 0; const n = i(2223), o = i(643), a = i(511), h = i(2585), c = i(8055), l = i(4725), d = i(4269), _ = i(6171), u = i(3734); let f = t.DomRendererRowFactory = class { constructor(e, t, i, s, r, n, o) { this._document = e, this._characterJoinerService = t, this._optionsService = i, this._coreBrowserService = s, this._coreService = r, this._decorationService = n, this._themeService = o, this._workCell = new a.CellData, this._columnSelectMode = !1, this.defaultSpacing = 0 } handleSelectionChanged(e, t, i) { this._selectionStart = e, this._selectionEnd = t, this._columnSelectMode = i } createRow(e, t, i, s, r, a, h, l, _, f, g) { const p = [], m = this._characterJoinerService.getJoinedCharacters(t), C = this._themeService.colors; let S, b = e.getNoBgTrimmedLength(); i && b < a + 1 && (b = a + 1); let w = 0, y = "", L = 0, x = 0, E = 0, R = !1, M = 0, A = !1, D = 0; const k = [], T = -1 !== f && -1 !== g; for (let B = 0; B < b; B++) { e.loadCell(B, this._workCell); let b = this._workCell.getWidth(); if (0 === b) continue; let O = !1, P = B, I = this._workCell; if (m.length > 0 && B === m[0][0]) { O = !0; const t = m.shift(); I = new d.JoinedCellData(this._workCell, e.translateToString(!0, t[0], t[1]), t[1] - t[0]), P = t[1] - 1, b = I.getWidth() } const F = this._isCellInSelection(B, t), H = i && B === a, $ = T && B >= f && B <= g; let W = !1; this._decorationService.forEachDecorationAtCell(B, t, void 0, (e => { W = !0 })); let U = I.getChars() || o.WHITESPACE_CELL_CHAR; if (" " === U && (I.isUnderline() || I.isOverline()) && (U = " "), D = b * l - _.get(U, I.isBold(), I.isItalic()), S) { if (w && (F && A || !F && !A && I.bg === L) && (F && A && C.selectionForeground || I.fg === x) && I.extended.ext === E && $ === R && D === M && !H && !O && !W) { I.isInvisible() ? y += o.WHITESPACE_CELL_CHAR : y += U, w++; continue } w && (S.textContent = y), S = this._document.createElement("span"), w = 0, y = "" } else S = this._document.createElement("span"); if (L = I.bg, x = I.fg, E = I.extended.ext, R = $, M = D, A = F, O && a >= B && a <= P && (a = B), !this._coreService.isCursorHidden && H && this._coreService.isCursorInitialized) if (k.push("xterm-cursor"), this._coreBrowserService.isFocused) h && k.push("xterm-cursor-blink"), k.push("bar" === s ? "xterm-cursor-bar" : "underline" === s ? "xterm-cursor-underline" : "xterm-cursor-block"); else if (r) switch (r) { case "outline": k.push("xterm-cursor-outline"); break; case "block": k.push("xterm-cursor-block"); break; case "bar": k.push("xterm-cursor-bar"); break; case "underline": k.push("xterm-cursor-underline") }if (I.isBold() && k.push("xterm-bold"), I.isItalic() && k.push("xterm-italic"), I.isDim() && k.push("xterm-dim"), y = I.isInvisible() ? o.WHITESPACE_CELL_CHAR : I.getChars() || o.WHITESPACE_CELL_CHAR, I.isUnderline() && (k.push(`xterm-underline-${I.extended.underlineStyle}`), " " === y && (y = " "), !I.isUnderlineColorDefault())) if (I.isUnderlineColorRGB()) S.style.textDecorationColor = `rgb(${u.AttributeData.toColorRGB(I.getUnderlineColor()).join(",")})`; else { let e = I.getUnderlineColor(); this._optionsService.rawOptions.drawBoldTextInBrightColors && I.isBold() && e < 8 && (e += 8), S.style.textDecorationColor = C.ansi[e].css } I.isOverline() && (k.push("xterm-overline"), " " === y && (y = " ")), I.isStrikethrough() && k.push("xterm-strikethrough"), $ && (S.style.textDecoration = "underline"); let N = I.getFgColor(), z = I.getFgColorMode(), j = I.getBgColor(), q = I.getBgColorMode(); const G = !!I.isInverse(); if (G) { const e = N; N = j, j = e; const t = z; z = q, q = t } let V, K, X, J = !1; switch (this._decorationService.forEachDecorationAtCell(B, t, void 0, (e => { "top" !== e.options.layer && J || (e.backgroundColorRGB && (q = 50331648, j = e.backgroundColorRGB.rgba >> 8 & 16777215, V = e.backgroundColorRGB), e.foregroundColorRGB && (z = 50331648, N = e.foregroundColorRGB.rgba >> 8 & 16777215, K = e.foregroundColorRGB), J = "top" === e.options.layer) })), !J && F && (V = this._coreBrowserService.isFocused ? C.selectionBackgroundOpaque : C.selectionInactiveBackgroundOpaque, j = V.rgba >> 8 & 16777215, q = 50331648, J = !0, C.selectionForeground && (z = 50331648, N = C.selectionForeground.rgba >> 8 & 16777215, K = C.selectionForeground)), J && k.push("xterm-decoration-top"), q) { case 16777216: case 33554432: X = C.ansi[j], k.push(`xterm-bg-${j}`); break; case 50331648: X = c.channels.toColor(j >> 16, j >> 8 & 255, 255 & j), this._addStyle(S, `background-color:#${v((j >>> 0).toString(16), "0", 6)}`); break; default: G ? (X = C.foreground, k.push(`xterm-bg-${n.INVERTED_DEFAULT_COLOR}`)) : X = C.background }switch (V || I.isDim() && (V = c.color.multiplyOpacity(X, .5)), z) { case 16777216: case 33554432: I.isBold() && N < 8 && this._optionsService.rawOptions.drawBoldTextInBrightColors && (N += 8), this._applyMinimumContrast(S, X, C.ansi[N], I, V, void 0) || k.push(`xterm-fg-${N}`); break; case 50331648: const e = c.channels.toColor(N >> 16 & 255, N >> 8 & 255, 255 & N); this._applyMinimumContrast(S, X, e, I, V, K) || this._addStyle(S, `color:#${v(N.toString(16), "0", 6)}`); break; default: this._applyMinimumContrast(S, X, C.foreground, I, V, K) || G && k.push(`xterm-fg-${n.INVERTED_DEFAULT_COLOR}`) }k.length && (S.className = k.join(" "), k.length = 0), H || O || W ? S.textContent = y : w++, D !== this.defaultSpacing && (S.style.letterSpacing = `${D}px`), p.push(S), B = P } return S && w && (S.textContent = y), p } _applyMinimumContrast(e, t, i, s, r, n) { if (1 === this._optionsService.rawOptions.minimumContrastRatio || (0, _.treatGlyphAsBackgroundColor)(s.getCode())) return !1; const o = this._getContrastCache(s); let a; if (r || n || (a = o.getColor(t.rgba, i.rgba)), void 0 === a) { const e = this._optionsService.rawOptions.minimumContrastRatio / (s.isDim() ? 2 : 1); a = c.color.ensureContrastRatio(r || t, n || i, e), o.setColor((r || t).rgba, (n || i).rgba, a ?? null) } return !!a && (this._addStyle(e, `color:${a.css}`), !0) } _getContrastCache(e) { return e.isDim() ? this._themeService.colors.halfContrastCache : this._themeService.colors.contrastCache } _addStyle(e, t) { e.setAttribute("style", `${e.getAttribute("style") || ""}${t};`) } _isCellInSelection(e, t) { const i = this._selectionStart, s = this._selectionEnd; return !(!i || !s) && (this._columnSelectMode ? i[0] <= s[0] ? e >= i[0] && t >= i[1] && e < s[0] && t <= s[1] : e < i[0] && t >= i[1] && e >= s[0] && t <= s[1] : t > i[1] && t < s[1] || i[1] === s[1] && t === i[1] && e >= i[0] && e < s[0] || i[1] < s[1] && t === s[1] && e < s[0] || i[1] < s[1] && t === i[1] && e >= i[0]) } }; function v(e, t, i) { for (; e.length < i;)e = t + e; return e } t.DomRendererRowFactory = f = s([r(1, l.ICharacterJoinerService), r(2, h.IOptionsService), r(3, l.ICoreBrowserService), r(4, h.ICoreService), r(5, h.IDecorationService), r(6, l.IThemeService)], f) }, 2550: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.WidthCache = void 0, t.WidthCache = class { constructor(e, t) { this._flat = new Float32Array(256), this._font = "", this._fontSize = 0, this._weight = "normal", this._weightBold = "bold", this._measureElements = [], this._container = e.createElement("div"), this._container.classList.add("xterm-width-cache-measure-container"), this._container.setAttribute("aria-hidden", "true"), this._container.style.whiteSpace = "pre", this._container.style.fontKerning = "none"; const i = e.createElement("span"); i.classList.add("xterm-char-measure-element"); const s = e.createElement("span"); s.classList.add("xterm-char-measure-element"), s.style.fontWeight = "bold"; const r = e.createElement("span"); r.classList.add("xterm-char-measure-element"), r.style.fontStyle = "italic"; const n = e.createElement("span"); n.classList.add("xterm-char-measure-element"), n.style.fontWeight = "bold", n.style.fontStyle = "italic", this._measureElements = [i, s, r, n], this._container.appendChild(i), this._container.appendChild(s), this._container.appendChild(r), this._container.appendChild(n), t.appendChild(this._container), this.clear() } dispose() { this._container.remove(), this._measureElements.length = 0, this._holey = void 0 } clear() { this._flat.fill(-9999), this._holey = new Map } setFont(e, t, i, s) { e === this._font && t === this._fontSize && i === this._weight && s === this._weightBold || (this._font = e, this._fontSize = t, this._weight = i, this._weightBold = s, this._container.style.fontFamily = this._font, this._container.style.fontSize = `${this._fontSize}px`, this._measureElements[0].style.fontWeight = `${i}`, this._measureElements[1].style.fontWeight = `${s}`, this._measureElements[2].style.fontWeight = `${i}`, this._measureElements[3].style.fontWeight = `${s}`, this.clear()) } get(e, t, i) { let s = 0; if (!t && !i && 1 === e.length && (s = e.charCodeAt(0)) < 256) { if (-9999 !== this._flat[s]) return this._flat[s]; const t = this._measure(e, 0); return t > 0 && (this._flat[s] = t), t } let r = e; t && (r += "B"), i && (r += "I"); let n = this._holey.get(r); if (void 0 === n) { let s = 0; t && (s |= 1), i && (s |= 2), n = this._measure(e, s), n > 0 && this._holey.set(r, n) } return n } _measure(e, t) { const i = this._measureElements[t]; return i.textContent = e.repeat(32), i.offsetWidth / 32 } } }, 2223: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.TEXT_BASELINE = t.DIM_OPACITY = t.INVERTED_DEFAULT_COLOR = void 0; const s = i(6114); t.INVERTED_DEFAULT_COLOR = 257, t.DIM_OPACITY = .5, t.TEXT_BASELINE = s.isFirefox || s.isLegacyEdge ? "bottom" : "ideographic" }, 6171: (e, t) => { function i(e) { return 57508 <= e && e <= 57558 } function s(e) { return e >= 128512 && e <= 128591 || e >= 127744 && e <= 128511 || e >= 128640 && e <= 128767 || e >= 9728 && e <= 9983 || e >= 9984 && e <= 10175 || e >= 65024 && e <= 65039 || e >= 129280 && e <= 129535 || e >= 127462 && e <= 127487 } Object.defineProperty(t, "__esModule", { value: !0 }), t.computeNextVariantOffset = t.createRenderDimensions = t.treatGlyphAsBackgroundColor = t.allowRescaling = t.isEmoji = t.isRestrictedPowerlineGlyph = t.isPowerlineGlyph = t.throwIfFalsy = void 0, t.throwIfFalsy = function (e) { if (!e) throw new Error("value must not be falsy"); return e }, t.isPowerlineGlyph = i, t.isRestrictedPowerlineGlyph = function (e) { return 57520 <= e && e <= 57527 }, t.isEmoji = s, t.allowRescaling = function (e, t, r, n) { return 1 === t && r > Math.ceil(1.5 * n) && void 0 !== e && e > 255 && !s(e) && !i(e) && !function (e) { return 57344 <= e && e <= 63743 }(e) }, t.treatGlyphAsBackgroundColor = function (e) { return i(e) || function (e) { return 9472 <= e && e <= 9631 }(e) }, t.createRenderDimensions = function () { return { css: { canvas: { width: 0, height: 0 }, cell: { width: 0, height: 0 } }, device: { canvas: { width: 0, height: 0 }, cell: { width: 0, height: 0 }, char: { width: 0, height: 0, left: 0, top: 0 } } } }, t.computeNextVariantOffset = function (e, t, i = 0) { return (e - (2 * Math.round(t) - i)) % (2 * Math.round(t)) } }, 6052: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.createSelectionRenderModel = void 0; class i { constructor() { this.clear() } clear() { this.hasSelection = !1, this.columnSelectMode = !1, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0 } update(e, t, i, s = !1) { if (this.selectionStart = t, this.selectionEnd = i, !t || !i || t[0] === i[0] && t[1] === i[1]) return void this.clear(); const r = e.buffers.active.ydisp, n = t[1] - r, o = i[1] - r, a = Math.max(n, 0), h = Math.min(o, e.rows - 1); a >= e.rows || h < 0 ? this.clear() : (this.hasSelection = !0, this.columnSelectMode = s, this.viewportStartRow = n, this.viewportEndRow = o, this.viewportCappedStartRow = a, this.viewportCappedEndRow = h, this.startCol = t[0], this.endCol = i[0]) } isCellSelected(e, t, i) { return !!this.hasSelection && (i -= e.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? t >= this.startCol && i >= this.viewportCappedStartRow && t < this.endCol && i <= this.viewportCappedEndRow : t < this.startCol && i >= this.viewportCappedStartRow && t >= this.endCol && i <= this.viewportCappedEndRow : i > this.viewportStartRow && i < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportEndRow && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol) } } t.createSelectionRenderModel = function () { return new i } }, 456: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.SelectionModel = void 0, t.SelectionModel = class { constructor(e) { this._bufferService = e, this.isSelectAllActive = !1, this.selectionStartLength = 0 } clearSelection() { this.selectionStart = void 0, this.selectionEnd = void 0, this.isSelectAllActive = !1, this.selectionStartLength = 0 } get finalSelectionStart() { return this.isSelectAllActive ? [0, 0] : this.selectionEnd && this.selectionStart && this.areSelectionValuesReversed() ? this.selectionEnd : this.selectionStart } get finalSelectionEnd() { if (this.isSelectAllActive) return [this._bufferService.cols, this._bufferService.buffer.ybase + this._bufferService.rows - 1]; if (this.selectionStart) { if (!this.selectionEnd || this.areSelectionValuesReversed()) { const e = this.selectionStart[0] + this.selectionStartLength; return e > this._bufferService.cols ? e % this._bufferService.cols == 0 ? [this._bufferService.cols, this.selectionStart[1] + Math.floor(e / this._bufferService.cols) - 1] : [e % this._bufferService.cols, this.selectionStart[1] + Math.floor(e / this._bufferService.cols)] : [e, this.selectionStart[1]] } if (this.selectionStartLength && this.selectionEnd[1] === this.selectionStart[1]) { const e = this.selectionStart[0] + this.selectionStartLength; return e > this._bufferService.cols ? [e % this._bufferService.cols, this.selectionStart[1] + Math.floor(e / this._bufferService.cols)] : [Math.max(e, this.selectionEnd[0]), this.selectionEnd[1]] } return this.selectionEnd } } areSelectionValuesReversed() { const e = this.selectionStart, t = this.selectionEnd; return !(!e || !t) && (e[1] > t[1] || e[1] === t[1] && e[0] > t[0]) } handleTrim(e) { return this.selectionStart && (this.selectionStart[1] -= e), this.selectionEnd && (this.selectionEnd[1] -= e), this.selectionEnd && this.selectionEnd[1] < 0 ? (this.clearSelection(), !0) : (this.selectionStart && this.selectionStart[1] < 0 && (this.selectionStart[1] = 0), !1) } } }, 428: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.CharSizeService = void 0; const n = i(2585), o = i(8460), a = i(844); let h = t.CharSizeService = class extends a.Disposable { get hasValidSize() { return this.width > 0 && this.height > 0 } constructor(e, t, i) { super(), this._optionsService = i, this.width = 0, this.height = 0, this._onCharSizeChange = this.register(new o.EventEmitter), this.onCharSizeChange = this._onCharSizeChange.event; try { this._measureStrategy = this.register(new d(this._optionsService)) } catch { this._measureStrategy = this.register(new l(e, t, this._optionsService)) } this.register(this._optionsService.onMultipleOptionChange(["fontFamily", "fontSize"], (() => this.measure()))) } measure() { const e = this._measureStrategy.measure(); e.width === this.width && e.height === this.height || (this.width = e.width, this.height = e.height, this._onCharSizeChange.fire()) } }; t.CharSizeService = h = s([r(2, n.IOptionsService)], h); class c extends a.Disposable { constructor() { super(...arguments), this._result = { width: 0, height: 0 } } _validateAndSet(e, t) { void 0 !== e && e > 0 && void 0 !== t && t > 0 && (this._result.width = e, this._result.height = t) } } class l extends c { constructor(e, t, i) { super(), this._document = e, this._parentElement = t, this._optionsService = i, this._measureElement = this._document.createElement("span"), this._measureElement.classList.add("xterm-char-measure-element"), this._measureElement.textContent = "W".repeat(32), this._measureElement.setAttribute("aria-hidden", "true"), this._measureElement.style.whiteSpace = "pre", this._measureElement.style.fontKerning = "none", this._parentElement.appendChild(this._measureElement) } measure() { return this._measureElement.style.fontFamily = this._optionsService.rawOptions.fontFamily, this._measureElement.style.fontSize = `${this._optionsService.rawOptions.fontSize}px`, this._validateAndSet(Number(this._measureElement.offsetWidth) / 32, Number(this._measureElement.offsetHeight)), this._result } } class d extends c { constructor(e) { super(), this._optionsService = e, this._canvas = new OffscreenCanvas(100, 100), this._ctx = this._canvas.getContext("2d"); const t = this._ctx.measureText("W"); if (!("width" in t && "fontBoundingBoxAscent" in t && "fontBoundingBoxDescent" in t)) throw new Error("Required font metrics not supported") } measure() { this._ctx.font = `${this._optionsService.rawOptions.fontSize}px ${this._optionsService.rawOptions.fontFamily}`; const e = this._ctx.measureText("W"); return this._validateAndSet(e.width, e.fontBoundingBoxAscent + e.fontBoundingBoxDescent), this._result } } }, 4269: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.CharacterJoinerService = t.JoinedCellData = void 0; const n = i(3734), o = i(643), a = i(511), h = i(2585); class c extends n.AttributeData { constructor(e, t, i) { super(), this.content = 0, this.combinedData = "", this.fg = e.fg, this.bg = e.bg, this.combinedData = t, this._width = i } isCombined() { return 2097152 } getWidth() { return this._width } getChars() { return this.combinedData } getCode() { return 2097151 } setFromCharData(e) { throw new Error("not implemented") } getAsCharData() { return [this.fg, this.getChars(), this.getWidth(), this.getCode()] } } t.JoinedCellData = c; let l = t.CharacterJoinerService = class e { constructor(e) { this._bufferService = e, this._characterJoiners = [], this._nextCharacterJoinerId = 0, this._workCell = new a.CellData } register(e) { const t = { id: this._nextCharacterJoinerId++, handler: e }; return this._characterJoiners.push(t), t.id } deregister(e) { for (let t = 0; t < this._characterJoiners.length; t++)if (this._characterJoiners[t].id === e) return this._characterJoiners.splice(t, 1), !0; return !1 } getJoinedCharacters(e) { if (0 === this._characterJoiners.length) return []; const t = this._bufferService.buffer.lines.get(e); if (!t || 0 === t.length) return []; const i = [], s = t.translateToString(!0); let r = 0, n = 0, a = 0, h = t.getFg(0), c = t.getBg(0); for (let e = 0; e < t.getTrimmedLength(); e++)if (t.loadCell(e, this._workCell), 0 !== this._workCell.getWidth()) { if (this._workCell.fg !== h || this._workCell.bg !== c) { if (e - r > 1) { const e = this._getJoinedRanges(s, a, n, t, r); for (let t = 0; t < e.length; t++)i.push(e[t]) } r = e, a = n, h = this._workCell.fg, c = this._workCell.bg } n += this._workCell.getChars().length || o.WHITESPACE_CELL_CHAR.length } if (this._bufferService.cols - r > 1) { const e = this._getJoinedRanges(s, a, n, t, r); for (let t = 0; t < e.length; t++)i.push(e[t]) } return i } _getJoinedRanges(t, i, s, r, n) { const o = t.substring(i, s); let a = []; try { a = this._characterJoiners[0].handler(o) } catch (e) { console.error(e) } for (let t = 1; t < this._characterJoiners.length; t++)try { const i = this._characterJoiners[t].handler(o); for (let t = 0; t < i.length; t++)e._mergeRanges(a, i[t]) } catch (e) { console.error(e) } return this._stringRangesToCellRanges(a, r, n), a } _stringRangesToCellRanges(e, t, i) { let s = 0, r = !1, n = 0, a = e[s]; if (a) { for (let h = i; h < this._bufferService.cols; h++) { const i = t.getWidth(h), c = t.getString(h).length || o.WHITESPACE_CELL_CHAR.length; if (0 !== i) { if (!r && a[0] <= n && (a[0] = h, r = !0), a[1] <= n) { if (a[1] = h, a = e[++s], !a) break; a[0] <= n ? (a[0] = h, r = !0) : r = !1 } n += c } } a && (a[1] = this._bufferService.cols) } } static _mergeRanges(e, t) { let i = !1; for (let s = 0; s < e.length; s++) { const r = e[s]; if (i) { if (t[1] <= r[0]) return e[s - 1][1] = t[1], e; if (t[1] <= r[1]) return e[s - 1][1] = Math.max(t[1], r[1]), e.splice(s, 1), e; e.splice(s, 1), s-- } else { if (t[1] <= r[0]) return e.splice(s, 0, t), e; if (t[1] <= r[1]) return r[0] = Math.min(t[0], r[0]), e; t[0] < r[1] && (r[0] = Math.min(t[0], r[0]), i = !0) } } return i ? e[e.length - 1][1] = t[1] : e.push(t), e } }; t.CharacterJoinerService = l = s([r(0, h.IBufferService)], l) }, 5114: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CoreBrowserService = void 0; const s = i(844), r = i(8460), n = i(3656); class o extends s.Disposable { constructor(e, t, i) { super(), this._textarea = e, this._window = t, this.mainDocument = i, this._isFocused = !1, this._cachedIsFocused = void 0, this._screenDprMonitor = new a(this._window), this._onDprChange = this.register(new r.EventEmitter), this.onDprChange = this._onDprChange.event, this._onWindowChange = this.register(new r.EventEmitter), this.onWindowChange = this._onWindowChange.event, this.register(this.onWindowChange((e => this._screenDprMonitor.setWindow(e)))), this.register((0, r.forwardEvent)(this._screenDprMonitor.onDprChange, this._onDprChange)), this._textarea.addEventListener("focus", (() => this._isFocused = !0)), this._textarea.addEventListener("blur", (() => this._isFocused = !1)) } get window() { return this._window } set window(e) { this._window !== e && (this._window = e, this._onWindowChange.fire(this._window)) } get dpr() { return this.window.devicePixelRatio } get isFocused() { return void 0 === this._cachedIsFocused && (this._cachedIsFocused = this._isFocused && this._textarea.ownerDocument.hasFocus(), queueMicrotask((() => this._cachedIsFocused = void 0))), this._cachedIsFocused } } t.CoreBrowserService = o; class a extends s.Disposable { constructor(e) { super(), this._parentWindow = e, this._windowResizeListener = this.register(new s.MutableDisposable), this._onDprChange = this.register(new r.EventEmitter), this.onDprChange = this._onDprChange.event, this._outerListener = () => this._setDprAndFireIfDiffers(), this._currentDevicePixelRatio = this._parentWindow.devicePixelRatio, this._updateDpr(), this._setWindowResizeListener(), this.register((0, s.toDisposable)((() => this.clearListener()))) } setWindow(e) { this._parentWindow = e, this._setWindowResizeListener(), this._setDprAndFireIfDiffers() } _setWindowResizeListener() { this._windowResizeListener.value = (0, n.addDisposableDomListener)(this._parentWindow, "resize", (() => this._setDprAndFireIfDiffers())) } _setDprAndFireIfDiffers() { this._parentWindow.devicePixelRatio !== this._currentDevicePixelRatio && this._onDprChange.fire(this._parentWindow.devicePixelRatio), this._updateDpr() } _updateDpr() { this._outerListener && (this._resolutionMediaMatchList?.removeListener(this._outerListener), this._currentDevicePixelRatio = this._parentWindow.devicePixelRatio, this._resolutionMediaMatchList = this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`), this._resolutionMediaMatchList.addListener(this._outerListener)) } clearListener() { this._resolutionMediaMatchList && this._outerListener && (this._resolutionMediaMatchList.removeListener(this._outerListener), this._resolutionMediaMatchList = void 0, this._outerListener = void 0) } } }, 779: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.LinkProviderService = void 0; const s = i(844); class r extends s.Disposable { constructor() { super(), this.linkProviders = [], this.register((0, s.toDisposable)((() => this.linkProviders.length = 0))) } registerLinkProvider(e) { return this.linkProviders.push(e), { dispose: () => { const t = this.linkProviders.indexOf(e); -1 !== t && this.linkProviders.splice(t, 1) } } } } t.LinkProviderService = r }, 8934: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.MouseService = void 0; const n = i(4725), o = i(9806); let a = t.MouseService = class { constructor(e, t) { this._renderService = e, this._charSizeService = t } getCoords(e, t, i, s, r) { return (0, o.getCoords)(window, e, t, i, s, this._charSizeService.hasValidSize, this._renderService.dimensions.css.cell.width, this._renderService.dimensions.css.cell.height, r) } getMouseReportCoords(e, t) { const i = (0, o.getCoordsRelativeToElement)(window, e, t); if (this._charSizeService.hasValidSize) return i[0] = Math.min(Math.max(i[0], 0), this._renderService.dimensions.css.canvas.width - 1), i[1] = Math.min(Math.max(i[1], 0), this._renderService.dimensions.css.canvas.height - 1), { col: Math.floor(i[0] / this._renderService.dimensions.css.cell.width), row: Math.floor(i[1] / this._renderService.dimensions.css.cell.height), x: Math.floor(i[0]), y: Math.floor(i[1]) } } }; t.MouseService = a = s([r(0, n.IRenderService), r(1, n.ICharSizeService)], a) }, 3230: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.RenderService = void 0; const n = i(6193), o = i(4725), a = i(8460), h = i(844), c = i(7226), l = i(2585); let d = t.RenderService = class extends h.Disposable { get dimensions() { return this._renderer.value.dimensions } constructor(e, t, i, s, r, o, l, d) { super(), this._rowCount = e, this._charSizeService = s, this._renderer = this.register(new h.MutableDisposable), this._pausedResizeTask = new c.DebouncedIdleTask, this._observerDisposable = this.register(new h.MutableDisposable), this._isPaused = !1, this._needsFullRefresh = !1, this._isNextRenderRedrawOnly = !0, this._needsSelectionRefresh = !1, this._canvasWidth = 0, this._canvasHeight = 0, this._selectionState = { start: void 0, end: void 0, columnSelectMode: !1 }, this._onDimensionsChange = this.register(new a.EventEmitter), this.onDimensionsChange = this._onDimensionsChange.event, this._onRenderedViewportChange = this.register(new a.EventEmitter), this.onRenderedViewportChange = this._onRenderedViewportChange.event, this._onRender = this.register(new a.EventEmitter), this.onRender = this._onRender.event, this._onRefreshRequest = this.register(new a.EventEmitter), this.onRefreshRequest = this._onRefreshRequest.event, this._renderDebouncer = new n.RenderDebouncer(((e, t) => this._renderRows(e, t)), l), this.register(this._renderDebouncer), this.register(l.onDprChange((() => this.handleDevicePixelRatioChange()))), this.register(o.onResize((() => this._fullRefresh()))), this.register(o.buffers.onBufferActivate((() => this._renderer.value?.clear()))), this.register(i.onOptionChange((() => this._handleOptionsChanged()))), this.register(this._charSizeService.onCharSizeChange((() => this.handleCharSizeChanged()))), this.register(r.onDecorationRegistered((() => this._fullRefresh()))), this.register(r.onDecorationRemoved((() => this._fullRefresh()))), this.register(i.onMultipleOptionChange(["customGlyphs", "drawBoldTextInBrightColors", "letterSpacing", "lineHeight", "fontFamily", "fontSize", "fontWeight", "fontWeightBold", "minimumContrastRatio", "rescaleOverlappingGlyphs"], (() => { this.clear(), this.handleResize(o.cols, o.rows), this._fullRefresh() }))), this.register(i.onMultipleOptionChange(["cursorBlink", "cursorStyle"], (() => this.refreshRows(o.buffer.y, o.buffer.y, !0)))), this.register(d.onChangeColors((() => this._fullRefresh()))), this._registerIntersectionObserver(l.window, t), this.register(l.onWindowChange((e => this._registerIntersectionObserver(e, t)))) } _registerIntersectionObserver(e, t) { if ("IntersectionObserver" in e) { const i = new e.IntersectionObserver((e => this._handleIntersectionChange(e[e.length - 1])), { threshold: 0 }); i.observe(t), this._observerDisposable.value = (0, h.toDisposable)((() => i.disconnect())) } } _handleIntersectionChange(e) { this._isPaused = void 0 === e.isIntersecting ? 0 === e.intersectionRatio : !e.isIntersecting, this._isPaused || this._charSizeService.hasValidSize || this._charSizeService.measure(), !this._isPaused && this._needsFullRefresh && (this._pausedResizeTask.flush(), this.refreshRows(0, this._rowCount - 1), this._needsFullRefresh = !1) } refreshRows(e, t, i = !1) { this._isPaused ? this._needsFullRefresh = !0 : (i || (this._isNextRenderRedrawOnly = !1), this._renderDebouncer.refresh(e, t, this._rowCount)) } _renderRows(e, t) { this._renderer.value && (e = Math.min(e, this._rowCount - 1), t = Math.min(t, this._rowCount - 1), this._renderer.value.renderRows(e, t), this._needsSelectionRefresh && (this._renderer.value.handleSelectionChanged(this._selectionState.start, this._selectionState.end, this._selectionState.columnSelectMode), this._needsSelectionRefresh = !1), this._isNextRenderRedrawOnly || this._onRenderedViewportChange.fire({ start: e, end: t }), this._onRender.fire({ start: e, end: t }), this._isNextRenderRedrawOnly = !0) } resize(e, t) { this._rowCount = t, this._fireOnCanvasResize() } _handleOptionsChanged() { this._renderer.value && (this.refreshRows(0, this._rowCount - 1), this._fireOnCanvasResize()) } _fireOnCanvasResize() { this._renderer.value && (this._renderer.value.dimensions.css.canvas.width === this._canvasWidth && this._renderer.value.dimensions.css.canvas.height === this._canvasHeight || this._onDimensionsChange.fire(this._renderer.value.dimensions)) } hasRenderer() { return !!this._renderer.value } setRenderer(e) { this._renderer.value = e, this._renderer.value && (this._renderer.value.onRequestRedraw((e => this.refreshRows(e.start, e.end, !0))), this._needsSelectionRefresh = !0, this._fullRefresh()) } addRefreshCallback(e) { return this._renderDebouncer.addRefreshCallback(e) } _fullRefresh() { this._isPaused ? this._needsFullRefresh = !0 : this.refreshRows(0, this._rowCount - 1) } clearTextureAtlas() { this._renderer.value && (this._renderer.value.clearTextureAtlas?.(), this._fullRefresh()) } handleDevicePixelRatioChange() { this._charSizeService.measure(), this._renderer.value && (this._renderer.value.handleDevicePixelRatioChange(), this.refreshRows(0, this._rowCount - 1)) } handleResize(e, t) { this._renderer.value && (this._isPaused ? this._pausedResizeTask.set((() => this._renderer.value?.handleResize(e, t))) : this._renderer.value.handleResize(e, t), this._fullRefresh()) } handleCharSizeChanged() { this._renderer.value?.handleCharSizeChanged() } handleBlur() { this._renderer.value?.handleBlur() } handleFocus() { this._renderer.value?.handleFocus() } handleSelectionChanged(e, t, i) { this._selectionState.start = e, this._selectionState.end = t, this._selectionState.columnSelectMode = i, this._renderer.value?.handleSelectionChanged(e, t, i) } handleCursorMove() { this._renderer.value?.handleCursorMove() } clear() { this._renderer.value?.clear() } }; t.RenderService = d = s([r(2, l.IOptionsService), r(3, o.ICharSizeService), r(4, l.IDecorationService), r(5, l.IBufferService), r(6, o.ICoreBrowserService), r(7, o.IThemeService)], d) }, 9312: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.SelectionService = void 0; const n = i(9806), o = i(9504), a = i(456), h = i(4725), c = i(8460), l = i(844), d = i(6114), _ = i(4841), u = i(511), f = i(2585), v = String.fromCharCode(160), g = new RegExp(v, "g"); let p = t.SelectionService = class extends l.Disposable { constructor(e, t, i, s, r, n, o, h, d) { super(), this._element = e, this._screenElement = t, this._linkifier = i, this._bufferService = s, this._coreService = r, this._mouseService = n, this._optionsService = o, this._renderService = h, this._coreBrowserService = d, this._dragScrollAmount = 0, this._enabled = !0, this._workCell = new u.CellData, this._mouseDownTimeStamp = 0, this._oldHasSelection = !1, this._oldSelectionStart = void 0, this._oldSelectionEnd = void 0, this._onLinuxMouseSelection = this.register(new c.EventEmitter), this.onLinuxMouseSelection = this._onLinuxMouseSelection.event, this._onRedrawRequest = this.register(new c.EventEmitter), this.onRequestRedraw = this._onRedrawRequest.event, this._onSelectionChange = this.register(new c.EventEmitter), this.onSelectionChange = this._onSelectionChange.event, this._onRequestScrollLines = this.register(new c.EventEmitter), this.onRequestScrollLines = this._onRequestScrollLines.event, this._mouseMoveListener = e => this._handleMouseMove(e), this._mouseUpListener = e => this._handleMouseUp(e), this._coreService.onUserInput((() => { this.hasSelection && this.clearSelection() })), this._trimListener = this._bufferService.buffer.lines.onTrim((e => this._handleTrim(e))), this.register(this._bufferService.buffers.onBufferActivate((e => this._handleBufferActivate(e)))), this.enable(), this._model = new a.SelectionModel(this._bufferService), this._activeSelectionMode = 0, this.register((0, l.toDisposable)((() => { this._removeMouseDownListeners() }))) } reset() { this.clearSelection() } disable() { this.clearSelection(), this._enabled = !1 } enable() { this._enabled = !0 } get selectionStart() { return this._model.finalSelectionStart } get selectionEnd() { return this._model.finalSelectionEnd } get hasSelection() { const e = this._model.finalSelectionStart, t = this._model.finalSelectionEnd; return !(!e || !t || e[0] === t[0] && e[1] === t[1]) } get selectionText() { const e = this._model.finalSelectionStart, t = this._model.finalSelectionEnd; if (!e || !t) return ""; const i = this._bufferService.buffer, s = []; if (3 === this._activeSelectionMode) { if (e[0] === t[0]) return ""; const r = e[0] < t[0] ? e[0] : t[0], n = e[0] < t[0] ? t[0] : e[0]; for (let o = e[1]; o <= t[1]; o++) { const e = i.translateBufferLineToString(o, !0, r, n); s.push(e) } } else { const r = e[1] === t[1] ? t[0] : void 0; s.push(i.translateBufferLineToString(e[1], !0, e[0], r)); for (let r = e[1] + 1; r <= t[1] - 1; r++) { const e = i.lines.get(r), t = i.translateBufferLineToString(r, !0); e?.isWrapped ? s[s.length - 1] += t : s.push(t) } if (e[1] !== t[1]) { const e = i.lines.get(t[1]), r = i.translateBufferLineToString(t[1], !0, 0, t[0]); e && e.isWrapped ? s[s.length - 1] += r : s.push(r) } } return s.map((e => e.replace(g, " "))).join(d.isWindows ? "\r\n" : "\n") } clearSelection() { this._model.clearSelection(), this._removeMouseDownListeners(), this.refresh(), this._onSelectionChange.fire() } refresh(e) { this._refreshAnimationFrame || (this._refreshAnimationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._refresh()))), d.isLinux && e && this.selectionText.length && this._onLinuxMouseSelection.fire(this.selectionText) } _refresh() { this._refreshAnimationFrame = void 0, this._onRedrawRequest.fire({ start: this._model.finalSelectionStart, end: this._model.finalSelectionEnd, columnSelectMode: 3 === this._activeSelectionMode }) } _isClickInSelection(e) { const t = this._getMouseBufferCoords(e), i = this._model.finalSelectionStart, s = this._model.finalSelectionEnd; return !!(i && s && t) && this._areCoordsInSelection(t, i, s) } isCellInSelection(e, t) { const i = this._model.finalSelectionStart, s = this._model.finalSelectionEnd; return !(!i || !s) && this._areCoordsInSelection([e, t], i, s) } _areCoordsInSelection(e, t, i) { return e[1] > t[1] && e[1] < i[1] || t[1] === i[1] && e[1] === t[1] && e[0] >= t[0] && e[0] < i[0] || t[1] < i[1] && e[1] === i[1] && e[0] < i[0] || t[1] < i[1] && e[1] === t[1] && e[0] >= t[0] } _selectWordAtCursor(e, t) { const i = this._linkifier.currentLink?.link?.range; if (i) return this._model.selectionStart = [i.start.x - 1, i.start.y - 1], this._model.selectionStartLength = (0, _.getRangeLength)(i, this._bufferService.cols), this._model.selectionEnd = void 0, !0; const s = this._getMouseBufferCoords(e); return !!s && (this._selectWordAt(s, t), this._model.selectionEnd = void 0, !0) } selectAll() { this._model.isSelectAllActive = !0, this.refresh(), this._onSelectionChange.fire() } selectLines(e, t) { this._model.clearSelection(), e = Math.max(e, 0), t = Math.min(t, this._bufferService.buffer.lines.length - 1), this._model.selectionStart = [0, e], this._model.selectionEnd = [this._bufferService.cols, t], this.refresh(), this._onSelectionChange.fire() } _handleTrim(e) { this._model.handleTrim(e) && this.refresh() } _getMouseBufferCoords(e) { const t = this._mouseService.getCoords(e, this._screenElement, this._bufferService.cols, this._bufferService.rows, !0); if (t) return t[0]--, t[1]--, t[1] += this._bufferService.buffer.ydisp, t } _getMouseEventScrollAmount(e) { let t = (0, n.getCoordsRelativeToElement)(this._coreBrowserService.window, e, this._screenElement)[1]; const i = this._renderService.dimensions.css.canvas.height; return t >= 0 && t <= i ? 0 : (t > i && (t -= i), t = Math.min(Math.max(t, -50), 50), t /= 50, t / Math.abs(t) + Math.round(14 * t)) } shouldForceSelection(e) { return d.isMac ? e.altKey && this._optionsService.rawOptions.macOptionClickForcesSelection : e.shiftKey } handleMouseDown(e) { if (this._mouseDownTimeStamp = e.timeStamp, (2 !== e.button || !this.hasSelection) && 0 === e.button) { if (!this._enabled) { if (!this.shouldForceSelection(e)) return; e.stopPropagation() } e.preventDefault(), this._dragScrollAmount = 0, this._enabled && e.shiftKey ? this._handleIncrementalClick(e) : 1 === e.detail ? this._handleSingleClick(e) : 2 === e.detail ? this._handleDoubleClick(e) : 3 === e.detail && this._handleTripleClick(e), this._addMouseDownListeners(), this.refresh(!0) } } _addMouseDownListeners() { this._screenElement.ownerDocument && (this._screenElement.ownerDocument.addEventListener("mousemove", this._mouseMoveListener), this._screenElement.ownerDocument.addEventListener("mouseup", this._mouseUpListener)), this._dragScrollIntervalTimer = this._coreBrowserService.window.setInterval((() => this._dragScroll()), 50) } _removeMouseDownListeners() { this._screenElement.ownerDocument && (this._screenElement.ownerDocument.removeEventListener("mousemove", this._mouseMoveListener), this._screenElement.ownerDocument.removeEventListener("mouseup", this._mouseUpListener)), this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer), this._dragScrollIntervalTimer = void 0 } _handleIncrementalClick(e) { this._model.selectionStart && (this._model.selectionEnd = this._getMouseBufferCoords(e)) } _handleSingleClick(e) { if (this._model.selectionStartLength = 0, this._model.isSelectAllActive = !1, this._activeSelectionMode = this.shouldColumnSelect(e) ? 3 : 0, this._model.selectionStart = this._getMouseBufferCoords(e), !this._model.selectionStart) return; this._model.selectionEnd = void 0; const t = this._bufferService.buffer.lines.get(this._model.selectionStart[1]); t && t.length !== this._model.selectionStart[0] && 0 === t.hasWidth(this._model.selectionStart[0]) && this._model.selectionStart[0]++ } _handleDoubleClick(e) { this._selectWordAtCursor(e, !0) && (this._activeSelectionMode = 1) } _handleTripleClick(e) { const t = this._getMouseBufferCoords(e); t && (this._activeSelectionMode = 2, this._selectLineAt(t[1])) } shouldColumnSelect(e) { return e.altKey && !(d.isMac && this._optionsService.rawOptions.macOptionClickForcesSelection) } _handleMouseMove(e) { if (e.stopImmediatePropagation(), !this._model.selectionStart) return; const t = this._model.selectionEnd ? [this._model.selectionEnd[0], this._model.selectionEnd[1]] : null; if (this._model.selectionEnd = this._getMouseBufferCoords(e), !this._model.selectionEnd) return void this.refresh(!0); 2 === this._activeSelectionMode ? this._model.selectionEnd[1] < this._model.selectionStart[1] ? this._model.selectionEnd[0] = 0 : this._model.selectionEnd[0] = this._bufferService.cols : 1 === this._activeSelectionMode && this._selectToWordAt(this._model.selectionEnd), this._dragScrollAmount = this._getMouseEventScrollAmount(e), 3 !== this._activeSelectionMode && (this._dragScrollAmount > 0 ? this._model.selectionEnd[0] = this._bufferService.cols : this._dragScrollAmount < 0 && (this._model.selectionEnd[0] = 0)); const i = this._bufferService.buffer; if (this._model.selectionEnd[1] < i.lines.length) { const e = i.lines.get(this._model.selectionEnd[1]); e && 0 === e.hasWidth(this._model.selectionEnd[0]) && this._model.selectionEnd[0] < this._bufferService.cols && this._model.selectionEnd[0]++ } t && t[0] === this._model.selectionEnd[0] && t[1] === this._model.selectionEnd[1] || this.refresh(!0) } _dragScroll() { if (this._model.selectionEnd && this._model.selectionStart && this._dragScrollAmount) { this._onRequestScrollLines.fire({ amount: this._dragScrollAmount, suppressScrollEvent: !1 }); const e = this._bufferService.buffer; this._dragScrollAmount > 0 ? (3 !== this._activeSelectionMode && (this._model.selectionEnd[0] = this._bufferService.cols), this._model.selectionEnd[1] = Math.min(e.ydisp + this._bufferService.rows, e.lines.length - 1)) : (3 !== this._activeSelectionMode && (this._model.selectionEnd[0] = 0), this._model.selectionEnd[1] = e.ydisp), this.refresh() } } _handleMouseUp(e) { const t = e.timeStamp - this._mouseDownTimeStamp; if (this._removeMouseDownListeners(), this.selectionText.length <= 1 && t < 500 && e.altKey && this._optionsService.rawOptions.altClickMovesCursor) { if (this._bufferService.buffer.ybase === this._bufferService.buffer.ydisp) { const t = this._mouseService.getCoords(e, this._element, this._bufferService.cols, this._bufferService.rows, !1); if (t && void 0 !== t[0] && void 0 !== t[1]) { const e = (0, o.moveToCellSequence)(t[0] - 1, t[1] - 1, this._bufferService, this._coreService.decPrivateModes.applicationCursorKeys); this._coreService.triggerDataEvent(e, !0) } } } else this._fireEventIfSelectionChanged() } _fireEventIfSelectionChanged() { const e = this._model.finalSelectionStart, t = this._model.finalSelectionEnd, i = !(!e || !t || e[0] === t[0] && e[1] === t[1]); i ? e && t && (this._oldSelectionStart && this._oldSelectionEnd && e[0] === this._oldSelectionStart[0] && e[1] === this._oldSelectionStart[1] && t[0] === this._oldSelectionEnd[0] && t[1] === this._oldSelectionEnd[1] || this._fireOnSelectionChange(e, t, i)) : this._oldHasSelection && this._fireOnSelectionChange(e, t, i) } _fireOnSelectionChange(e, t, i) { this._oldSelectionStart = e, this._oldSelectionEnd = t, this._oldHasSelection = i, this._onSelectionChange.fire() } _handleBufferActivate(e) { this.clearSelection(), this._trimListener.dispose(), this._trimListener = e.activeBuffer.lines.onTrim((e => this._handleTrim(e))) } _convertViewportColToCharacterIndex(e, t) { let i = t; for (let s = 0; t >= s; s++) { const r = e.loadCell(s, this._workCell).getChars().length; 0 === this._workCell.getWidth() ? i-- : r > 1 && t !== s && (i += r - 1) } return i } setSelection(e, t, i) { this._model.clearSelection(), this._removeMouseDownListeners(), this._model.selectionStart = [e, t], this._model.selectionStartLength = i, this.refresh(), this._fireEventIfSelectionChanged() } rightClickSelect(e) { this._isClickInSelection(e) || (this._selectWordAtCursor(e, !1) && this.refresh(!0), this._fireEventIfSelectionChanged()) } _getWordAt(e, t, i = !0, s = !0) { if (e[0] >= this._bufferService.cols) return; const r = this._bufferService.buffer, n = r.lines.get(e[1]); if (!n) return; const o = r.translateBufferLineToString(e[1], !1); let a = this._convertViewportColToCharacterIndex(n, e[0]), h = a; const c = e[0] - a; let l = 0, d = 0, _ = 0, u = 0; if (" " === o.charAt(a)) { for (; a > 0 && " " === o.charAt(a - 1);)a--; for (; h < o.length && " " === o.charAt(h + 1);)h++ } else { let t = e[0], i = e[0]; 0 === n.getWidth(t) && (l++, t--), 2 === n.getWidth(i) && (d++, i++); const s = n.getString(i).length; for (s > 1 && (u += s - 1, h += s - 1); t > 0 && a > 0 && !this._isCharWordSeparator(n.loadCell(t - 1, this._workCell));) { n.loadCell(t - 1, this._workCell); const e = this._workCell.getChars().length; 0 === this._workCell.getWidth() ? (l++, t--) : e > 1 && (_ += e - 1, a -= e - 1), a--, t-- } for (; i < n.length && h + 1 < o.length && !this._isCharWordSeparator(n.loadCell(i + 1, this._workCell));) { n.loadCell(i + 1, this._workCell); const e = this._workCell.getChars().length; 2 === this._workCell.getWidth() ? (d++, i++) : e > 1 && (u += e - 1, h += e - 1), h++, i++ } } h++; let f = a + c - l + _, v = Math.min(this._bufferService.cols, h - a + l + d - _ - u); if (t || "" !== o.slice(a, h).trim()) { if (i && 0 === f && 32 !== n.getCodePoint(0)) { const t = r.lines.get(e[1] - 1); if (t && n.isWrapped && 32 !== t.getCodePoint(this._bufferService.cols - 1)) { const t = this._getWordAt([this._bufferService.cols - 1, e[1] - 1], !1, !0, !1); if (t) { const e = this._bufferService.cols - t.start; f -= e, v += e } } } if (s && f + v === this._bufferService.cols && 32 !== n.getCodePoint(this._bufferService.cols - 1)) { const t = r.lines.get(e[1] + 1); if (t?.isWrapped && 32 !== t.getCodePoint(0)) { const t = this._getWordAt([0, e[1] + 1], !1, !1, !0); t && (v += t.length) } } return { start: f, length: v } } } _selectWordAt(e, t) { const i = this._getWordAt(e, t); if (i) { for (; i.start < 0;)i.start += this._bufferService.cols, e[1]--; this._model.selectionStart = [i.start, e[1]], this._model.selectionStartLength = i.length } } _selectToWordAt(e) { const t = this._getWordAt(e, !0); if (t) { let i = e[1]; for (; t.start < 0;)t.start += this._bufferService.cols, i--; if (!this._model.areSelectionValuesReversed()) for (; t.start + t.length > this._bufferService.cols;)t.length -= this._bufferService.cols, i++; this._model.selectionEnd = [this._model.areSelectionValuesReversed() ? t.start : t.start + t.length, i] } } _isCharWordSeparator(e) { return 0 !== e.getWidth() && this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars()) >= 0 } _selectLineAt(e) { const t = this._bufferService.buffer.getWrappedRangeForLine(e), i = { start: { x: 0, y: t.first }, end: { x: this._bufferService.cols - 1, y: t.last } }; this._model.selectionStart = [0, t.first], this._model.selectionEnd = void 0, this._model.selectionStartLength = (0, _.getRangeLength)(i, this._bufferService.cols) } }; t.SelectionService = p = s([r(3, f.IBufferService), r(4, f.ICoreService), r(5, h.IMouseService), r(6, f.IOptionsService), r(7, h.IRenderService), r(8, h.ICoreBrowserService)], p) }, 4725: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.ILinkProviderService = t.IThemeService = t.ICharacterJoinerService = t.ISelectionService = t.IRenderService = t.IMouseService = t.ICoreBrowserService = t.ICharSizeService = void 0; const s = i(8343); t.ICharSizeService = (0, s.createDecorator)("CharSizeService"), t.ICoreBrowserService = (0, s.createDecorator)("CoreBrowserService"), t.IMouseService = (0, s.createDecorator)("MouseService"), t.IRenderService = (0, s.createDecorator)("RenderService"), t.ISelectionService = (0, s.createDecorator)("SelectionService"), t.ICharacterJoinerService = (0, s.createDecorator)("CharacterJoinerService"), t.IThemeService = (0, s.createDecorator)("ThemeService"), t.ILinkProviderService = (0, s.createDecorator)("LinkProviderService") }, 6731: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.ThemeService = t.DEFAULT_ANSI_COLORS = void 0; const n = i(7239), o = i(8055), a = i(8460), h = i(844), c = i(2585), l = o.css.toColor("#ffffff"), d = o.css.toColor("#000000"), _ = o.css.toColor("#ffffff"), u = o.css.toColor("#000000"), f = { css: "rgba(255, 255, 255, 0.3)", rgba: 4294967117 }; t.DEFAULT_ANSI_COLORS = Object.freeze((() => { const e = [o.css.toColor("#2e3436"), o.css.toColor("#cc0000"), o.css.toColor("#4e9a06"), o.css.toColor("#c4a000"), o.css.toColor("#3465a4"), o.css.toColor("#75507b"), o.css.toColor("#06989a"), o.css.toColor("#d3d7cf"), o.css.toColor("#555753"), o.css.toColor("#ef2929"), o.css.toColor("#8ae234"), o.css.toColor("#fce94f"), o.css.toColor("#729fcf"), o.css.toColor("#ad7fa8"), o.css.toColor("#34e2e2"), o.css.toColor("#eeeeec")], t = [0, 95, 135, 175, 215, 255]; for (let i = 0; i < 216; i++) { const s = t[i / 36 % 6 | 0], r = t[i / 6 % 6 | 0], n = t[i % 6]; e.push({ css: o.channels.toCss(s, r, n), rgba: o.channels.toRgba(s, r, n) }) } for (let t = 0; t < 24; t++) { const i = 8 + 10 * t; e.push({ css: o.channels.toCss(i, i, i), rgba: o.channels.toRgba(i, i, i) }) } return e })()); let v = t.ThemeService = class extends h.Disposable { get colors() { return this._colors } constructor(e) { super(), this._optionsService = e, this._contrastCache = new n.ColorContrastCache, this._halfContrastCache = new n.ColorContrastCache, this._onChangeColors = this.register(new a.EventEmitter), this.onChangeColors = this._onChangeColors.event, this._colors = { foreground: l, background: d, cursor: _, cursorAccent: u, selectionForeground: void 0, selectionBackgroundTransparent: f, selectionBackgroundOpaque: o.color.blend(d, f), selectionInactiveBackgroundTransparent: f, selectionInactiveBackgroundOpaque: o.color.blend(d, f), ansi: t.DEFAULT_ANSI_COLORS.slice(), contrastCache: this._contrastCache, halfContrastCache: this._halfContrastCache }, this._updateRestoreColors(), this._setTheme(this._optionsService.rawOptions.theme), this.register(this._optionsService.onSpecificOptionChange("minimumContrastRatio", (() => this._contrastCache.clear()))), this.register(this._optionsService.onSpecificOptionChange("theme", (() => this._setTheme(this._optionsService.rawOptions.theme)))) } _setTheme(e = {}) { const i = this._colors; if (i.foreground = g(e.foreground, l), i.background = g(e.background, d), i.cursor = g(e.cursor, _), i.cursorAccent = g(e.cursorAccent, u), i.selectionBackgroundTransparent = g(e.selectionBackground, f), i.selectionBackgroundOpaque = o.color.blend(i.background, i.selectionBackgroundTransparent), i.selectionInactiveBackgroundTransparent = g(e.selectionInactiveBackground, i.selectionBackgroundTransparent), i.selectionInactiveBackgroundOpaque = o.color.blend(i.background, i.selectionInactiveBackgroundTransparent), i.selectionForeground = e.selectionForeground ? g(e.selectionForeground, o.NULL_COLOR) : void 0, i.selectionForeground === o.NULL_COLOR && (i.selectionForeground = void 0), o.color.isOpaque(i.selectionBackgroundTransparent)) { const e = .3; i.selectionBackgroundTransparent = o.color.opacity(i.selectionBackgroundTransparent, e) } if (o.color.isOpaque(i.selectionInactiveBackgroundTransparent)) { const e = .3; i.selectionInactiveBackgroundTransparent = o.color.opacity(i.selectionInactiveBackgroundTransparent, e) } if (i.ansi = t.DEFAULT_ANSI_COLORS.slice(), i.ansi[0] = g(e.black, t.DEFAULT_ANSI_COLORS[0]), i.ansi[1] = g(e.red, t.DEFAULT_ANSI_COLORS[1]), i.ansi[2] = g(e.green, t.DEFAULT_ANSI_COLORS[2]), i.ansi[3] = g(e.yellow, t.DEFAULT_ANSI_COLORS[3]), i.ansi[4] = g(e.blue, t.DEFAULT_ANSI_COLORS[4]), i.ansi[5] = g(e.magenta, t.DEFAULT_ANSI_COLORS[5]), i.ansi[6] = g(e.cyan, t.DEFAULT_ANSI_COLORS[6]), i.ansi[7] = g(e.white, t.DEFAULT_ANSI_COLORS[7]), i.ansi[8] = g(e.brightBlack, t.DEFAULT_ANSI_COLORS[8]), i.ansi[9] = g(e.brightRed, t.DEFAULT_ANSI_COLORS[9]), i.ansi[10] = g(e.brightGreen, t.DEFAULT_ANSI_COLORS[10]), i.ansi[11] = g(e.brightYellow, t.DEFAULT_ANSI_COLORS[11]), i.ansi[12] = g(e.brightBlue, t.DEFAULT_ANSI_COLORS[12]), i.ansi[13] = g(e.brightMagenta, t.DEFAULT_ANSI_COLORS[13]), i.ansi[14] = g(e.brightCyan, t.DEFAULT_ANSI_COLORS[14]), i.ansi[15] = g(e.brightWhite, t.DEFAULT_ANSI_COLORS[15]), e.extendedAnsi) { const s = Math.min(i.ansi.length - 16, e.extendedAnsi.length); for (let r = 0; r < s; r++)i.ansi[r + 16] = g(e.extendedAnsi[r], t.DEFAULT_ANSI_COLORS[r + 16]) } this._contrastCache.clear(), this._halfContrastCache.clear(), this._updateRestoreColors(), this._onChangeColors.fire(this.colors) } restoreColor(e) { this._restoreColor(e), this._onChangeColors.fire(this.colors) } _restoreColor(e) { if (void 0 !== e) switch (e) { case 256: this._colors.foreground = this._restoreColors.foreground; break; case 257: this._colors.background = this._restoreColors.background; break; case 258: this._colors.cursor = this._restoreColors.cursor; break; default: this._colors.ansi[e] = this._restoreColors.ansi[e] } else for (let e = 0; e < this._restoreColors.ansi.length; ++e)this._colors.ansi[e] = this._restoreColors.ansi[e] } modifyColors(e) { e(this._colors), this._onChangeColors.fire(this.colors) } _updateRestoreColors() { this._restoreColors = { foreground: this._colors.foreground, background: this._colors.background, cursor: this._colors.cursor, ansi: this._colors.ansi.slice() } } }; function g(e, t) { if (void 0 !== e) try { return o.css.toColor(e) } catch { } return t } t.ThemeService = v = s([r(0, c.IOptionsService)], v) }, 6349: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CircularList = void 0; const s = i(8460), r = i(844); class n extends r.Disposable { constructor(e) { super(), this._maxLength = e, this.onDeleteEmitter = this.register(new s.EventEmitter), this.onDelete = this.onDeleteEmitter.event, this.onInsertEmitter = this.register(new s.EventEmitter), this.onInsert = this.onInsertEmitter.event, this.onTrimEmitter = this.register(new s.EventEmitter), this.onTrim = this.onTrimEmitter.event, this._array = new Array(this._maxLength), this._startIndex = 0, this._length = 0 } get maxLength() { return this._maxLength } set maxLength(e) { if (this._maxLength === e) return; const t = new Array(e); for (let i = 0; i < Math.min(e, this.length); i++)t[i] = this._array[this._getCyclicIndex(i)]; this._array = t, this._maxLength = e, this._startIndex = 0 } get length() { return this._length } set length(e) { if (e > this._length) for (let t = this._length; t < e; t++)this._array[t] = void 0; this._length = e } get(e) { return this._array[this._getCyclicIndex(e)] } set(e, t) { this._array[this._getCyclicIndex(e)] = t } push(e) { this._array[this._getCyclicIndex(this._length)] = e, this._length === this._maxLength ? (this._startIndex = ++this._startIndex % this._maxLength, this.onTrimEmitter.fire(1)) : this._length++ } recycle() { if (this._length !== this._maxLength) throw new Error("Can only recycle when the buffer is full"); return this._startIndex = ++this._startIndex % this._maxLength, this.onTrimEmitter.fire(1), this._array[this._getCyclicIndex(this._length - 1)] } get isFull() { return this._length === this._maxLength } pop() { return this._array[this._getCyclicIndex(this._length-- - 1)] } splice(e, t, ...i) { if (t) { for (let i = e; i < this._length - t; i++)this._array[this._getCyclicIndex(i)] = this._array[this._getCyclicIndex(i + t)]; this._length -= t, this.onDeleteEmitter.fire({ index: e, amount: t }) } for (let t = this._length - 1; t >= e; t--)this._array[this._getCyclicIndex(t + i.length)] = this._array[this._getCyclicIndex(t)]; for (let t = 0; t < i.length; t++)this._array[this._getCyclicIndex(e + t)] = i[t]; if (i.length && this.onInsertEmitter.fire({ index: e, amount: i.length }), this._length + i.length > this._maxLength) { const e = this._length + i.length - this._maxLength; this._startIndex += e, this._length = this._maxLength, this.onTrimEmitter.fire(e) } else this._length += i.length } trimStart(e) { e > this._length && (e = this._length), this._startIndex += e, this._length -= e, this.onTrimEmitter.fire(e) } shiftElements(e, t, i) { if (!(t <= 0)) { if (e < 0 || e >= this._length) throw new Error("start argument out of range"); if (e + i < 0) throw new Error("Cannot shift elements in list beyond index 0"); if (i > 0) { for (let s = t - 1; s >= 0; s--)this.set(e + s + i, this.get(e + s)); const s = e + t + i - this._length; if (s > 0) for (this._length += s; this._length > this._maxLength;)this._length--, this._startIndex++, this.onTrimEmitter.fire(1) } else for (let s = 0; s < t; s++)this.set(e + s + i, this.get(e + s)) } } _getCyclicIndex(e) { return (this._startIndex + e) % this._maxLength } } t.CircularList = n }, 1439: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.clone = void 0, t.clone = function e(t, i = 5) { if ("object" != typeof t) return t; const s = Array.isArray(t) ? [] : {}; for (const r in t) s[r] = i <= 1 ? t[r] : t[r] && e(t[r], i - 1); return s } }, 8055: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.contrastRatio = t.toPaddedHex = t.rgba = t.rgb = t.css = t.color = t.channels = t.NULL_COLOR = void 0; let i = 0, s = 0, r = 0, n = 0; var o, a, h, c, l; function d(e) { const t = e.toString(16); return t.length < 2 ? "0" + t : t } function _(e, t) { return e < t ? (t + .05) / (e + .05) : (e + .05) / (t + .05) } t.NULL_COLOR = { css: "#00000000", rgba: 0 }, function (e) { e.toCss = function (e, t, i, s) { return void 0 !== s ? `#${d(e)}${d(t)}${d(i)}${d(s)}` : `#${d(e)}${d(t)}${d(i)}` }, e.toRgba = function (e, t, i, s = 255) { return (e << 24 | t << 16 | i << 8 | s) >>> 0 }, e.toColor = function (t, i, s, r) { return { css: e.toCss(t, i, s, r), rgba: e.toRgba(t, i, s, r) } } }(o || (t.channels = o = {})), function (e) { function t(e, t) { return n = Math.round(255 * t), [i, s, r] = l.toChannels(e.rgba), { css: o.toCss(i, s, r, n), rgba: o.toRgba(i, s, r, n) } } e.blend = function (e, t) { if (n = (255 & t.rgba) / 255, 1 === n) return { css: t.css, rgba: t.rgba }; const a = t.rgba >> 24 & 255, h = t.rgba >> 16 & 255, c = t.rgba >> 8 & 255, l = e.rgba >> 24 & 255, d = e.rgba >> 16 & 255, _ = e.rgba >> 8 & 255; return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), { css: o.toCss(i, s, r), rgba: o.toRgba(i, s, r) } }, e.isOpaque = function (e) { return !(255 & ~e.rgba) }, e.ensureContrastRatio = function (e, t, i) { const s = l.ensureContrastRatio(e.rgba, t.rgba, i); if (s) return o.toColor(s >> 24 & 255, s >> 16 & 255, s >> 8 & 255) }, e.opaque = function (e) { const t = (255 | e.rgba) >>> 0; return [i, s, r] = l.toChannels(t), { css: o.toCss(i, s, r), rgba: t } }, e.opacity = t, e.multiplyOpacity = function (e, i) { return n = 255 & e.rgba, t(e, n * i / 255) }, e.toColorRGB = function (e) { return [e.rgba >> 24 & 255, e.rgba >> 16 & 255, e.rgba >> 8 & 255] } }(a || (t.color = a = {})), function (e) { let t, a; try { const e = document.createElement("canvas"); e.width = 1, e.height = 1; const i = e.getContext("2d", { willReadFrequently: !0 }); i && (t = i, t.globalCompositeOperation = "copy", a = t.createLinearGradient(0, 0, 1, 1)) } catch { } e.toColor = function (e) { if (e.match(/#[\da-f]{3,8}/i)) switch (e.length) { case 4: return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), o.toColor(i, s, r); case 5: return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), n = parseInt(e.slice(4, 5).repeat(2), 16), o.toColor(i, s, r, n); case 7: return { css: e, rgba: (parseInt(e.slice(1), 16) << 8 | 255) >>> 0 }; case 9: return { css: e, rgba: parseInt(e.slice(1), 16) >>> 0 } }const h = e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/); if (h) return i = parseInt(h[1]), s = parseInt(h[2]), r = parseInt(h[3]), n = Math.round(255 * (void 0 === h[5] ? 1 : parseFloat(h[5]))), o.toColor(i, s, r, n); if (!t || !a) throw new Error("css.toColor: Unsupported css format"); if (t.fillStyle = a, t.fillStyle = e, "string" != typeof t.fillStyle) throw new Error("css.toColor: Unsupported css format"); if (t.fillRect(0, 0, 1, 1), [i, s, r, n] = t.getImageData(0, 0, 1, 1).data, 255 !== n) throw new Error("css.toColor: Unsupported css format"); return { rgba: o.toRgba(i, s, r, n), css: e } } }(h || (t.css = h = {})), function (e) { function t(e, t, i) { const s = e / 255, r = t / 255, n = i / 255; return .2126 * (s <= .03928 ? s / 12.92 : Math.pow((s + .055) / 1.055, 2.4)) + .7152 * (r <= .03928 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4)) + .0722 * (n <= .03928 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4)) } e.relativeLuminance = function (e) { return t(e >> 16 & 255, e >> 8 & 255, 255 & e) }, e.relativeLuminance2 = t }(c || (t.rgb = c = {})), function (e) { function t(e, t, i) { const s = e >> 24 & 255, r = e >> 16 & 255, n = e >> 8 & 255; let o = t >> 24 & 255, a = t >> 16 & 255, h = t >> 8 & 255, l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); for (; l < i && (o > 0 || a > 0 || h > 0);)o -= Math.max(0, Math.ceil(.1 * o)), a -= Math.max(0, Math.ceil(.1 * a)), h -= Math.max(0, Math.ceil(.1 * h)), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); return (o << 24 | a << 16 | h << 8 | 255) >>> 0 } function a(e, t, i) { const s = e >> 24 & 255, r = e >> 16 & 255, n = e >> 8 & 255; let o = t >> 24 & 255, a = t >> 16 & 255, h = t >> 8 & 255, l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); for (; l < i && (o < 255 || a < 255 || h < 255);)o = Math.min(255, o + Math.ceil(.1 * (255 - o))), a = Math.min(255, a + Math.ceil(.1 * (255 - a))), h = Math.min(255, h + Math.ceil(.1 * (255 - h))), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); return (o << 24 | a << 16 | h << 8 | 255) >>> 0 } e.blend = function (e, t) { if (n = (255 & t) / 255, 1 === n) return t; const a = t >> 24 & 255, h = t >> 16 & 255, c = t >> 8 & 255, l = e >> 24 & 255, d = e >> 16 & 255, _ = e >> 8 & 255; return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), o.toRgba(i, s, r) }, e.ensureContrastRatio = function (e, i, s) { const r = c.relativeLuminance(e >> 8), n = c.relativeLuminance(i >> 8); if (_(r, n) < s) { if (n < r) { const n = t(e, i, s), o = _(r, c.relativeLuminance(n >> 8)); if (o < s) { const t = a(e, i, s); return o > _(r, c.relativeLuminance(t >> 8)) ? n : t } return n } const o = a(e, i, s), h = _(r, c.relativeLuminance(o >> 8)); if (h < s) { const n = t(e, i, s); return h > _(r, c.relativeLuminance(n >> 8)) ? o : n } return o } }, e.reduceLuminance = t, e.increaseLuminance = a, e.toChannels = function (e) { return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e] } }(l || (t.rgba = l = {})), t.toPaddedHex = d, t.contrastRatio = _ }, 8969: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CoreTerminal = void 0; const s = i(844), r = i(2585), n = i(4348), o = i(7866), a = i(744), h = i(7302), c = i(6975), l = i(8460), d = i(1753), _ = i(1480), u = i(7994), f = i(9282), v = i(5435), g = i(5981), p = i(2660); let m = !1; class C extends s.Disposable { get onScroll() { return this._onScrollApi || (this._onScrollApi = this.register(new l.EventEmitter), this._onScroll.event((e => { this._onScrollApi?.fire(e.position) }))), this._onScrollApi.event } get cols() { return this._bufferService.cols } get rows() { return this._bufferService.rows } get buffers() { return this._bufferService.buffers } get options() { return this.optionsService.options } set options(e) { for (const t in e) this.optionsService.options[t] = e[t] } constructor(e) { super(), this._windowsWrappingHeuristics = this.register(new s.MutableDisposable), this._onBinary = this.register(new l.EventEmitter), this.onBinary = this._onBinary.event, this._onData = this.register(new l.EventEmitter), this.onData = this._onData.event, this._onLineFeed = this.register(new l.EventEmitter), this.onLineFeed = this._onLineFeed.event, this._onResize = this.register(new l.EventEmitter), this.onResize = this._onResize.event, this._onWriteParsed = this.register(new l.EventEmitter), this.onWriteParsed = this._onWriteParsed.event, this._onScroll = this.register(new l.EventEmitter), this._instantiationService = new n.InstantiationService, this.optionsService = this.register(new h.OptionsService(e)), this._instantiationService.setService(r.IOptionsService, this.optionsService), this._bufferService = this.register(this._instantiationService.createInstance(a.BufferService)), this._instantiationService.setService(r.IBufferService, this._bufferService), this._logService = this.register(this._instantiationService.createInstance(o.LogService)), this._instantiationService.setService(r.ILogService, this._logService), this.coreService = this.register(this._instantiationService.createInstance(c.CoreService)), this._instantiationService.setService(r.ICoreService, this.coreService), this.coreMouseService = this.register(this._instantiationService.createInstance(d.CoreMouseService)), this._instantiationService.setService(r.ICoreMouseService, this.coreMouseService), this.unicodeService = this.register(this._instantiationService.createInstance(_.UnicodeService)), this._instantiationService.setService(r.IUnicodeService, this.unicodeService), this._charsetService = this._instantiationService.createInstance(u.CharsetService), this._instantiationService.setService(r.ICharsetService, this._charsetService), this._oscLinkService = this._instantiationService.createInstance(p.OscLinkService), this._instantiationService.setService(r.IOscLinkService, this._oscLinkService), this._inputHandler = this.register(new v.InputHandler(this._bufferService, this._charsetService, this.coreService, this._logService, this.optionsService, this._oscLinkService, this.coreMouseService, this.unicodeService)), this.register((0, l.forwardEvent)(this._inputHandler.onLineFeed, this._onLineFeed)), this.register(this._inputHandler), this.register((0, l.forwardEvent)(this._bufferService.onResize, this._onResize)), this.register((0, l.forwardEvent)(this.coreService.onData, this._onData)), this.register((0, l.forwardEvent)(this.coreService.onBinary, this._onBinary)), this.register(this.coreService.onRequestScrollToBottom((() => this.scrollToBottom()))), this.register(this.coreService.onUserInput((() => this._writeBuffer.handleUserInput()))), this.register(this.optionsService.onMultipleOptionChange(["windowsMode", "windowsPty"], (() => this._handleWindowsPtyOptionChange()))), this.register(this._bufferService.onScroll((e => { this._onScroll.fire({ position: this._bufferService.buffer.ydisp, source: 0 }), this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom) }))), this.register(this._inputHandler.onScroll((e => { this._onScroll.fire({ position: this._bufferService.buffer.ydisp, source: 0 }), this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom) }))), this._writeBuffer = this.register(new g.WriteBuffer(((e, t) => this._inputHandler.parse(e, t)))), this.register((0, l.forwardEvent)(this._writeBuffer.onWriteParsed, this._onWriteParsed)) } write(e, t) { this._writeBuffer.write(e, t) } writeSync(e, t) { this._logService.logLevel <= r.LogLevelEnum.WARN && !m && (this._logService.warn("writeSync is unreliable and will be removed soon."), m = !0), this._writeBuffer.writeSync(e, t) } input(e, t = !0) { this.coreService.triggerDataEvent(e, t) } resize(e, t) { isNaN(e) || isNaN(t) || (e = Math.max(e, a.MINIMUM_COLS), t = Math.max(t, a.MINIMUM_ROWS), this._bufferService.resize(e, t)) } scroll(e, t = !1) { this._bufferService.scroll(e, t) } scrollLines(e, t, i) { this._bufferService.scrollLines(e, t, i) } scrollPages(e) { this.scrollLines(e * (this.rows - 1)) } scrollToTop() { this.scrollLines(-this._bufferService.buffer.ydisp) } scrollToBottom() { this.scrollLines(this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp) } scrollToLine(e) { const t = e - this._bufferService.buffer.ydisp; 0 !== t && this.scrollLines(t) } registerEscHandler(e, t) { return this._inputHandler.registerEscHandler(e, t) } registerDcsHandler(e, t) { return this._inputHandler.registerDcsHandler(e, t) } registerCsiHandler(e, t) { return this._inputHandler.registerCsiHandler(e, t) } registerOscHandler(e, t) { return this._inputHandler.registerOscHandler(e, t) } _setup() { this._handleWindowsPtyOptionChange() } reset() { this._inputHandler.reset(), this._bufferService.reset(), this._charsetService.reset(), this.coreService.reset(), this.coreMouseService.reset() } _handleWindowsPtyOptionChange() { let e = !1; const t = this.optionsService.rawOptions.windowsPty; t && void 0 !== t.buildNumber && void 0 !== t.buildNumber ? e = !!("conpty" === t.backend && t.buildNumber < 21376) : this.optionsService.rawOptions.windowsMode && (e = !0), e ? this._enableWindowsWrappingHeuristics() : this._windowsWrappingHeuristics.clear() } _enableWindowsWrappingHeuristics() { if (!this._windowsWrappingHeuristics.value) { const e = []; e.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null, this._bufferService))), e.push(this.registerCsiHandler({ final: "H" }, (() => ((0, f.updateWindowsModeWrappedState)(this._bufferService), !1)))), this._windowsWrappingHeuristics.value = (0, s.toDisposable)((() => { for (const t of e) t.dispose() })) } } } t.CoreTerminal = C }, 8460: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class { constructor() { this._listeners = [], this._disposed = !1 } get event() { return this._event || (this._event = e => (this._listeners.push(e), { dispose: () => { if (!this._disposed) for (let t = 0; t < this._listeners.length; t++)if (this._listeners[t] === e) return void this._listeners.splice(t, 1) } })), this._event } fire(e, t) { const i = []; for (let e = 0; e < this._listeners.length; e++)i.push(this._listeners[e]); for (let s = 0; s < i.length; s++)i[s].call(void 0, e, t) } dispose() { this.clearListeners(), this._disposed = !0 } clearListeners() { this._listeners && (this._listeners.length = 0) } }, t.forwardEvent = function (e, t) { return e((e => t.fire(e))) }, t.runAndSubscribe = function (e, t) { return t(void 0), e((e => t(e))) } }, 5435: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.InputHandler = t.WindowsOptionsReportType = void 0; const n = i(2584), o = i(7116), a = i(2015), h = i(844), c = i(482), l = i(8437), d = i(8460), _ = i(643), u = i(511), f = i(3734), v = i(2585), g = i(1480), p = i(6242), m = i(6351), C = i(5941), S = { "(": 0, ")": 1, "*": 2, "+": 3, "-": 1, ".": 2 }, b = 131072; function w(e, t) { if (e > 24) return t.setWinLines || !1; switch (e) { case 1: return !!t.restoreWin; case 2: return !!t.minimizeWin; case 3: return !!t.setWinPosition; case 4: return !!t.setWinSizePixels; case 5: return !!t.raiseWin; case 6: return !!t.lowerWin; case 7: return !!t.refreshWin; case 8: return !!t.setWinSizeChars; case 9: return !!t.maximizeWin; case 10: return !!t.fullscreenWin; case 11: return !!t.getWinState; case 13: return !!t.getWinPosition; case 14: return !!t.getWinSizePixels; case 15: return !!t.getScreenSizePixels; case 16: return !!t.getCellSizePixels; case 18: return !!t.getWinSizeChars; case 19: return !!t.getScreenSizeChars; case 20: return !!t.getIconTitle; case 21: return !!t.getWinTitle; case 22: return !!t.pushTitle; case 23: return !!t.popTitle; case 24: return !!t.setWinLines }return !1 } var y; !function (e) { e[e.GET_WIN_SIZE_PIXELS = 0] = "GET_WIN_SIZE_PIXELS", e[e.GET_CELL_SIZE_PIXELS = 1] = "GET_CELL_SIZE_PIXELS" }(y || (t.WindowsOptionsReportType = y = {})); let L = 0; class x extends h.Disposable { getAttrData() { return this._curAttrData } constructor(e, t, i, s, r, h, _, f, v = new a.EscapeSequenceParser) { super(), this._bufferService = e, this._charsetService = t, this._coreService = i, this._logService = s, this._optionsService = r, this._oscLinkService = h, this._coreMouseService = _, this._unicodeService = f, this._parser = v, this._parseBuffer = new Uint32Array(4096), this._stringDecoder = new c.StringToUtf32, this._utf8Decoder = new c.Utf8ToUtf32, this._workCell = new u.CellData, this._windowTitle = "", this._iconName = "", this._windowTitleStack = [], this._iconNameStack = [], this._curAttrData = l.DEFAULT_ATTR_DATA.clone(), this._eraseAttrDataInternal = l.DEFAULT_ATTR_DATA.clone(), this._onRequestBell = this.register(new d.EventEmitter), this.onRequestBell = this._onRequestBell.event, this._onRequestRefreshRows = this.register(new d.EventEmitter), this.onRequestRefreshRows = this._onRequestRefreshRows.event, this._onRequestReset = this.register(new d.EventEmitter), this.onRequestReset = this._onRequestReset.event, this._onRequestSendFocus = this.register(new d.EventEmitter), this.onRequestSendFocus = this._onRequestSendFocus.event, this._onRequestSyncScrollBar = this.register(new d.EventEmitter), this.onRequestSyncScrollBar = this._onRequestSyncScrollBar.event, this._onRequestWindowsOptionsReport = this.register(new d.EventEmitter), this.onRequestWindowsOptionsReport = this._onRequestWindowsOptionsReport.event, this._onA11yChar = this.register(new d.EventEmitter), this.onA11yChar = this._onA11yChar.event, this._onA11yTab = this.register(new d.EventEmitter), this.onA11yTab = this._onA11yTab.event, this._onCursorMove = this.register(new d.EventEmitter), this.onCursorMove = this._onCursorMove.event, this._onLineFeed = this.register(new d.EventEmitter), this.onLineFeed = this._onLineFeed.event, this._onScroll = this.register(new d.EventEmitter), this.onScroll = this._onScroll.event, this._onTitleChange = this.register(new d.EventEmitter), this.onTitleChange = this._onTitleChange.event, this._onColor = this.register(new d.EventEmitter), this.onColor = this._onColor.event, this._parseStack = { paused: !1, cursorStartX: 0, cursorStartY: 0, decodedLength: 0, position: 0 }, this._specialColors = [256, 257, 258], this.register(this._parser), this._dirtyRowTracker = new E(this._bufferService), this._activeBuffer = this._bufferService.buffer, this.register(this._bufferService.buffers.onBufferActivate((e => this._activeBuffer = e.activeBuffer))), this._parser.setCsiHandlerFallback(((e, t) => { this._logService.debug("Unknown CSI code: ", { identifier: this._parser.identToString(e), params: t.toArray() }) })), this._parser.setEscHandlerFallback((e => { this._logService.debug("Unknown ESC code: ", { identifier: this._parser.identToString(e) }) })), this._parser.setExecuteHandlerFallback((e => { this._logService.debug("Unknown EXECUTE code: ", { code: e }) })), this._parser.setOscHandlerFallback(((e, t, i) => { this._logService.debug("Unknown OSC code: ", { identifier: e, action: t, data: i }) })), this._parser.setDcsHandlerFallback(((e, t, i) => { "HOOK" === t && (i = i.toArray()), this._logService.debug("Unknown DCS code: ", { identifier: this._parser.identToString(e), action: t, payload: i }) })), this._parser.setPrintHandler(((e, t, i) => this.print(e, t, i))), this._parser.registerCsiHandler({ final: "@" }, (e => this.insertChars(e))), this._parser.registerCsiHandler({ intermediates: " ", final: "@" }, (e => this.scrollLeft(e))), this._parser.registerCsiHandler({ final: "A" }, (e => this.cursorUp(e))), this._parser.registerCsiHandler({ intermediates: " ", final: "A" }, (e => this.scrollRight(e))), this._parser.registerCsiHandler({ final: "B" }, (e => this.cursorDown(e))), this._parser.registerCsiHandler({ final: "C" }, (e => this.cursorForward(e))), this._parser.registerCsiHandler({ final: "D" }, (e => this.cursorBackward(e))), this._parser.registerCsiHandler({ final: "E" }, (e => this.cursorNextLine(e))), this._parser.registerCsiHandler({ final: "F" }, (e => this.cursorPrecedingLine(e))), this._parser.registerCsiHandler({ final: "G" }, (e => this.cursorCharAbsolute(e))), this._parser.registerCsiHandler({ final: "H" }, (e => this.cursorPosition(e))), this._parser.registerCsiHandler({ final: "I" }, (e => this.cursorForwardTab(e))), this._parser.registerCsiHandler({ final: "J" }, (e => this.eraseInDisplay(e, !1))), this._parser.registerCsiHandler({ prefix: "?", final: "J" }, (e => this.eraseInDisplay(e, !0))), this._parser.registerCsiHandler({ final: "K" }, (e => this.eraseInLine(e, !1))), this._parser.registerCsiHandler({ prefix: "?", final: "K" }, (e => this.eraseInLine(e, !0))), this._parser.registerCsiHandler({ final: "L" }, (e => this.insertLines(e))), this._parser.registerCsiHandler({ final: "M" }, (e => this.deleteLines(e))), this._parser.registerCsiHandler({ final: "P" }, (e => this.deleteChars(e))), this._parser.registerCsiHandler({ final: "S" }, (e => this.scrollUp(e))), this._parser.registerCsiHandler({ final: "T" }, (e => this.scrollDown(e))), this._parser.registerCsiHandler({ final: "X" }, (e => this.eraseChars(e))), this._parser.registerCsiHandler({ final: "Z" }, (e => this.cursorBackwardTab(e))), this._parser.registerCsiHandler({ final: "`" }, (e => this.charPosAbsolute(e))), this._parser.registerCsiHandler({ final: "a" }, (e => this.hPositionRelative(e))), this._parser.registerCsiHandler({ final: "b" }, (e => this.repeatPrecedingCharacter(e))), this._parser.registerCsiHandler({ final: "c" }, (e => this.sendDeviceAttributesPrimary(e))), this._parser.registerCsiHandler({ prefix: ">", final: "c" }, (e => this.sendDeviceAttributesSecondary(e))), this._parser.registerCsiHandler({ final: "d" }, (e => this.linePosAbsolute(e))), this._parser.registerCsiHandler({ final: "e" }, (e => this.vPositionRelative(e))), this._parser.registerCsiHandler({ final: "f" }, (e => this.hVPosition(e))), this._parser.registerCsiHandler({ final: "g" }, (e => this.tabClear(e))), this._parser.registerCsiHandler({ final: "h" }, (e => this.setMode(e))), this._parser.registerCsiHandler({ prefix: "?", final: "h" }, (e => this.setModePrivate(e))), this._parser.registerCsiHandler({ final: "l" }, (e => this.resetMode(e))), this._parser.registerCsiHandler({ prefix: "?", final: "l" }, (e => this.resetModePrivate(e))), this._parser.registerCsiHandler({ final: "m" }, (e => this.charAttributes(e))), this._parser.registerCsiHandler({ final: "n" }, (e => this.deviceStatus(e))), this._parser.registerCsiHandler({ prefix: "?", final: "n" }, (e => this.deviceStatusPrivate(e))), this._parser.registerCsiHandler({ intermediates: "!", final: "p" }, (e => this.softReset(e))), this._parser.registerCsiHandler({ intermediates: " ", final: "q" }, (e => this.setCursorStyle(e))), this._parser.registerCsiHandler({ final: "r" }, (e => this.setScrollRegion(e))), this._parser.registerCsiHandler({ final: "s" }, (e => this.saveCursor(e))), this._parser.registerCsiHandler({ final: "t" }, (e => this.windowOptions(e))), this._parser.registerCsiHandler({ final: "u" }, (e => this.restoreCursor(e))), this._parser.registerCsiHandler({ intermediates: "'", final: "}" }, (e => this.insertColumns(e))), this._parser.registerCsiHandler({ intermediates: "'", final: "~" }, (e => this.deleteColumns(e))), this._parser.registerCsiHandler({ intermediates: '"', final: "q" }, (e => this.selectProtected(e))), this._parser.registerCsiHandler({ intermediates: "$", final: "p" }, (e => this.requestMode(e, !0))), this._parser.registerCsiHandler({ prefix: "?", intermediates: "$", final: "p" }, (e => this.requestMode(e, !1))), this._parser.setExecuteHandler(n.C0.BEL, (() => this.bell())), this._parser.setExecuteHandler(n.C0.LF, (() => this.lineFeed())), this._parser.setExecuteHandler(n.C0.VT, (() => this.lineFeed())), this._parser.setExecuteHandler(n.C0.FF, (() => this.lineFeed())), this._parser.setExecuteHandler(n.C0.CR, (() => this.carriageReturn())), this._parser.setExecuteHandler(n.C0.BS, (() => this.backspace())), this._parser.setExecuteHandler(n.C0.HT, (() => this.tab())), this._parser.setExecuteHandler(n.C0.SO, (() => this.shiftOut())), this._parser.setExecuteHandler(n.C0.SI, (() => this.shiftIn())), this._parser.setExecuteHandler(n.C1.IND, (() => this.index())), this._parser.setExecuteHandler(n.C1.NEL, (() => this.nextLine())), this._parser.setExecuteHandler(n.C1.HTS, (() => this.tabSet())), this._parser.registerOscHandler(0, new p.OscHandler((e => (this.setTitle(e), this.setIconName(e), !0)))), this._parser.registerOscHandler(1, new p.OscHandler((e => this.setIconName(e)))), this._parser.registerOscHandler(2, new p.OscHandler((e => this.setTitle(e)))), this._parser.registerOscHandler(4, new p.OscHandler((e => this.setOrReportIndexedColor(e)))), this._parser.registerOscHandler(8, new p.OscHandler((e => this.setHyperlink(e)))), this._parser.registerOscHandler(10, new p.OscHandler((e => this.setOrReportFgColor(e)))), this._parser.registerOscHandler(11, new p.OscHandler((e => this.setOrReportBgColor(e)))), this._parser.registerOscHandler(12, new p.OscHandler((e => this.setOrReportCursorColor(e)))), this._parser.registerOscHandler(104, new p.OscHandler((e => this.restoreIndexedColor(e)))), this._parser.registerOscHandler(110, new p.OscHandler((e => this.restoreFgColor(e)))), this._parser.registerOscHandler(111, new p.OscHandler((e => this.restoreBgColor(e)))), this._parser.registerOscHandler(112, new p.OscHandler((e => this.restoreCursorColor(e)))), this._parser.registerEscHandler({ final: "7" }, (() => this.saveCursor())), this._parser.registerEscHandler({ final: "8" }, (() => this.restoreCursor())), this._parser.registerEscHandler({ final: "D" }, (() => this.index())), this._parser.registerEscHandler({ final: "E" }, (() => this.nextLine())), this._parser.registerEscHandler({ final: "H" }, (() => this.tabSet())), this._parser.registerEscHandler({ final: "M" }, (() => this.reverseIndex())), this._parser.registerEscHandler({ final: "=" }, (() => this.keypadApplicationMode())), this._parser.registerEscHandler({ final: ">" }, (() => this.keypadNumericMode())), this._parser.registerEscHandler({ final: "c" }, (() => this.fullReset())), this._parser.registerEscHandler({ final: "n" }, (() => this.setgLevel(2))), this._parser.registerEscHandler({ final: "o" }, (() => this.setgLevel(3))), this._parser.registerEscHandler({ final: "|" }, (() => this.setgLevel(3))), this._parser.registerEscHandler({ final: "}" }, (() => this.setgLevel(2))), this._parser.registerEscHandler({ final: "~" }, (() => this.setgLevel(1))), this._parser.registerEscHandler({ intermediates: "%", final: "@" }, (() => this.selectDefaultCharset())), this._parser.registerEscHandler({ intermediates: "%", final: "G" }, (() => this.selectDefaultCharset())); for (const e in o.CHARSETS) this._parser.registerEscHandler({ intermediates: "(", final: e }, (() => this.selectCharset("(" + e))), this._parser.registerEscHandler({ intermediates: ")", final: e }, (() => this.selectCharset(")" + e))), this._parser.registerEscHandler({ intermediates: "*", final: e }, (() => this.selectCharset("*" + e))), this._parser.registerEscHandler({ intermediates: "+", final: e }, (() => this.selectCharset("+" + e))), this._parser.registerEscHandler({ intermediates: "-", final: e }, (() => this.selectCharset("-" + e))), this._parser.registerEscHandler({ intermediates: ".", final: e }, (() => this.selectCharset("." + e))), this._parser.registerEscHandler({ intermediates: "/", final: e }, (() => this.selectCharset("/" + e))); this._parser.registerEscHandler({ intermediates: "#", final: "8" }, (() => this.screenAlignmentPattern())), this._parser.setErrorHandler((e => (this._logService.error("Parsing error: ", e), e))), this._parser.registerDcsHandler({ intermediates: "$", final: "q" }, new m.DcsHandler(((e, t) => this.requestStatusString(e, t)))) } _preserveStack(e, t, i, s) { this._parseStack.paused = !0, this._parseStack.cursorStartX = e, this._parseStack.cursorStartY = t, this._parseStack.decodedLength = i, this._parseStack.position = s } _logSlowResolvingAsync(e) { this._logService.logLevel <= v.LogLevelEnum.WARN && Promise.race([e, new Promise(((e, t) => setTimeout((() => t("#SLOW_TIMEOUT")), 5e3)))]).catch((e => { if ("#SLOW_TIMEOUT" !== e) throw e; console.warn("async parser handler taking longer than 5000 ms") })) } _getCurrentLinkId() { return this._curAttrData.extended.urlId } parse(e, t) { let i, s = this._activeBuffer.x, r = this._activeBuffer.y, n = 0; const o = this._parseStack.paused; if (o) { if (i = this._parser.parse(this._parseBuffer, this._parseStack.decodedLength, t)) return this._logSlowResolvingAsync(i), i; s = this._parseStack.cursorStartX, r = this._parseStack.cursorStartY, this._parseStack.paused = !1, e.length > b && (n = this._parseStack.position + b) } if (this._logService.logLevel <= v.LogLevelEnum.DEBUG && this._logService.debug("parsing data" + ("string" == typeof e ? ` "${e}"` : ` "${Array.prototype.map.call(e, (e => String.fromCharCode(e))).join("")}"`), "string" == typeof e ? e.split("").map((e => e.charCodeAt(0))) : e), this._parseBuffer.length < e.length && this._parseBuffer.length < b && (this._parseBuffer = new Uint32Array(Math.min(e.length, b))), o || this._dirtyRowTracker.clearRange(), e.length > b) for (let t = n; t < e.length; t += b) { const n = t + b < e.length ? t + b : e.length, o = "string" == typeof e ? this._stringDecoder.decode(e.substring(t, n), this._parseBuffer) : this._utf8Decoder.decode(e.subarray(t, n), this._parseBuffer); if (i = this._parser.parse(this._parseBuffer, o)) return this._preserveStack(s, r, o, t), this._logSlowResolvingAsync(i), i } else if (!o) { const t = "string" == typeof e ? this._stringDecoder.decode(e, this._parseBuffer) : this._utf8Decoder.decode(e, this._parseBuffer); if (i = this._parser.parse(this._parseBuffer, t)) return this._preserveStack(s, r, t, 0), this._logSlowResolvingAsync(i), i } this._activeBuffer.x === s && this._activeBuffer.y === r || this._onCursorMove.fire(); const a = this._dirtyRowTracker.end + (this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp), h = this._dirtyRowTracker.start + (this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp); h < this._bufferService.rows && this._onRequestRefreshRows.fire(Math.min(h, this._bufferService.rows - 1), Math.min(a, this._bufferService.rows - 1)) } print(e, t, i) { let s, r; const n = this._charsetService.charset, o = this._optionsService.rawOptions.screenReaderMode, a = this._bufferService.cols, h = this._coreService.decPrivateModes.wraparound, d = this._coreService.modes.insertMode, u = this._curAttrData; let f = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y); this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._activeBuffer.x && i - t > 0 && 2 === f.getWidth(this._activeBuffer.x - 1) && f.setCellFromCodepoint(this._activeBuffer.x - 1, 0, 1, u); let v = this._parser.precedingJoinState; for (let p = t; p < i; ++p) { if (s = e[p], s < 127 && n) { const e = n[String.fromCharCode(s)]; e && (s = e.charCodeAt(0)) } const t = this._unicodeService.charProperties(s, v); r = g.UnicodeService.extractWidth(t); const i = g.UnicodeService.extractShouldJoin(t), m = i ? g.UnicodeService.extractWidth(v) : 0; if (v = t, o && this._onA11yChar.fire((0, c.stringFromCodePoint)(s)), this._getCurrentLinkId() && this._oscLinkService.addLineToLink(this._getCurrentLinkId(), this._activeBuffer.ybase + this._activeBuffer.y), this._activeBuffer.x + r - m > a) if (h) { const e = f; let t = this._activeBuffer.x - m; for (this._activeBuffer.x = m, this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData(), !0)) : (this._activeBuffer.y >= this._bufferService.rows && (this._activeBuffer.y = this._bufferService.rows - 1), this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = !0), f = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y), m > 0 && f instanceof l.BufferLine && f.copyCellsFrom(e, t, 0, m, !1); t < a;)e.setCellFromCodepoint(t++, 0, 1, u) } else if (this._activeBuffer.x = a - 1, 2 === r) continue; if (i && this._activeBuffer.x) { const e = f.getWidth(this._activeBuffer.x - 1) ? 1 : 2; f.addCodepointToCell(this._activeBuffer.x - e, s, r); for (let e = r - m; --e >= 0;)f.setCellFromCodepoint(this._activeBuffer.x++, 0, 0, u) } else if (d && (f.insertCells(this._activeBuffer.x, r - m, this._activeBuffer.getNullCell(u)), 2 === f.getWidth(a - 1) && f.setCellFromCodepoint(a - 1, _.NULL_CELL_CODE, _.NULL_CELL_WIDTH, u)), f.setCellFromCodepoint(this._activeBuffer.x++, s, r, u), r > 0) for (; --r;)f.setCellFromCodepoint(this._activeBuffer.x++, 0, 0, u) } this._parser.precedingJoinState = v, this._activeBuffer.x < a && i - t > 0 && 0 === f.getWidth(this._activeBuffer.x) && !f.hasContent(this._activeBuffer.x) && f.setCellFromCodepoint(this._activeBuffer.x, 0, 1, u), this._dirtyRowTracker.markDirty(this._activeBuffer.y) } registerCsiHandler(e, t) { return "t" !== e.final || e.prefix || e.intermediates ? this._parser.registerCsiHandler(e, t) : this._parser.registerCsiHandler(e, (e => !w(e.params[0], this._optionsService.rawOptions.windowOptions) || t(e))) } registerDcsHandler(e, t) { return this._parser.registerDcsHandler(e, new m.DcsHandler(t)) } registerEscHandler(e, t) { return this._parser.registerEscHandler(e, t) } registerOscHandler(e, t) { return this._parser.registerOscHandler(e, new p.OscHandler(t)) } bell() { return this._onRequestBell.fire(), !0 } lineFeed() { return this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._optionsService.rawOptions.convertEol && (this._activeBuffer.x = 0), this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData())) : this._activeBuffer.y >= this._bufferService.rows ? this._activeBuffer.y = this._bufferService.rows - 1 : this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = !1, this._activeBuffer.x >= this._bufferService.cols && this._activeBuffer.x--, this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._onLineFeed.fire(), !0 } carriageReturn() { return this._activeBuffer.x = 0, !0 } backspace() { if (!this._coreService.decPrivateModes.reverseWraparound) return this._restrictCursor(), this._activeBuffer.x > 0 && this._activeBuffer.x--, !0; if (this._restrictCursor(this._bufferService.cols), this._activeBuffer.x > 0) this._activeBuffer.x--; else if (0 === this._activeBuffer.x && this._activeBuffer.y > this._activeBuffer.scrollTop && this._activeBuffer.y <= this._activeBuffer.scrollBottom && this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)?.isWrapped) { this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = !1, this._activeBuffer.y--, this._activeBuffer.x = this._bufferService.cols - 1; const e = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y); e.hasWidth(this._activeBuffer.x) && !e.hasContent(this._activeBuffer.x) && this._activeBuffer.x-- } return this._restrictCursor(), !0 } tab() { if (this._activeBuffer.x >= this._bufferService.cols) return !0; const e = this._activeBuffer.x; return this._activeBuffer.x = this._activeBuffer.nextStop(), this._optionsService.rawOptions.screenReaderMode && this._onA11yTab.fire(this._activeBuffer.x - e), !0 } shiftOut() { return this._charsetService.setgLevel(1), !0 } shiftIn() { return this._charsetService.setgLevel(0), !0 } _restrictCursor(e = this._bufferService.cols - 1) { this._activeBuffer.x = Math.min(e, Math.max(0, this._activeBuffer.x)), this._activeBuffer.y = this._coreService.decPrivateModes.origin ? Math.min(this._activeBuffer.scrollBottom, Math.max(this._activeBuffer.scrollTop, this._activeBuffer.y)) : Math.min(this._bufferService.rows - 1, Math.max(0, this._activeBuffer.y)), this._dirtyRowTracker.markDirty(this._activeBuffer.y) } _setCursor(e, t) { this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._coreService.decPrivateModes.origin ? (this._activeBuffer.x = e, this._activeBuffer.y = this._activeBuffer.scrollTop + t) : (this._activeBuffer.x = e, this._activeBuffer.y = t), this._restrictCursor(), this._dirtyRowTracker.markDirty(this._activeBuffer.y) } _moveCursor(e, t) { this._restrictCursor(), this._setCursor(this._activeBuffer.x + e, this._activeBuffer.y + t) } cursorUp(e) { const t = this._activeBuffer.y - this._activeBuffer.scrollTop; return t >= 0 ? this._moveCursor(0, -Math.min(t, e.params[0] || 1)) : this._moveCursor(0, -(e.params[0] || 1)), !0 } cursorDown(e) { const t = this._activeBuffer.scrollBottom - this._activeBuffer.y; return t >= 0 ? this._moveCursor(0, Math.min(t, e.params[0] || 1)) : this._moveCursor(0, e.params[0] || 1), !0 } cursorForward(e) { return this._moveCursor(e.params[0] || 1, 0), !0 } cursorBackward(e) { return this._moveCursor(-(e.params[0] || 1), 0), !0 } cursorNextLine(e) { return this.cursorDown(e), this._activeBuffer.x = 0, !0 } cursorPrecedingLine(e) { return this.cursorUp(e), this._activeBuffer.x = 0, !0 } cursorCharAbsolute(e) { return this._setCursor((e.params[0] || 1) - 1, this._activeBuffer.y), !0 } cursorPosition(e) { return this._setCursor(e.length >= 2 ? (e.params[1] || 1) - 1 : 0, (e.params[0] || 1) - 1), !0 } charPosAbsolute(e) { return this._setCursor((e.params[0] || 1) - 1, this._activeBuffer.y), !0 } hPositionRelative(e) { return this._moveCursor(e.params[0] || 1, 0), !0 } linePosAbsolute(e) { return this._setCursor(this._activeBuffer.x, (e.params[0] || 1) - 1), !0 } vPositionRelative(e) { return this._moveCursor(0, e.params[0] || 1), !0 } hVPosition(e) { return this.cursorPosition(e), !0 } tabClear(e) { const t = e.params[0]; return 0 === t ? delete this._activeBuffer.tabs[this._activeBuffer.x] : 3 === t && (this._activeBuffer.tabs = {}), !0 } cursorForwardTab(e) { if (this._activeBuffer.x >= this._bufferService.cols) return !0; let t = e.params[0] || 1; for (; t--;)this._activeBuffer.x = this._activeBuffer.nextStop(); return !0 } cursorBackwardTab(e) { if (this._activeBuffer.x >= this._bufferService.cols) return !0; let t = e.params[0] || 1; for (; t--;)this._activeBuffer.x = this._activeBuffer.prevStop(); return !0 } selectProtected(e) { const t = e.params[0]; return 1 === t && (this._curAttrData.bg |= 536870912), 2 !== t && 0 !== t || (this._curAttrData.bg &= -536870913), !0 } _eraseInBufferLine(e, t, i, s = !1, r = !1) { const n = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); n.replaceCells(t, i, this._activeBuffer.getNullCell(this._eraseAttrData()), r), s && (n.isWrapped = !1) } _resetBufferLine(e, t = !1) { const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); i && (i.fill(this._activeBuffer.getNullCell(this._eraseAttrData()), t), this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase + e), i.isWrapped = !1) } eraseInDisplay(e, t = !1) { let i; switch (this._restrictCursor(this._bufferService.cols), e.params[0]) { case 0: for (i = this._activeBuffer.y, this._dirtyRowTracker.markDirty(i), this._eraseInBufferLine(i++, this._activeBuffer.x, this._bufferService.cols, 0 === this._activeBuffer.x, t); i < this._bufferService.rows; i++)this._resetBufferLine(i, t); this._dirtyRowTracker.markDirty(i); break; case 1: for (i = this._activeBuffer.y, this._dirtyRowTracker.markDirty(i), this._eraseInBufferLine(i, 0, this._activeBuffer.x + 1, !0, t), this._activeBuffer.x + 1 >= this._bufferService.cols && (this._activeBuffer.lines.get(i + 1).isWrapped = !1); i--;)this._resetBufferLine(i, t); this._dirtyRowTracker.markDirty(0); break; case 2: for (i = this._bufferService.rows, this._dirtyRowTracker.markDirty(i - 1); i--;)this._resetBufferLine(i, t); this._dirtyRowTracker.markDirty(0); break; case 3: const e = this._activeBuffer.lines.length - this._bufferService.rows; e > 0 && (this._activeBuffer.lines.trimStart(e), this._activeBuffer.ybase = Math.max(this._activeBuffer.ybase - e, 0), this._activeBuffer.ydisp = Math.max(this._activeBuffer.ydisp - e, 0), this._onScroll.fire(0)) }return !0 } eraseInLine(e, t = !1) { switch (this._restrictCursor(this._bufferService.cols), e.params[0]) { case 0: this._eraseInBufferLine(this._activeBuffer.y, this._activeBuffer.x, this._bufferService.cols, 0 === this._activeBuffer.x, t); break; case 1: this._eraseInBufferLine(this._activeBuffer.y, 0, this._activeBuffer.x + 1, !1, t); break; case 2: this._eraseInBufferLine(this._activeBuffer.y, 0, this._bufferService.cols, !0, t) }return this._dirtyRowTracker.markDirty(this._activeBuffer.y), !0 } insertLines(e) { this._restrictCursor(); let t = e.params[0] || 1; if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; const i = this._activeBuffer.ybase + this._activeBuffer.y, s = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom, r = this._bufferService.rows - 1 + this._activeBuffer.ybase - s + 1; for (; t--;)this._activeBuffer.lines.splice(r - 1, 1), this._activeBuffer.lines.splice(i, 0, this._activeBuffer.getBlankLine(this._eraseAttrData())); return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom), this._activeBuffer.x = 0, !0 } deleteLines(e) { this._restrictCursor(); let t = e.params[0] || 1; if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; const i = this._activeBuffer.ybase + this._activeBuffer.y; let s; for (s = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom, s = this._bufferService.rows - 1 + this._activeBuffer.ybase - s; t--;)this._activeBuffer.lines.splice(i, 1), this._activeBuffer.lines.splice(s, 0, this._activeBuffer.getBlankLine(this._eraseAttrData())); return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom), this._activeBuffer.x = 0, !0 } insertChars(e) { this._restrictCursor(); const t = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y); return t && (t.insertCells(this._activeBuffer.x, e.params[0] || 1, this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), !0 } deleteChars(e) { this._restrictCursor(); const t = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y); return t && (t.deleteCells(this._activeBuffer.x, e.params[0] || 1, this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), !0 } scrollUp(e) { let t = e.params[0] || 1; for (; t--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 1), this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 0, this._activeBuffer.getBlankLine(this._eraseAttrData())); return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 } scrollDown(e) { let t = e.params[0] || 1; for (; t--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 1), this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 0, this._activeBuffer.getBlankLine(l.DEFAULT_ATTR_DATA)); return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 } scrollLeft(e) { if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; const t = e.params[0] || 1; for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) { const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); i.deleteCells(0, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1 } return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 } scrollRight(e) { if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; const t = e.params[0] || 1; for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) { const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); i.insertCells(0, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1 } return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 } insertColumns(e) { if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; const t = e.params[0] || 1; for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) { const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); i.insertCells(this._activeBuffer.x, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1 } return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 } deleteColumns(e) { if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; const t = e.params[0] || 1; for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) { const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); i.deleteCells(this._activeBuffer.x, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1 } return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 } eraseChars(e) { this._restrictCursor(); const t = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y); return t && (t.replaceCells(this._activeBuffer.x, this._activeBuffer.x + (e.params[0] || 1), this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), !0 } repeatPrecedingCharacter(e) { const t = this._parser.precedingJoinState; if (!t) return !0; const i = e.params[0] || 1, s = g.UnicodeService.extractWidth(t), r = this._activeBuffer.x - s, n = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).getString(r), o = new Uint32Array(n.length * i); let a = 0; for (let e = 0; e < n.length;) { const t = n.codePointAt(e) || 0; o[a++] = t, e += t > 65535 ? 2 : 1 } let h = a; for (let e = 1; e < i; ++e)o.copyWithin(h, 0, a), h += a; return this.print(o, 0, h), !0 } sendDeviceAttributesPrimary(e) { return e.params[0] > 0 || (this._is("xterm") || this._is("rxvt-unicode") || this._is("screen") ? this._coreService.triggerDataEvent(n.C0.ESC + "[?1;2c") : this._is("linux") && this._coreService.triggerDataEvent(n.C0.ESC + "[?6c")), !0 } sendDeviceAttributesSecondary(e) { return e.params[0] > 0 || (this._is("xterm") ? this._coreService.triggerDataEvent(n.C0.ESC + "[>0;276;0c") : this._is("rxvt-unicode") ? this._coreService.triggerDataEvent(n.C0.ESC + "[>85;95;0c") : this._is("linux") ? this._coreService.triggerDataEvent(e.params[0] + "c") : this._is("screen") && this._coreService.triggerDataEvent(n.C0.ESC + "[>83;40003;0c")), !0 } _is(e) { return 0 === (this._optionsService.rawOptions.termName + "").indexOf(e) } setMode(e) { for (let t = 0; t < e.length; t++)switch (e.params[t]) { case 4: this._coreService.modes.insertMode = !0; break; case 20: this._optionsService.options.convertEol = !0 }return !0 } setModePrivate(e) { for (let t = 0; t < e.length; t++)switch (e.params[t]) { case 1: this._coreService.decPrivateModes.applicationCursorKeys = !0; break; case 2: this._charsetService.setgCharset(0, o.DEFAULT_CHARSET), this._charsetService.setgCharset(1, o.DEFAULT_CHARSET), this._charsetService.setgCharset(2, o.DEFAULT_CHARSET), this._charsetService.setgCharset(3, o.DEFAULT_CHARSET); break; case 3: this._optionsService.rawOptions.windowOptions.setWinLines && (this._bufferService.resize(132, this._bufferService.rows), this._onRequestReset.fire()); break; case 6: this._coreService.decPrivateModes.origin = !0, this._setCursor(0, 0); break; case 7: this._coreService.decPrivateModes.wraparound = !0; break; case 12: this._optionsService.options.cursorBlink = !0; break; case 45: this._coreService.decPrivateModes.reverseWraparound = !0; break; case 66: this._logService.debug("Serial port requested application keypad."), this._coreService.decPrivateModes.applicationKeypad = !0, this._onRequestSyncScrollBar.fire(); break; case 9: this._coreMouseService.activeProtocol = "X10"; break; case 1e3: this._coreMouseService.activeProtocol = "VT200"; break; case 1002: this._coreMouseService.activeProtocol = "DRAG"; break; case 1003: this._coreMouseService.activeProtocol = "ANY"; break; case 1004: this._coreService.decPrivateModes.sendFocus = !0, this._onRequestSendFocus.fire(); break; case 1005: this._logService.debug("DECSET 1005 not supported (see #2507)"); break; case 1006: this._coreMouseService.activeEncoding = "SGR"; break; case 1015: this._logService.debug("DECSET 1015 not supported (see #2507)"); break; case 1016: this._coreMouseService.activeEncoding = "SGR_PIXELS"; break; case 25: this._coreService.isCursorHidden = !1; break; case 1048: this.saveCursor(); break; case 1049: this.saveCursor(); case 47: case 1047: this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()), this._coreService.isCursorInitialized = !0, this._onRequestRefreshRows.fire(0, this._bufferService.rows - 1), this._onRequestSyncScrollBar.fire(); break; case 2004: this._coreService.decPrivateModes.bracketedPasteMode = !0 }return !0 } resetMode(e) { for (let t = 0; t < e.length; t++)switch (e.params[t]) { case 4: this._coreService.modes.insertMode = !1; break; case 20: this._optionsService.options.convertEol = !1 }return !0 } resetModePrivate(e) { for (let t = 0; t < e.length; t++)switch (e.params[t]) { case 1: this._coreService.decPrivateModes.applicationCursorKeys = !1; break; case 3: this._optionsService.rawOptions.windowOptions.setWinLines && (this._bufferService.resize(80, this._bufferService.rows), this._onRequestReset.fire()); break; case 6: this._coreService.decPrivateModes.origin = !1, this._setCursor(0, 0); break; case 7: this._coreService.decPrivateModes.wraparound = !1; break; case 12: this._optionsService.options.cursorBlink = !1; break; case 45: this._coreService.decPrivateModes.reverseWraparound = !1; break; case 66: this._logService.debug("Switching back to normal keypad."), this._coreService.decPrivateModes.applicationKeypad = !1, this._onRequestSyncScrollBar.fire(); break; case 9: case 1e3: case 1002: case 1003: this._coreMouseService.activeProtocol = "NONE"; break; case 1004: this._coreService.decPrivateModes.sendFocus = !1; break; case 1005: this._logService.debug("DECRST 1005 not supported (see #2507)"); break; case 1006: case 1016: this._coreMouseService.activeEncoding = "DEFAULT"; break; case 1015: this._logService.debug("DECRST 1015 not supported (see #2507)"); break; case 25: this._coreService.isCursorHidden = !0; break; case 1048: this.restoreCursor(); break; case 1049: case 47: case 1047: this._bufferService.buffers.activateNormalBuffer(), 1049 === e.params[t] && this.restoreCursor(), this._coreService.isCursorInitialized = !0, this._onRequestRefreshRows.fire(0, this._bufferService.rows - 1), this._onRequestSyncScrollBar.fire(); break; case 2004: this._coreService.decPrivateModes.bracketedPasteMode = !1 }return !0 } requestMode(e, t) { const i = this._coreService.decPrivateModes, { activeProtocol: s, activeEncoding: r } = this._coreMouseService, o = this._coreService, { buffers: a, cols: h } = this._bufferService, { active: c, alt: l } = a, d = this._optionsService.rawOptions, _ = e => e ? 1 : 2, u = e.params[0]; return f = u, v = t ? 2 === u ? 4 : 4 === u ? _(o.modes.insertMode) : 12 === u ? 3 : 20 === u ? _(d.convertEol) : 0 : 1 === u ? _(i.applicationCursorKeys) : 3 === u ? d.windowOptions.setWinLines ? 80 === h ? 2 : 132 === h ? 1 : 0 : 0 : 6 === u ? _(i.origin) : 7 === u ? _(i.wraparound) : 8 === u ? 3 : 9 === u ? _("X10" === s) : 12 === u ? _(d.cursorBlink) : 25 === u ? _(!o.isCursorHidden) : 45 === u ? _(i.reverseWraparound) : 66 === u ? _(i.applicationKeypad) : 67 === u ? 4 : 1e3 === u ? _("VT200" === s) : 1002 === u ? _("DRAG" === s) : 1003 === u ? _("ANY" === s) : 1004 === u ? _(i.sendFocus) : 1005 === u ? 4 : 1006 === u ? _("SGR" === r) : 1015 === u ? 4 : 1016 === u ? _("SGR_PIXELS" === r) : 1048 === u ? 1 : 47 === u || 1047 === u || 1049 === u ? _(c === l) : 2004 === u ? _(i.bracketedPasteMode) : 0, o.triggerDataEvent(`${n.C0.ESC}[${t ? "" : "?"}${f};${v}$y`), !0; var f, v } _updateAttrColor(e, t, i, s, r) { return 2 === t ? (e |= 50331648, e &= -16777216, e |= f.AttributeData.fromColorRGB([i, s, r])) : 5 === t && (e &= -50331904, e |= 33554432 | 255 & i), e } _extractColor(e, t, i) { const s = [0, 0, -1, 0, 0, 0]; let r = 0, n = 0; do { if (s[n + r] = e.params[t + n], e.hasSubParams(t + n)) { const i = e.getSubParams(t + n); let o = 0; do { 5 === s[1] && (r = 1), s[n + o + 1 + r] = i[o] } while (++o < i.length && o + n + 1 + r < s.length); break } if (5 === s[1] && n + r >= 2 || 2 === s[1] && n + r >= 5) break; s[1] && (r = 1) } while (++n + t < e.length && n + r < s.length); for (let e = 2; e < s.length; ++e)-1 === s[e] && (s[e] = 0); switch (s[0]) { case 38: i.fg = this._updateAttrColor(i.fg, s[1], s[3], s[4], s[5]); break; case 48: i.bg = this._updateAttrColor(i.bg, s[1], s[3], s[4], s[5]); break; case 58: i.extended = i.extended.clone(), i.extended.underlineColor = this._updateAttrColor(i.extended.underlineColor, s[1], s[3], s[4], s[5]) }return n } _processUnderline(e, t) { t.extended = t.extended.clone(), (!~e || e > 5) && (e = 1), t.extended.underlineStyle = e, t.fg |= 268435456, 0 === e && (t.fg &= -268435457), t.updateExtended() } _processSGR0(e) { e.fg = l.DEFAULT_ATTR_DATA.fg, e.bg = l.DEFAULT_ATTR_DATA.bg, e.extended = e.extended.clone(), e.extended.underlineStyle = 0, e.extended.underlineColor &= -67108864, e.updateExtended() } charAttributes(e) { if (1 === e.length && 0 === e.params[0]) return this._processSGR0(this._curAttrData), !0; const t = e.length; let i; const s = this._curAttrData; for (let r = 0; r < t; r++)i = e.params[r], i >= 30 && i <= 37 ? (s.fg &= -50331904, s.fg |= 16777216 | i - 30) : i >= 40 && i <= 47 ? (s.bg &= -50331904, s.bg |= 16777216 | i - 40) : i >= 90 && i <= 97 ? (s.fg &= -50331904, s.fg |= 16777224 | i - 90) : i >= 100 && i <= 107 ? (s.bg &= -50331904, s.bg |= 16777224 | i - 100) : 0 === i ? this._processSGR0(s) : 1 === i ? s.fg |= 134217728 : 3 === i ? s.bg |= 67108864 : 4 === i ? (s.fg |= 268435456, this._processUnderline(e.hasSubParams(r) ? e.getSubParams(r)[0] : 1, s)) : 5 === i ? s.fg |= 536870912 : 7 === i ? s.fg |= 67108864 : 8 === i ? s.fg |= 1073741824 : 9 === i ? s.fg |= 2147483648 : 2 === i ? s.bg |= 134217728 : 21 === i ? this._processUnderline(2, s) : 22 === i ? (s.fg &= -134217729, s.bg &= -134217729) : 23 === i ? s.bg &= -67108865 : 24 === i ? (s.fg &= -268435457, this._processUnderline(0, s)) : 25 === i ? s.fg &= -536870913 : 27 === i ? s.fg &= -67108865 : 28 === i ? s.fg &= -1073741825 : 29 === i ? s.fg &= 2147483647 : 39 === i ? (s.fg &= -67108864, s.fg |= 16777215 & l.DEFAULT_ATTR_DATA.fg) : 49 === i ? (s.bg &= -67108864, s.bg |= 16777215 & l.DEFAULT_ATTR_DATA.bg) : 38 === i || 48 === i || 58 === i ? r += this._extractColor(e, r, s) : 53 === i ? s.bg |= 1073741824 : 55 === i ? s.bg &= -1073741825 : 59 === i ? (s.extended = s.extended.clone(), s.extended.underlineColor = -1, s.updateExtended()) : 100 === i ? (s.fg &= -67108864, s.fg |= 16777215 & l.DEFAULT_ATTR_DATA.fg, s.bg &= -67108864, s.bg |= 16777215 & l.DEFAULT_ATTR_DATA.bg) : this._logService.debug("Unknown SGR attribute: %d.", i); return !0 } deviceStatus(e) { switch (e.params[0]) { case 5: this._coreService.triggerDataEvent(`${n.C0.ESC}[0n`); break; case 6: const e = this._activeBuffer.y + 1, t = this._activeBuffer.x + 1; this._coreService.triggerDataEvent(`${n.C0.ESC}[${e};${t}R`) }return !0 } deviceStatusPrivate(e) { if (6 === e.params[0]) { const e = this._activeBuffer.y + 1, t = this._activeBuffer.x + 1; this._coreService.triggerDataEvent(`${n.C0.ESC}[?${e};${t}R`) } return !0 } softReset(e) { return this._coreService.isCursorHidden = !1, this._onRequestSyncScrollBar.fire(), this._activeBuffer.scrollTop = 0, this._activeBuffer.scrollBottom = this._bufferService.rows - 1, this._curAttrData = l.DEFAULT_ATTR_DATA.clone(), this._coreService.reset(), this._charsetService.reset(), this._activeBuffer.savedX = 0, this._activeBuffer.savedY = this._activeBuffer.ybase, this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg, this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg, this._activeBuffer.savedCharset = this._charsetService.charset, this._coreService.decPrivateModes.origin = !1, !0 } setCursorStyle(e) { const t = e.params[0] || 1; switch (t) { case 1: case 2: this._optionsService.options.cursorStyle = "block"; break; case 3: case 4: this._optionsService.options.cursorStyle = "underline"; break; case 5: case 6: this._optionsService.options.cursorStyle = "bar" }const i = t % 2 == 1; return this._optionsService.options.cursorBlink = i, !0 } setScrollRegion(e) { const t = e.params[0] || 1; let i; return (e.length < 2 || (i = e.params[1]) > this._bufferService.rows || 0 === i) && (i = this._bufferService.rows), i > t && (this._activeBuffer.scrollTop = t - 1, this._activeBuffer.scrollBottom = i - 1, this._setCursor(0, 0)), !0 } windowOptions(e) { if (!w(e.params[0], this._optionsService.rawOptions.windowOptions)) return !0; const t = e.length > 1 ? e.params[1] : 0; switch (e.params[0]) { case 14: 2 !== t && this._onRequestWindowsOptionsReport.fire(y.GET_WIN_SIZE_PIXELS); break; case 16: this._onRequestWindowsOptionsReport.fire(y.GET_CELL_SIZE_PIXELS); break; case 18: this._bufferService && this._coreService.triggerDataEvent(`${n.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`); break; case 22: 0 !== t && 2 !== t || (this._windowTitleStack.push(this._windowTitle), this._windowTitleStack.length > 10 && this._windowTitleStack.shift()), 0 !== t && 1 !== t || (this._iconNameStack.push(this._iconName), this._iconNameStack.length > 10 && this._iconNameStack.shift()); break; case 23: 0 !== t && 2 !== t || this._windowTitleStack.length && this.setTitle(this._windowTitleStack.pop()), 0 !== t && 1 !== t || this._iconNameStack.length && this.setIconName(this._iconNameStack.pop()) }return !0 } saveCursor(e) { return this._activeBuffer.savedX = this._activeBuffer.x, this._activeBuffer.savedY = this._activeBuffer.ybase + this._activeBuffer.y, this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg, this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg, this._activeBuffer.savedCharset = this._charsetService.charset, !0 } restoreCursor(e) { return this._activeBuffer.x = this._activeBuffer.savedX || 0, this._activeBuffer.y = Math.max(this._activeBuffer.savedY - this._activeBuffer.ybase, 0), this._curAttrData.fg = this._activeBuffer.savedCurAttrData.fg, this._curAttrData.bg = this._activeBuffer.savedCurAttrData.bg, this._charsetService.charset = this._savedCharset, this._activeBuffer.savedCharset && (this._charsetService.charset = this._activeBuffer.savedCharset), this._restrictCursor(), !0 } setTitle(e) { return this._windowTitle = e, this._onTitleChange.fire(e), !0 } setIconName(e) { return this._iconName = e, !0 } setOrReportIndexedColor(e) { const t = [], i = e.split(";"); for (; i.length > 1;) { const e = i.shift(), s = i.shift(); if (/^\d+$/.exec(e)) { const i = parseInt(e); if (R(i)) if ("?" === s) t.push({ type: 0, index: i }); else { const e = (0, C.parseColor)(s); e && t.push({ type: 1, index: i, color: e }) } } } return t.length && this._onColor.fire(t), !0 } setHyperlink(e) { const t = e.split(";"); return !(t.length < 2) && (t[1] ? this._createHyperlink(t[0], t[1]) : !t[0] && this._finishHyperlink()) } _createHyperlink(e, t) { this._getCurrentLinkId() && this._finishHyperlink(); const i = e.split(":"); let s; const r = i.findIndex((e => e.startsWith("id="))); return -1 !== r && (s = i[r].slice(3) || void 0), this._curAttrData.extended = this._curAttrData.extended.clone(), this._curAttrData.extended.urlId = this._oscLinkService.registerLink({ id: s, uri: t }), this._curAttrData.updateExtended(), !0 } _finishHyperlink() { return this._curAttrData.extended = this._curAttrData.extended.clone(), this._curAttrData.extended.urlId = 0, this._curAttrData.updateExtended(), !0 } _setOrReportSpecialColor(e, t) { const i = e.split(";"); for (let e = 0; e < i.length && !(t >= this._specialColors.length); ++e, ++t)if ("?" === i[e]) this._onColor.fire([{ type: 0, index: this._specialColors[t] }]); else { const s = (0, C.parseColor)(i[e]); s && this._onColor.fire([{ type: 1, index: this._specialColors[t], color: s }]) } return !0 } setOrReportFgColor(e) { return this._setOrReportSpecialColor(e, 0) } setOrReportBgColor(e) { return this._setOrReportSpecialColor(e, 1) } setOrReportCursorColor(e) { return this._setOrReportSpecialColor(e, 2) } restoreIndexedColor(e) { if (!e) return this._onColor.fire([{ type: 2 }]), !0; const t = [], i = e.split(";"); for (let e = 0; e < i.length; ++e)if (/^\d+$/.exec(i[e])) { const s = parseInt(i[e]); R(s) && t.push({ type: 2, index: s }) } return t.length && this._onColor.fire(t), !0 } restoreFgColor(e) { return this._onColor.fire([{ type: 2, index: 256 }]), !0 } restoreBgColor(e) { return this._onColor.fire([{ type: 2, index: 257 }]), !0 } restoreCursorColor(e) { return this._onColor.fire([{ type: 2, index: 258 }]), !0 } nextLine() { return this._activeBuffer.x = 0, this.index(), !0 } keypadApplicationMode() { return this._logService.debug("Serial port requested application keypad."), this._coreService.decPrivateModes.applicationKeypad = !0, this._onRequestSyncScrollBar.fire(), !0 } keypadNumericMode() { return this._logService.debug("Switching back to normal keypad."), this._coreService.decPrivateModes.applicationKeypad = !1, this._onRequestSyncScrollBar.fire(), !0 } selectDefaultCharset() { return this._charsetService.setgLevel(0), this._charsetService.setgCharset(0, o.DEFAULT_CHARSET), !0 } selectCharset(e) { return 2 !== e.length ? (this.selectDefaultCharset(), !0) : ("/" === e[0] || this._charsetService.setgCharset(S[e[0]], o.CHARSETS[e[1]] || o.DEFAULT_CHARSET), !0) } index() { return this._restrictCursor(), this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData())) : this._activeBuffer.y >= this._bufferService.rows && (this._activeBuffer.y = this._bufferService.rows - 1), this._restrictCursor(), !0 } tabSet() { return this._activeBuffer.tabs[this._activeBuffer.x] = !0, !0 } reverseIndex() { if (this._restrictCursor(), this._activeBuffer.y === this._activeBuffer.scrollTop) { const e = this._activeBuffer.scrollBottom - this._activeBuffer.scrollTop; this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase + this._activeBuffer.y, e, 1), this._activeBuffer.lines.set(this._activeBuffer.ybase + this._activeBuffer.y, this._activeBuffer.getBlankLine(this._eraseAttrData())), this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom) } else this._activeBuffer.y--, this._restrictCursor(); return !0 } fullReset() { return this._parser.reset(), this._onRequestReset.fire(), !0 } reset() { this._curAttrData = l.DEFAULT_ATTR_DATA.clone(), this._eraseAttrDataInternal = l.DEFAULT_ATTR_DATA.clone() } _eraseAttrData() { return this._eraseAttrDataInternal.bg &= -67108864, this._eraseAttrDataInternal.bg |= 67108863 & this._curAttrData.bg, this._eraseAttrDataInternal } setgLevel(e) { return this._charsetService.setgLevel(e), !0 } screenAlignmentPattern() { const e = new u.CellData; e.content = 1 << 22 | "E".charCodeAt(0), e.fg = this._curAttrData.fg, e.bg = this._curAttrData.bg, this._setCursor(0, 0); for (let t = 0; t < this._bufferService.rows; ++t) { const i = this._activeBuffer.ybase + this._activeBuffer.y + t, s = this._activeBuffer.lines.get(i); s && (s.fill(e), s.isWrapped = !1) } return this._dirtyRowTracker.markAllDirty(), this._setCursor(0, 0), !0 } requestStatusString(e, t) { const i = this._bufferService.buffer, s = this._optionsService.rawOptions; return (e => (this._coreService.triggerDataEvent(`${n.C0.ESC}${e}${n.C0.ESC}\\`), !0))('"q' === e ? `P1$r${this._curAttrData.isProtected() ? 1 : 0}"q` : '"p' === e ? 'P1$r61;1"p' : "r" === e ? `P1$r${i.scrollTop + 1};${i.scrollBottom + 1}r` : "m" === e ? "P1$r0m" : " q" === e ? `P1$r${{ block: 2, underline: 4, bar: 6 }[s.cursorStyle] - (s.cursorBlink ? 1 : 0)} q` : "P0$r") } markRangeDirty(e, t) { this._dirtyRowTracker.markRangeDirty(e, t) } } t.InputHandler = x; let E = class { constructor(e) { this._bufferService = e, this.clearRange() } clearRange() { this.start = this._bufferService.buffer.y, this.end = this._bufferService.buffer.y } markDirty(e) { e < this.start ? this.start = e : e > this.end && (this.end = e) } markRangeDirty(e, t) { e > t && (L = e, e = t, t = L), e < this.start && (this.start = e), t > this.end && (this.end = t) } markAllDirty() { this.markRangeDirty(0, this._bufferService.rows - 1) } }; function R(e) { return 0 <= e && e < 256 } E = s([r(0, v.IBufferService)], E) }, 844: (e, t) => { function i(e) { for (const t of e) t.dispose(); e.length = 0 } Object.defineProperty(t, "__esModule", { value: !0 }), t.getDisposeArrayDisposable = t.disposeArray = t.toDisposable = t.MutableDisposable = t.Disposable = void 0, t.Disposable = class { constructor() { this._disposables = [], this._isDisposed = !1 } dispose() { this._isDisposed = !0; for (const e of this._disposables) e.dispose(); this._disposables.length = 0 } register(e) { return this._disposables.push(e), e } unregister(e) { const t = this._disposables.indexOf(e); -1 !== t && this._disposables.splice(t, 1) } }, t.MutableDisposable = class { constructor() { this._isDisposed = !1 } get value() { return this._isDisposed ? void 0 : this._value } set value(e) { this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e) } clear() { this.value = void 0 } dispose() { this._isDisposed = !0, this._value?.dispose(), this._value = void 0 } }, t.toDisposable = function (e) { return { dispose: e } }, t.disposeArray = i, t.getDisposeArrayDisposable = function (e) { return { dispose: () => i(e) } } }, 1505: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.FourKeyMap = t.TwoKeyMap = void 0; class i { constructor() { this._data = {} } set(e, t, i) { this._data[e] || (this._data[e] = {}), this._data[e][t] = i } get(e, t) { return this._data[e] ? this._data[e][t] : void 0 } clear() { this._data = {} } } t.TwoKeyMap = i, t.FourKeyMap = class { constructor() { this._data = new i } set(e, t, s, r, n) { this._data.get(e, t) || this._data.set(e, t, new i), this._data.get(e, t).set(s, r, n) } get(e, t, i, s) { return this._data.get(e, t)?.get(i, s) } clear() { this._data.clear() } } }, 6114: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.isChromeOS = t.isLinux = t.isWindows = t.isIphone = t.isIpad = t.isMac = t.getSafariVersion = t.isSafari = t.isLegacyEdge = t.isFirefox = t.isNode = void 0, t.isNode = "undefined" != typeof process && "title" in process; const i = t.isNode ? "node" : navigator.userAgent, s = t.isNode ? "node" : navigator.platform; t.isFirefox = i.includes("Firefox"), t.isLegacyEdge = i.includes("Edge"), t.isSafari = /^((?!chrome|android).)*safari/i.test(i), t.getSafariVersion = function () { if (!t.isSafari) return 0; const e = i.match(/Version\/(\d+)/); return null === e || e.length < 2 ? 0 : parseInt(e[1]) }, t.isMac = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(s), t.isIpad = "iPad" === s, t.isIphone = "iPhone" === s, t.isWindows = ["Windows", "Win16", "Win32", "WinCE"].includes(s), t.isLinux = s.indexOf("Linux") >= 0, t.isChromeOS = /\bCrOS\b/.test(i) }, 6106: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.SortedList = void 0; let i = 0; t.SortedList = class { constructor(e) { this._getKey = e, this._array = [] } clear() { this._array.length = 0 } insert(e) { 0 !== this._array.length ? (i = this._search(this._getKey(e)), this._array.splice(i, 0, e)) : this._array.push(e) } delete(e) { if (0 === this._array.length) return !1; const t = this._getKey(e); if (void 0 === t) return !1; if (i = this._search(t), -1 === i) return !1; if (this._getKey(this._array[i]) !== t) return !1; do { if (this._array[i] === e) return this._array.splice(i, 1), !0 } while (++i < this._array.length && this._getKey(this._array[i]) === t); return !1 } *getKeyIterator(e) { if (0 !== this._array.length && (i = this._search(e), !(i < 0 || i >= this._array.length) && this._getKey(this._array[i]) === e)) do { yield this._array[i] } while (++i < this._array.length && this._getKey(this._array[i]) === e) } forEachByKey(e, t) { if (0 !== this._array.length && (i = this._search(e), !(i < 0 || i >= this._array.length) && this._getKey(this._array[i]) === e)) do { t(this._array[i]) } while (++i < this._array.length && this._getKey(this._array[i]) === e) } values() { return [...this._array].values() } _search(e) { let t = 0, i = this._array.length - 1; for (; i >= t;) { let s = t + i >> 1; const r = this._getKey(this._array[s]); if (r > e) i = s - 1; else { if (!(r < e)) { for (; s > 0 && this._getKey(this._array[s - 1]) === e;)s--; return s } t = s + 1 } } return t } } }, 7226: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.DebouncedIdleTask = t.IdleTaskQueue = t.PriorityTaskQueue = void 0; const s = i(6114); class r { constructor() { this._tasks = [], this._i = 0 } enqueue(e) { this._tasks.push(e), this._start() } flush() { for (; this._i < this._tasks.length;)this._tasks[this._i]() || this._i++; this.clear() } clear() { this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0 } _start() { this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this))) } _process(e) { this._idleCallback = void 0; let t = 0, i = 0, s = e.timeRemaining(), r = 0; for (; this._i < this._tasks.length;) { if (t = Date.now(), this._tasks[this._i]() || this._i++, t = Math.max(1, Date.now() - t), i = Math.max(t, i), r = e.timeRemaining(), 1.5 * i > r) return s - t < -20 && console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s - t))}ms`), void this._start(); s = r } this.clear() } } class n extends r { _requestCallback(e) { return setTimeout((() => e(this._createDeadline(16)))) } _cancelCallback(e) { clearTimeout(e) } _createDeadline(e) { const t = Date.now() + e; return { timeRemaining: () => Math.max(0, t - Date.now()) } } } t.PriorityTaskQueue = n, t.IdleTaskQueue = !s.isNode && "requestIdleCallback" in window ? class extends r { _requestCallback(e) { return requestIdleCallback(e) } _cancelCallback(e) { cancelIdleCallback(e) } } : n, t.DebouncedIdleTask = class { constructor() { this._queue = new t.IdleTaskQueue } set(e) { this._queue.clear(), this._queue.enqueue(e) } flush() { this._queue.flush() } } }, 9282: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.updateWindowsModeWrappedState = void 0; const s = i(643); t.updateWindowsModeWrappedState = function (e) { const t = e.buffer.lines.get(e.buffer.ybase + e.buffer.y - 1), i = t?.get(e.cols - 1), r = e.buffer.lines.get(e.buffer.ybase + e.buffer.y); r && i && (r.isWrapped = i[s.CHAR_DATA_CODE_INDEX] !== s.NULL_CELL_CODE && i[s.CHAR_DATA_CODE_INDEX] !== s.WHITESPACE_CELL_CODE) } }, 3734: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.ExtendedAttrs = t.AttributeData = void 0; class i { constructor() { this.fg = 0, this.bg = 0, this.extended = new s } static toColorRGB(e) { return [e >>> 16 & 255, e >>> 8 & 255, 255 & e] } static fromColorRGB(e) { return (255 & e[0]) << 16 | (255 & e[1]) << 8 | 255 & e[2] } clone() { const e = new i; return e.fg = this.fg, e.bg = this.bg, e.extended = this.extended.clone(), e } isInverse() { return 67108864 & this.fg } isBold() { return 134217728 & this.fg } isUnderline() { return this.hasExtendedAttrs() && 0 !== this.extended.underlineStyle ? 1 : 268435456 & this.fg } isBlink() { return 536870912 & this.fg } isInvisible() { return 1073741824 & this.fg } isItalic() { return 67108864 & this.bg } isDim() { return 134217728 & this.bg } isStrikethrough() { return 2147483648 & this.fg } isProtected() { return 536870912 & this.bg } isOverline() { return 1073741824 & this.bg } getFgColorMode() { return 50331648 & this.fg } getBgColorMode() { return 50331648 & this.bg } isFgRGB() { return !(50331648 & ~this.fg) } isBgRGB() { return !(50331648 & ~this.bg) } isFgPalette() { return 16777216 == (50331648 & this.fg) || 33554432 == (50331648 & this.fg) } isBgPalette() { return 16777216 == (50331648 & this.bg) || 33554432 == (50331648 & this.bg) } isFgDefault() { return !(50331648 & this.fg) } isBgDefault() { return !(50331648 & this.bg) } isAttributeDefault() { return 0 === this.fg && 0 === this.bg } getFgColor() { switch (50331648 & this.fg) { case 16777216: case 33554432: return 255 & this.fg; case 50331648: return 16777215 & this.fg; default: return -1 } } getBgColor() { switch (50331648 & this.bg) { case 16777216: case 33554432: return 255 & this.bg; case 50331648: return 16777215 & this.bg; default: return -1 } } hasExtendedAttrs() { return 268435456 & this.bg } updateExtended() { this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456 } getUnderlineColor() { if (268435456 & this.bg && ~this.extended.underlineColor) switch (50331648 & this.extended.underlineColor) { case 16777216: case 33554432: return 255 & this.extended.underlineColor; case 50331648: return 16777215 & this.extended.underlineColor; default: return this.getFgColor() }return this.getFgColor() } getUnderlineColorMode() { return 268435456 & this.bg && ~this.extended.underlineColor ? 50331648 & this.extended.underlineColor : this.getFgColorMode() } isUnderlineColorRGB() { return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & ~this.extended.underlineColor) : this.isFgRGB() } isUnderlineColorPalette() { return 268435456 & this.bg && ~this.extended.underlineColor ? 16777216 == (50331648 & this.extended.underlineColor) || 33554432 == (50331648 & this.extended.underlineColor) : this.isFgPalette() } isUnderlineColorDefault() { return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & this.extended.underlineColor) : this.isFgDefault() } getUnderlineStyle() { return 268435456 & this.fg ? 268435456 & this.bg ? this.extended.underlineStyle : 1 : 0 } getUnderlineVariantOffset() { return this.extended.underlineVariantOffset } } t.AttributeData = i; class s { get ext() { return this._urlId ? -469762049 & this._ext | this.underlineStyle << 26 : this._ext } set ext(e) { this._ext = e } get underlineStyle() { return this._urlId ? 5 : (469762048 & this._ext) >> 26 } set underlineStyle(e) { this._ext &= -469762049, this._ext |= e << 26 & 469762048 } get underlineColor() { return 67108863 & this._ext } set underlineColor(e) { this._ext &= -67108864, this._ext |= 67108863 & e } get urlId() { return this._urlId } set urlId(e) { this._urlId = e } get underlineVariantOffset() { const e = (3758096384 & this._ext) >> 29; return e < 0 ? 4294967288 ^ e : e } set underlineVariantOffset(e) { this._ext &= 536870911, this._ext |= e << 29 & 3758096384 } constructor(e = 0, t = 0) { this._ext = 0, this._urlId = 0, this._ext = e, this._urlId = t } clone() { return new s(this._ext, this._urlId) } isEmpty() { return 0 === this.underlineStyle && 0 === this._urlId } } t.ExtendedAttrs = s }, 9092: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.Buffer = t.MAX_BUFFER_SIZE = void 0; const s = i(6349), r = i(7226), n = i(3734), o = i(8437), a = i(4634), h = i(511), c = i(643), l = i(4863), d = i(7116); t.MAX_BUFFER_SIZE = 4294967295, t.Buffer = class { constructor(e, t, i) { this._hasScrollback = e, this._optionsService = t, this._bufferService = i, this.ydisp = 0, this.ybase = 0, this.y = 0, this.x = 0, this.tabs = {}, this.savedY = 0, this.savedX = 0, this.savedCurAttrData = o.DEFAULT_ATTR_DATA.clone(), this.savedCharset = d.DEFAULT_CHARSET, this.markers = [], this._nullCell = h.CellData.fromCharData([0, c.NULL_CELL_CHAR, c.NULL_CELL_WIDTH, c.NULL_CELL_CODE]), this._whitespaceCell = h.CellData.fromCharData([0, c.WHITESPACE_CELL_CHAR, c.WHITESPACE_CELL_WIDTH, c.WHITESPACE_CELL_CODE]), this._isClearing = !1, this._memoryCleanupQueue = new r.IdleTaskQueue, this._memoryCleanupPosition = 0, this._cols = this._bufferService.cols, this._rows = this._bufferService.rows, this.lines = new s.CircularList(this._getCorrectBufferLength(this._rows)), this.scrollTop = 0, this.scrollBottom = this._rows - 1, this.setupTabStops() } getNullCell(e) { return e ? (this._nullCell.fg = e.fg, this._nullCell.bg = e.bg, this._nullCell.extended = e.extended) : (this._nullCell.fg = 0, this._nullCell.bg = 0, this._nullCell.extended = new n.ExtendedAttrs), this._nullCell } getWhitespaceCell(e) { return e ? (this._whitespaceCell.fg = e.fg, this._whitespaceCell.bg = e.bg, this._whitespaceCell.extended = e.extended) : (this._whitespaceCell.fg = 0, this._whitespaceCell.bg = 0, this._whitespaceCell.extended = new n.ExtendedAttrs), this._whitespaceCell } getBlankLine(e, t) { return new o.BufferLine(this._bufferService.cols, this.getNullCell(e), t) } get hasScrollback() { return this._hasScrollback && this.lines.maxLength > this._rows } get isCursorInViewport() { const e = this.ybase + this.y - this.ydisp; return e >= 0 && e < this._rows } _getCorrectBufferLength(e) { if (!this._hasScrollback) return e; const i = e + this._optionsService.rawOptions.scrollback; return i > t.MAX_BUFFER_SIZE ? t.MAX_BUFFER_SIZE : i } fillViewportRows(e) { if (0 === this.lines.length) { void 0 === e && (e = o.DEFAULT_ATTR_DATA); let t = this._rows; for (; t--;)this.lines.push(this.getBlankLine(e)) } } clear() { this.ydisp = 0, this.ybase = 0, this.y = 0, this.x = 0, this.lines = new s.CircularList(this._getCorrectBufferLength(this._rows)), this.scrollTop = 0, this.scrollBottom = this._rows - 1, this.setupTabStops() } resize(e, t) { const i = this.getNullCell(o.DEFAULT_ATTR_DATA); let s = 0; const r = this._getCorrectBufferLength(t); if (r > this.lines.maxLength && (this.lines.maxLength = r), this.lines.length > 0) { if (this._cols < e) for (let t = 0; t < this.lines.length; t++)s += +this.lines.get(t).resize(e, i); let n = 0; if (this._rows < t) for (let s = this._rows; s < t; s++)this.lines.length < t + this.ybase && (this._optionsService.rawOptions.windowsMode || void 0 !== this._optionsService.rawOptions.windowsPty.backend || void 0 !== this._optionsService.rawOptions.windowsPty.buildNumber ? this.lines.push(new o.BufferLine(e, i)) : this.ybase > 0 && this.lines.length <= this.ybase + this.y + n + 1 ? (this.ybase--, n++, this.ydisp > 0 && this.ydisp--) : this.lines.push(new o.BufferLine(e, i))); else for (let e = this._rows; e > t; e--)this.lines.length > t + this.ybase && (this.lines.length > this.ybase + this.y + 1 ? this.lines.pop() : (this.ybase++, this.ydisp++)); if (r < this.lines.maxLength) { const e = this.lines.length - r; e > 0 && (this.lines.trimStart(e), this.ybase = Math.max(this.ybase - e, 0), this.ydisp = Math.max(this.ydisp - e, 0), this.savedY = Math.max(this.savedY - e, 0)), this.lines.maxLength = r } this.x = Math.min(this.x, e - 1), this.y = Math.min(this.y, t - 1), n && (this.y += n), this.savedX = Math.min(this.savedX, e - 1), this.scrollTop = 0 } if (this.scrollBottom = t - 1, this._isReflowEnabled && (this._reflow(e, t), this._cols > e)) for (let t = 0; t < this.lines.length; t++)s += +this.lines.get(t).resize(e, i); this._cols = e, this._rows = t, this._memoryCleanupQueue.clear(), s > .1 * this.lines.length && (this._memoryCleanupPosition = 0, this._memoryCleanupQueue.enqueue((() => this._batchedMemoryCleanup()))) } _batchedMemoryCleanup() { let e = !0; this._memoryCleanupPosition >= this.lines.length && (this._memoryCleanupPosition = 0, e = !1); let t = 0; for (; this._memoryCleanupPosition < this.lines.length;)if (t += this.lines.get(this._memoryCleanupPosition++).cleanupMemory(), t > 100) return !0; return e } get _isReflowEnabled() { const e = this._optionsService.rawOptions.windowsPty; return e && e.buildNumber ? this._hasScrollback && "conpty" === e.backend && e.buildNumber >= 21376 : this._hasScrollback && !this._optionsService.rawOptions.windowsMode } _reflow(e, t) { this._cols !== e && (e > this._cols ? this._reflowLarger(e, t) : this._reflowSmaller(e, t)) } _reflowLarger(e, t) { const i = (0, a.reflowLargerGetLinesToRemove)(this.lines, this._cols, e, this.ybase + this.y, this.getNullCell(o.DEFAULT_ATTR_DATA)); if (i.length > 0) { const s = (0, a.reflowLargerCreateNewLayout)(this.lines, i); (0, a.reflowLargerApplyNewLayout)(this.lines, s.layout), this._reflowLargerAdjustViewport(e, t, s.countRemoved) } } _reflowLargerAdjustViewport(e, t, i) { const s = this.getNullCell(o.DEFAULT_ATTR_DATA); let r = i; for (; r-- > 0;)0 === this.ybase ? (this.y > 0 && this.y--, this.lines.length < t && this.lines.push(new o.BufferLine(e, s))) : (this.ydisp === this.ybase && this.ydisp--, this.ybase--); this.savedY = Math.max(this.savedY - i, 0) } _reflowSmaller(e, t) { const i = this.getNullCell(o.DEFAULT_ATTR_DATA), s = []; let r = 0; for (let n = this.lines.length - 1; n >= 0; n--) { let h = this.lines.get(n); if (!h || !h.isWrapped && h.getTrimmedLength() <= e) continue; const c = [h]; for (; h.isWrapped && n > 0;)h = this.lines.get(--n), c.unshift(h); const l = this.ybase + this.y; if (l >= n && l < n + c.length) continue; const d = c[c.length - 1].getTrimmedLength(), _ = (0, a.reflowSmallerGetNewLineLengths)(c, this._cols, e), u = _.length - c.length; let f; f = 0 === this.ybase && this.y !== this.lines.length - 1 ? Math.max(0, this.y - this.lines.maxLength + u) : Math.max(0, this.lines.length - this.lines.maxLength + u); const v = []; for (let e = 0; e < u; e++) { const e = this.getBlankLine(o.DEFAULT_ATTR_DATA, !0); v.push(e) } v.length > 0 && (s.push({ start: n + c.length + r, newLines: v }), r += v.length), c.push(...v); let g = _.length - 1, p = _[g]; 0 === p && (g--, p = _[g]); let m = c.length - u - 1, C = d; for (; m >= 0;) { const e = Math.min(C, p); if (void 0 === c[g]) break; if (c[g].copyCellsFrom(c[m], C - e, p - e, e, !0), p -= e, 0 === p && (g--, p = _[g]), C -= e, 0 === C) { m--; const e = Math.max(m, 0); C = (0, a.getWrappedLineTrimmedLength)(c, e, this._cols) } } for (let t = 0; t < c.length; t++)_[t] < e && c[t].setCell(_[t], i); let S = u - f; for (; S-- > 0;)0 === this.ybase ? this.y < t - 1 ? (this.y++, this.lines.pop()) : (this.ybase++, this.ydisp++) : this.ybase < Math.min(this.lines.maxLength, this.lines.length + r) - t && (this.ybase === this.ydisp && this.ydisp++, this.ybase++); this.savedY = Math.min(this.savedY + u, this.ybase + t - 1) } if (s.length > 0) { const e = [], t = []; for (let e = 0; e < this.lines.length; e++)t.push(this.lines.get(e)); const i = this.lines.length; let n = i - 1, o = 0, a = s[o]; this.lines.length = Math.min(this.lines.maxLength, this.lines.length + r); let h = 0; for (let c = Math.min(this.lines.maxLength - 1, i + r - 1); c >= 0; c--)if (a && a.start > n + h) { for (let e = a.newLines.length - 1; e >= 0; e--)this.lines.set(c--, a.newLines[e]); c++, e.push({ index: n + 1, amount: a.newLines.length }), h += a.newLines.length, a = s[++o] } else this.lines.set(c, t[n--]); let c = 0; for (let t = e.length - 1; t >= 0; t--)e[t].index += c, this.lines.onInsertEmitter.fire(e[t]), c += e[t].amount; const l = Math.max(0, i + r - this.lines.maxLength); l > 0 && this.lines.onTrimEmitter.fire(l) } } translateBufferLineToString(e, t, i = 0, s) { const r = this.lines.get(e); return r ? r.translateToString(t, i, s) : "" } getWrappedRangeForLine(e) { let t = e, i = e; for (; t > 0 && this.lines.get(t).isWrapped;)t--; for (; i + 1 < this.lines.length && this.lines.get(i + 1).isWrapped;)i++; return { first: t, last: i } } setupTabStops(e) { for (null != e ? this.tabs[e] || (e = this.prevStop(e)) : (this.tabs = {}, e = 0); e < this._cols; e += this._optionsService.rawOptions.tabStopWidth)this.tabs[e] = !0 } prevStop(e) { for (null == e && (e = this.x); !this.tabs[--e] && e > 0;); return e >= this._cols ? this._cols - 1 : e < 0 ? 0 : e } nextStop(e) { for (null == e && (e = this.x); !this.tabs[++e] && e < this._cols;); return e >= this._cols ? this._cols - 1 : e < 0 ? 0 : e } clearMarkers(e) { this._isClearing = !0; for (let t = 0; t < this.markers.length; t++)this.markers[t].line === e && (this.markers[t].dispose(), this.markers.splice(t--, 1)); this._isClearing = !1 } clearAllMarkers() { this._isClearing = !0; for (let e = 0; e < this.markers.length; e++)this.markers[e].dispose(), this.markers.splice(e--, 1); this._isClearing = !1 } addMarker(e) { const t = new l.Marker(e); return this.markers.push(t), t.register(this.lines.onTrim((e => { t.line -= e, t.line < 0 && t.dispose() }))), t.register(this.lines.onInsert((e => { t.line >= e.index && (t.line += e.amount) }))), t.register(this.lines.onDelete((e => { t.line >= e.index && t.line < e.index + e.amount && t.dispose(), t.line > e.index && (t.line -= e.amount) }))), t.register(t.onDispose((() => this._removeMarker(t)))), t } _removeMarker(e) { this._isClearing || this.markers.splice(this.markers.indexOf(e), 1) } } }, 8437: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.BufferLine = t.DEFAULT_ATTR_DATA = void 0; const s = i(3734), r = i(511), n = i(643), o = i(482); t.DEFAULT_ATTR_DATA = Object.freeze(new s.AttributeData); let a = 0; class h { constructor(e, t, i = !1) { this.isWrapped = i, this._combined = {}, this._extendedAttrs = {}, this._data = new Uint32Array(3 * e); const s = t || r.CellData.fromCharData([0, n.NULL_CELL_CHAR, n.NULL_CELL_WIDTH, n.NULL_CELL_CODE]); for (let t = 0; t < e; ++t)this.setCell(t, s); this.length = e } get(e) { const t = this._data[3 * e + 0], i = 2097151 & t; return [this._data[3 * e + 1], 2097152 & t ? this._combined[e] : i ? (0, o.stringFromCodePoint)(i) : "", t >> 22, 2097152 & t ? this._combined[e].charCodeAt(this._combined[e].length - 1) : i] } set(e, t) { this._data[3 * e + 1] = t[n.CHAR_DATA_ATTR_INDEX], t[n.CHAR_DATA_CHAR_INDEX].length > 1 ? (this._combined[e] = t[1], this._data[3 * e + 0] = 2097152 | e | t[n.CHAR_DATA_WIDTH_INDEX] << 22) : this._data[3 * e + 0] = t[n.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | t[n.CHAR_DATA_WIDTH_INDEX] << 22 } getWidth(e) { return this._data[3 * e + 0] >> 22 } hasWidth(e) { return 12582912 & this._data[3 * e + 0] } getFg(e) { return this._data[3 * e + 1] } getBg(e) { return this._data[3 * e + 2] } hasContent(e) { return 4194303 & this._data[3 * e + 0] } getCodePoint(e) { const t = this._data[3 * e + 0]; return 2097152 & t ? this._combined[e].charCodeAt(this._combined[e].length - 1) : 2097151 & t } isCombined(e) { return 2097152 & this._data[3 * e + 0] } getString(e) { const t = this._data[3 * e + 0]; return 2097152 & t ? this._combined[e] : 2097151 & t ? (0, o.stringFromCodePoint)(2097151 & t) : "" } isProtected(e) { return 536870912 & this._data[3 * e + 2] } loadCell(e, t) { return a = 3 * e, t.content = this._data[a + 0], t.fg = this._data[a + 1], t.bg = this._data[a + 2], 2097152 & t.content && (t.combinedData = this._combined[e]), 268435456 & t.bg && (t.extended = this._extendedAttrs[e]), t } setCell(e, t) { 2097152 & t.content && (this._combined[e] = t.combinedData), 268435456 & t.bg && (this._extendedAttrs[e] = t.extended), this._data[3 * e + 0] = t.content, this._data[3 * e + 1] = t.fg, this._data[3 * e + 2] = t.bg } setCellFromCodepoint(e, t, i, s) { 268435456 & s.bg && (this._extendedAttrs[e] = s.extended), this._data[3 * e + 0] = t | i << 22, this._data[3 * e + 1] = s.fg, this._data[3 * e + 2] = s.bg } addCodepointToCell(e, t, i) { let s = this._data[3 * e + 0]; 2097152 & s ? this._combined[e] += (0, o.stringFromCodePoint)(t) : 2097151 & s ? (this._combined[e] = (0, o.stringFromCodePoint)(2097151 & s) + (0, o.stringFromCodePoint)(t), s &= -2097152, s |= 2097152) : s = t | 1 << 22, i && (s &= -12582913, s |= i << 22), this._data[3 * e + 0] = s } insertCells(e, t, i) { if ((e %= this.length) && 2 === this.getWidth(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), t < this.length - e) { const s = new r.CellData; for (let i = this.length - e - t - 1; i >= 0; --i)this.setCell(e + t + i, this.loadCell(e + i, s)); for (let s = 0; s < t; ++s)this.setCell(e + s, i) } else for (let t = e; t < this.length; ++t)this.setCell(t, i); 2 === this.getWidth(this.length - 1) && this.setCellFromCodepoint(this.length - 1, 0, 1, i) } deleteCells(e, t, i) { if (e %= this.length, t < this.length - e) { const s = new r.CellData; for (let i = 0; i < this.length - e - t; ++i)this.setCell(e + i, this.loadCell(e + t + i, s)); for (let e = this.length - t; e < this.length; ++e)this.setCell(e, i) } else for (let t = e; t < this.length; ++t)this.setCell(t, i); e && 2 === this.getWidth(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), 0 !== this.getWidth(e) || this.hasContent(e) || this.setCellFromCodepoint(e, 0, 1, i) } replaceCells(e, t, i, s = !1) { if (s) for (e && 2 === this.getWidth(e - 1) && !this.isProtected(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), t < this.length && 2 === this.getWidth(t - 1) && !this.isProtected(t) && this.setCellFromCodepoint(t, 0, 1, i); e < t && e < this.length;)this.isProtected(e) || this.setCell(e, i), e++; else for (e && 2 === this.getWidth(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), t < this.length && 2 === this.getWidth(t - 1) && this.setCellFromCodepoint(t, 0, 1, i); e < t && e < this.length;)this.setCell(e++, i) } resize(e, t) { if (e === this.length) return 4 * this._data.length * 2 < this._data.buffer.byteLength; const i = 3 * e; if (e > this.length) { if (this._data.buffer.byteLength >= 4 * i) this._data = new Uint32Array(this._data.buffer, 0, i); else { const e = new Uint32Array(i); e.set(this._data), this._data = e } for (let i = this.length; i < e; ++i)this.setCell(i, t) } else { this._data = this._data.subarray(0, i); const t = Object.keys(this._combined); for (let i = 0; i < t.length; i++) { const s = parseInt(t[i], 10); s >= e && delete this._combined[s] } const s = Object.keys(this._extendedAttrs); for (let t = 0; t < s.length; t++) { const i = parseInt(s[t], 10); i >= e && delete this._extendedAttrs[i] } } return this.length = e, 4 * i * 2 < this._data.buffer.byteLength } cleanupMemory() { if (4 * this._data.length * 2 < this._data.buffer.byteLength) { const e = new Uint32Array(this._data.length); return e.set(this._data), this._data = e, 1 } return 0 } fill(e, t = !1) { if (t) for (let t = 0; t < this.length; ++t)this.isProtected(t) || this.setCell(t, e); else { this._combined = {}, this._extendedAttrs = {}; for (let t = 0; t < this.length; ++t)this.setCell(t, e) } } copyFrom(e) { this.length !== e.length ? this._data = new Uint32Array(e._data) : this._data.set(e._data), this.length = e.length, this._combined = {}; for (const t in e._combined) this._combined[t] = e._combined[t]; this._extendedAttrs = {}; for (const t in e._extendedAttrs) this._extendedAttrs[t] = e._extendedAttrs[t]; this.isWrapped = e.isWrapped } clone() { const e = new h(0); e._data = new Uint32Array(this._data), e.length = this.length; for (const t in this._combined) e._combined[t] = this._combined[t]; for (const t in this._extendedAttrs) e._extendedAttrs[t] = this._extendedAttrs[t]; return e.isWrapped = this.isWrapped, e } getTrimmedLength() { for (let e = this.length - 1; e >= 0; --e)if (4194303 & this._data[3 * e + 0]) return e + (this._data[3 * e + 0] >> 22); return 0 } getNoBgTrimmedLength() { for (let e = this.length - 1; e >= 0; --e)if (4194303 & this._data[3 * e + 0] || 50331648 & this._data[3 * e + 2]) return e + (this._data[3 * e + 0] >> 22); return 0 } copyCellsFrom(e, t, i, s, r) { const n = e._data; if (r) for (let r = s - 1; r >= 0; r--) { for (let e = 0; e < 3; e++)this._data[3 * (i + r) + e] = n[3 * (t + r) + e]; 268435456 & n[3 * (t + r) + 2] && (this._extendedAttrs[i + r] = e._extendedAttrs[t + r]) } else for (let r = 0; r < s; r++) { for (let e = 0; e < 3; e++)this._data[3 * (i + r) + e] = n[3 * (t + r) + e]; 268435456 & n[3 * (t + r) + 2] && (this._extendedAttrs[i + r] = e._extendedAttrs[t + r]) } const o = Object.keys(e._combined); for (let s = 0; s < o.length; s++) { const r = parseInt(o[s], 10); r >= t && (this._combined[r - t + i] = e._combined[r]) } } translateToString(e, t, i, s) { t = t ?? 0, i = i ?? this.length, e && (i = Math.min(i, this.getTrimmedLength())), s && (s.length = 0); let r = ""; for (; t < i;) { const e = this._data[3 * t + 0], i = 2097151 & e, a = 2097152 & e ? this._combined[t] : i ? (0, o.stringFromCodePoint)(i) : n.WHITESPACE_CELL_CHAR; if (r += a, s) for (let e = 0; e < a.length; ++e)s.push(t); t += e >> 22 || 1 } return s && s.push(t), r } } t.BufferLine = h }, 4841: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.getRangeLength = void 0, t.getRangeLength = function (e, t) { if (e.start.y > e.end.y) throw new Error(`Buffer range end (${e.end.x}, ${e.end.y}) cannot be before start (${e.start.x}, ${e.start.y})`); return t * (e.end.y - e.start.y) + (e.end.x - e.start.x + 1) } }, 4634: (e, t) => { function i(e, t, i) { if (t === e.length - 1) return e[t].getTrimmedLength(); const s = !e[t].hasContent(i - 1) && 1 === e[t].getWidth(i - 1), r = 2 === e[t + 1].getWidth(0); return s && r ? i - 1 : i } Object.defineProperty(t, "__esModule", { value: !0 }), t.getWrappedLineTrimmedLength = t.reflowSmallerGetNewLineLengths = t.reflowLargerApplyNewLayout = t.reflowLargerCreateNewLayout = t.reflowLargerGetLinesToRemove = void 0, t.reflowLargerGetLinesToRemove = function (e, t, s, r, n) { const o = []; for (let a = 0; a < e.length - 1; a++) { let h = a, c = e.get(++h); if (!c.isWrapped) continue; const l = [e.get(a)]; for (; h < e.length && c.isWrapped;)l.push(c), c = e.get(++h); if (r >= a && r < h) { a += l.length - 1; continue } let d = 0, _ = i(l, d, t), u = 1, f = 0; for (; u < l.length;) { const e = i(l, u, t), r = e - f, o = s - _, a = Math.min(r, o); l[d].copyCellsFrom(l[u], f, _, a, !1), _ += a, _ === s && (d++, _ = 0), f += a, f === e && (u++, f = 0), 0 === _ && 0 !== d && 2 === l[d - 1].getWidth(s - 1) && (l[d].copyCellsFrom(l[d - 1], s - 1, _++, 1, !1), l[d - 1].setCell(s - 1, n)) } l[d].replaceCells(_, s, n); let v = 0; for (let e = l.length - 1; e > 0 && (e > d || 0 === l[e].getTrimmedLength()); e--)v++; v > 0 && (o.push(a + l.length - v), o.push(v)), a += l.length - 1 } return o }, t.reflowLargerCreateNewLayout = function (e, t) { const i = []; let s = 0, r = t[s], n = 0; for (let o = 0; o < e.length; o++)if (r === o) { const i = t[++s]; e.onDeleteEmitter.fire({ index: o - n, amount: i }), o += i - 1, n += i, r = t[++s] } else i.push(o); return { layout: i, countRemoved: n } }, t.reflowLargerApplyNewLayout = function (e, t) { const i = []; for (let s = 0; s < t.length; s++)i.push(e.get(t[s])); for (let t = 0; t < i.length; t++)e.set(t, i[t]); e.length = t.length }, t.reflowSmallerGetNewLineLengths = function (e, t, s) { const r = [], n = e.map(((s, r) => i(e, r, t))).reduce(((e, t) => e + t)); let o = 0, a = 0, h = 0; for (; h < n;) { if (n - h < s) { r.push(n - h); break } o += s; const c = i(e, a, t); o > c && (o -= c, a++); const l = 2 === e[a].getWidth(o - 1); l && o--; const d = l ? s - 1 : s; r.push(d), h += d } return r }, t.getWrappedLineTrimmedLength = i }, 5295: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.BufferSet = void 0; const s = i(8460), r = i(844), n = i(9092); class o extends r.Disposable { constructor(e, t) { super(), this._optionsService = e, this._bufferService = t, this._onBufferActivate = this.register(new s.EventEmitter), this.onBufferActivate = this._onBufferActivate.event, this.reset(), this.register(this._optionsService.onSpecificOptionChange("scrollback", (() => this.resize(this._bufferService.cols, this._bufferService.rows)))), this.register(this._optionsService.onSpecificOptionChange("tabStopWidth", (() => this.setupTabStops()))) } reset() { this._normal = new n.Buffer(!0, this._optionsService, this._bufferService), this._normal.fillViewportRows(), this._alt = new n.Buffer(!1, this._optionsService, this._bufferService), this._activeBuffer = this._normal, this._onBufferActivate.fire({ activeBuffer: this._normal, inactiveBuffer: this._alt }), this.setupTabStops() } get alt() { return this._alt } get active() { return this._activeBuffer } get normal() { return this._normal } activateNormalBuffer() { this._activeBuffer !== this._normal && (this._normal.x = this._alt.x, this._normal.y = this._alt.y, this._alt.clearAllMarkers(), this._alt.clear(), this._activeBuffer = this._normal, this._onBufferActivate.fire({ activeBuffer: this._normal, inactiveBuffer: this._alt })) } activateAltBuffer(e) { this._activeBuffer !== this._alt && (this._alt.fillViewportRows(e), this._alt.x = this._normal.x, this._alt.y = this._normal.y, this._activeBuffer = this._alt, this._onBufferActivate.fire({ activeBuffer: this._alt, inactiveBuffer: this._normal })) } resize(e, t) { this._normal.resize(e, t), this._alt.resize(e, t), this.setupTabStops(e) } setupTabStops(e) { this._normal.setupTabStops(e), this._alt.setupTabStops(e) } } t.BufferSet = o }, 511: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CellData = void 0; const s = i(482), r = i(643), n = i(3734); class o extends n.AttributeData { constructor() { super(...arguments), this.content = 0, this.fg = 0, this.bg = 0, this.extended = new n.ExtendedAttrs, this.combinedData = "" } static fromCharData(e) { const t = new o; return t.setFromCharData(e), t } isCombined() { return 2097152 & this.content } getWidth() { return this.content >> 22 } getChars() { return 2097152 & this.content ? this.combinedData : 2097151 & this.content ? (0, s.stringFromCodePoint)(2097151 & this.content) : "" } getCode() { return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : 2097151 & this.content } setFromCharData(e) { this.fg = e[r.CHAR_DATA_ATTR_INDEX], this.bg = 0; let t = !1; if (e[r.CHAR_DATA_CHAR_INDEX].length > 2) t = !0; else if (2 === e[r.CHAR_DATA_CHAR_INDEX].length) { const i = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0); if (55296 <= i && i <= 56319) { const s = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1); 56320 <= s && s <= 57343 ? this.content = 1024 * (i - 55296) + s - 56320 + 65536 | e[r.CHAR_DATA_WIDTH_INDEX] << 22 : t = !0 } else t = !0 } else this.content = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | e[r.CHAR_DATA_WIDTH_INDEX] << 22; t && (this.combinedData = e[r.CHAR_DATA_CHAR_INDEX], this.content = 2097152 | e[r.CHAR_DATA_WIDTH_INDEX] << 22) } getAsCharData() { return [this.fg, this.getChars(), this.getWidth(), this.getCode()] } } t.CellData = o }, 643: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.WHITESPACE_CELL_CODE = t.WHITESPACE_CELL_WIDTH = t.WHITESPACE_CELL_CHAR = t.NULL_CELL_CODE = t.NULL_CELL_WIDTH = t.NULL_CELL_CHAR = t.CHAR_DATA_CODE_INDEX = t.CHAR_DATA_WIDTH_INDEX = t.CHAR_DATA_CHAR_INDEX = t.CHAR_DATA_ATTR_INDEX = t.DEFAULT_EXT = t.DEFAULT_ATTR = t.DEFAULT_COLOR = void 0, t.DEFAULT_COLOR = 0, t.DEFAULT_ATTR = 256 | t.DEFAULT_COLOR << 9, t.DEFAULT_EXT = 0, t.CHAR_DATA_ATTR_INDEX = 0, t.CHAR_DATA_CHAR_INDEX = 1, t.CHAR_DATA_WIDTH_INDEX = 2, t.CHAR_DATA_CODE_INDEX = 3, t.NULL_CELL_CHAR = "", t.NULL_CELL_WIDTH = 1, t.NULL_CELL_CODE = 0, t.WHITESPACE_CELL_CHAR = " ", t.WHITESPACE_CELL_WIDTH = 1, t.WHITESPACE_CELL_CODE = 32 }, 4863: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.Marker = void 0; const s = i(8460), r = i(844); class n { get id() { return this._id } constructor(e) { this.line = e, this.isDisposed = !1, this._disposables = [], this._id = n._nextId++, this._onDispose = this.register(new s.EventEmitter), this.onDispose = this._onDispose.event } dispose() { this.isDisposed || (this.isDisposed = !0, this.line = -1, this._onDispose.fire(), (0, r.disposeArray)(this._disposables), this._disposables.length = 0) } register(e) { return this._disposables.push(e), e } } t.Marker = n, n._nextId = 1 }, 7116: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.DEFAULT_CHARSET = t.CHARSETS = void 0, t.CHARSETS = {}, t.DEFAULT_CHARSET = t.CHARSETS.B, t.CHARSETS[0] = { "`": "◆", a: "▒", b: "␉", c: "␌", d: "␍", e: "␊", f: "°", g: "±", h: "␤", i: "␋", j: "┘", k: "┐", l: "┌", m: "└", n: "┼", o: "⎺", p: "⎻", q: "─", r: "⎼", s: "⎽", t: "├", u: "┤", v: "┴", w: "┬", x: "│", y: "≤", z: "≥", "{": "π", "|": "≠", "}": "£", "~": "·" }, t.CHARSETS.A = { "#": "£" }, t.CHARSETS.B = void 0, t.CHARSETS[4] = { "#": "£", "@": "¾", "[": "ij", "\\": "½", "]": "|", "{": "¨", "|": "f", "}": "¼", "~": "´" }, t.CHARSETS.C = t.CHARSETS[5] = { "[": "Ä", "\\": "Ö", "]": "Å", "^": "Ü", "`": "é", "{": "ä", "|": "ö", "}": "å", "~": "ü" }, t.CHARSETS.R = { "#": "£", "@": "à", "[": "°", "\\": "ç", "]": "§", "{": "é", "|": "ù", "}": "è", "~": "¨" }, t.CHARSETS.Q = { "@": "à", "[": "â", "\\": "ç", "]": "ê", "^": "î", "`": "ô", "{": "é", "|": "ù", "}": "è", "~": "û" }, t.CHARSETS.K = { "@": "§", "[": "Ä", "\\": "Ö", "]": "Ü", "{": "ä", "|": "ö", "}": "ü", "~": "ß" }, t.CHARSETS.Y = { "#": "£", "@": "§", "[": "°", "\\": "ç", "]": "é", "`": "ù", "{": "à", "|": "ò", "}": "è", "~": "ì" }, t.CHARSETS.E = t.CHARSETS[6] = { "@": "Ä", "[": "Æ", "\\": "Ø", "]": "Å", "^": "Ü", "`": "ä", "{": "æ", "|": "ø", "}": "å", "~": "ü" }, t.CHARSETS.Z = { "#": "£", "@": "§", "[": "¡", "\\": "Ñ", "]": "¿", "{": "°", "|": "ñ", "}": "ç" }, t.CHARSETS.H = t.CHARSETS[7] = { "@": "É", "[": "Ä", "\\": "Ö", "]": "Å", "^": "Ü", "`": "é", "{": "ä", "|": "ö", "}": "å", "~": "ü" }, t.CHARSETS["="] = { "#": "ù", "@": "à", "[": "é", "\\": "ç", "]": "ê", "^": "î", _: "è", "`": "ô", "{": "ä", "|": "ö", "}": "ü", "~": "û" } }, 2584: (e, t) => { var i, s, r; Object.defineProperty(t, "__esModule", { value: !0 }), t.C1_ESCAPED = t.C1 = t.C0 = void 0, function (e) { e.NUL = "\0", e.SOH = "", e.STX = "", e.ETX = "", e.EOT = "", e.ENQ = "", e.ACK = "", e.BEL = "", e.BS = "\b", e.HT = "\t", e.LF = "\n", e.VT = "\v", e.FF = "\f", e.CR = "\r", e.SO = "", e.SI = "", e.DLE = "", e.DC1 = "", e.DC2 = "", e.DC3 = "", e.DC4 = "", e.NAK = "", e.SYN = "", e.ETB = "", e.CAN = "", e.EM = "", e.SUB = "", e.ESC = "", e.FS = "", e.GS = "", e.RS = "", e.US = "", e.SP = " ", e.DEL = "" }(i || (t.C0 = i = {})), function (e) { e.PAD = "€", e.HOP = "", e.BPH = "‚", e.NBH = "ƒ", e.IND = "„", e.NEL = "…", e.SSA = "†", e.ESA = "‡", e.HTS = "ˆ", e.HTJ = "‰", e.VTS = "Š", e.PLD = "‹", e.PLU = "Œ", e.RI = "", e.SS2 = "Ž", e.SS3 = "", e.DCS = "", e.PU1 = "‘", e.PU2 = "’", e.STS = "“", e.CCH = "”", e.MW = "•", e.SPA = "–", e.EPA = "—", e.SOS = "˜", e.SGCI = "™", e.SCI = "š", e.CSI = "›", e.ST = "œ", e.OSC = "", e.PM = "ž", e.APC = "Ÿ" }(s || (t.C1 = s = {})), function (e) { e.ST = `${i.ESC}\\` }(r || (t.C1_ESCAPED = r = {})) }, 7399: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.evaluateKeyboardEvent = void 0; const s = i(2584), r = { 48: ["0", ")"], 49: ["1", "!"], 50: ["2", "@"], 51: ["3", "#"], 52: ["4", "$"], 53: ["5", "%"], 54: ["6", "^"], 55: ["7", "&"], 56: ["8", "*"], 57: ["9", "("], 186: [";", ":"], 187: ["=", "+"], 188: [",", "<"], 189: ["-", "_"], 190: [".", ">"], 191: ["/", "?"], 192: ["`", "~"], 219: ["[", "{"], 220: ["\\", "|"], 221: ["]", "}"], 222: ["'", '"'] }; t.evaluateKeyboardEvent = function (e, t, i, n) { const o = { type: 0, cancel: !1, key: void 0 }, a = (e.shiftKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.ctrlKey ? 4 : 0) | (e.metaKey ? 8 : 0); switch (e.keyCode) { case 0: "UIKeyInputUpArrow" === e.key ? o.key = t ? s.C0.ESC + "OA" : s.C0.ESC + "[A" : "UIKeyInputLeftArrow" === e.key ? o.key = t ? s.C0.ESC + "OD" : s.C0.ESC + "[D" : "UIKeyInputRightArrow" === e.key ? o.key = t ? s.C0.ESC + "OC" : s.C0.ESC + "[C" : "UIKeyInputDownArrow" === e.key && (o.key = t ? s.C0.ESC + "OB" : s.C0.ESC + "[B"); break; case 8: o.key = e.ctrlKey ? "\b" : s.C0.DEL, e.altKey && (o.key = s.C0.ESC + o.key); break; case 9: if (e.shiftKey) { o.key = s.C0.ESC + "[Z"; break } o.key = s.C0.HT, o.cancel = !0; break; case 13: o.key = e.altKey ? s.C0.ESC + s.C0.CR : s.C0.CR, o.cancel = !0; break; case 27: o.key = s.C0.ESC, e.altKey && (o.key = s.C0.ESC + s.C0.ESC), o.cancel = !0; break; case 37: if (e.metaKey) break; a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "D", o.key === s.C0.ESC + "[1;3D" && (o.key = s.C0.ESC + (i ? "b" : "[1;5D"))) : o.key = t ? s.C0.ESC + "OD" : s.C0.ESC + "[D"; break; case 39: if (e.metaKey) break; a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "C", o.key === s.C0.ESC + "[1;3C" && (o.key = s.C0.ESC + (i ? "f" : "[1;5C"))) : o.key = t ? s.C0.ESC + "OC" : s.C0.ESC + "[C"; break; case 38: if (e.metaKey) break; a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "A", i || o.key !== s.C0.ESC + "[1;3A" || (o.key = s.C0.ESC + "[1;5A")) : o.key = t ? s.C0.ESC + "OA" : s.C0.ESC + "[A"; break; case 40: if (e.metaKey) break; a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "B", i || o.key !== s.C0.ESC + "[1;3B" || (o.key = s.C0.ESC + "[1;5B")) : o.key = t ? s.C0.ESC + "OB" : s.C0.ESC + "[B"; break; case 45: e.shiftKey || e.ctrlKey || (o.key = s.C0.ESC + "[2~"); break; case 46: o.key = a ? s.C0.ESC + "[3;" + (a + 1) + "~" : s.C0.ESC + "[3~"; break; case 36: o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "H" : t ? s.C0.ESC + "OH" : s.C0.ESC + "[H"; break; case 35: o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "F" : t ? s.C0.ESC + "OF" : s.C0.ESC + "[F"; break; case 33: e.shiftKey ? o.type = 2 : e.ctrlKey ? o.key = s.C0.ESC + "[5;" + (a + 1) + "~" : o.key = s.C0.ESC + "[5~"; break; case 34: e.shiftKey ? o.type = 3 : e.ctrlKey ? o.key = s.C0.ESC + "[6;" + (a + 1) + "~" : o.key = s.C0.ESC + "[6~"; break; case 112: o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "P" : s.C0.ESC + "OP"; break; case 113: o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "Q" : s.C0.ESC + "OQ"; break; case 114: o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "R" : s.C0.ESC + "OR"; break; case 115: o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "S" : s.C0.ESC + "OS"; break; case 116: o.key = a ? s.C0.ESC + "[15;" + (a + 1) + "~" : s.C0.ESC + "[15~"; break; case 117: o.key = a ? s.C0.ESC + "[17;" + (a + 1) + "~" : s.C0.ESC + "[17~"; break; case 118: o.key = a ? s.C0.ESC + "[18;" + (a + 1) + "~" : s.C0.ESC + "[18~"; break; case 119: o.key = a ? s.C0.ESC + "[19;" + (a + 1) + "~" : s.C0.ESC + "[19~"; break; case 120: o.key = a ? s.C0.ESC + "[20;" + (a + 1) + "~" : s.C0.ESC + "[20~"; break; case 121: o.key = a ? s.C0.ESC + "[21;" + (a + 1) + "~" : s.C0.ESC + "[21~"; break; case 122: o.key = a ? s.C0.ESC + "[23;" + (a + 1) + "~" : s.C0.ESC + "[23~"; break; case 123: o.key = a ? s.C0.ESC + "[24;" + (a + 1) + "~" : s.C0.ESC + "[24~"; break; default: if (!e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) if (i && !n || !e.altKey || e.metaKey) !i || e.altKey || e.ctrlKey || e.shiftKey || !e.metaKey ? e.key && !e.ctrlKey && !e.altKey && !e.metaKey && e.keyCode >= 48 && 1 === e.key.length ? o.key = e.key : e.key && e.ctrlKey && ("_" === e.key && (o.key = s.C0.US), "@" === e.key && (o.key = s.C0.NUL)) : 65 === e.keyCode && (o.type = 1); else { const t = r[e.keyCode], i = t?.[e.shiftKey ? 1 : 0]; if (i) o.key = s.C0.ESC + i; else if (e.keyCode >= 65 && e.keyCode <= 90) { const t = e.ctrlKey ? e.keyCode - 64 : e.keyCode + 32; let i = String.fromCharCode(t); e.shiftKey && (i = i.toUpperCase()), o.key = s.C0.ESC + i } else if (32 === e.keyCode) o.key = s.C0.ESC + (e.ctrlKey ? s.C0.NUL : " "); else if ("Dead" === e.key && e.code.startsWith("Key")) { let t = e.code.slice(3, 4); e.shiftKey || (t = t.toLowerCase()), o.key = s.C0.ESC + t, o.cancel = !0 } } else e.keyCode >= 65 && e.keyCode <= 90 ? o.key = String.fromCharCode(e.keyCode - 64) : 32 === e.keyCode ? o.key = s.C0.NUL : e.keyCode >= 51 && e.keyCode <= 55 ? o.key = String.fromCharCode(e.keyCode - 51 + 27) : 56 === e.keyCode ? o.key = s.C0.DEL : 219 === e.keyCode ? o.key = s.C0.ESC : 220 === e.keyCode ? o.key = s.C0.FS : 221 === e.keyCode && (o.key = s.C0.GS) }return o } }, 482: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.Utf8ToUtf32 = t.StringToUtf32 = t.utf32ToString = t.stringFromCodePoint = void 0, t.stringFromCodePoint = function (e) { return e > 65535 ? (e -= 65536, String.fromCharCode(55296 + (e >> 10)) + String.fromCharCode(e % 1024 + 56320)) : String.fromCharCode(e) }, t.utf32ToString = function (e, t = 0, i = e.length) { let s = ""; for (let r = t; r < i; ++r) { let t = e[r]; t > 65535 ? (t -= 65536, s += String.fromCharCode(55296 + (t >> 10)) + String.fromCharCode(t % 1024 + 56320)) : s += String.fromCharCode(t) } return s }, t.StringToUtf32 = class { constructor() { this._interim = 0 } clear() { this._interim = 0 } decode(e, t) { const i = e.length; if (!i) return 0; let s = 0, r = 0; if (this._interim) { const i = e.charCodeAt(r++); 56320 <= i && i <= 57343 ? t[s++] = 1024 * (this._interim - 55296) + i - 56320 + 65536 : (t[s++] = this._interim, t[s++] = i), this._interim = 0 } for (let n = r; n < i; ++n) { const r = e.charCodeAt(n); if (55296 <= r && r <= 56319) { if (++n >= i) return this._interim = r, s; const o = e.charCodeAt(n); 56320 <= o && o <= 57343 ? t[s++] = 1024 * (r - 55296) + o - 56320 + 65536 : (t[s++] = r, t[s++] = o) } else 65279 !== r && (t[s++] = r) } return s } }, t.Utf8ToUtf32 = class { constructor() { this.interim = new Uint8Array(3) } clear() { this.interim.fill(0) } decode(e, t) { const i = e.length; if (!i) return 0; let s, r, n, o, a = 0, h = 0, c = 0; if (this.interim[0]) { let s = !1, r = this.interim[0]; r &= 192 == (224 & r) ? 31 : 224 == (240 & r) ? 15 : 7; let n, o = 0; for (; (n = 63 & this.interim[++o]) && o < 4;)r <<= 6, r |= n; const h = 192 == (224 & this.interim[0]) ? 2 : 224 == (240 & this.interim[0]) ? 3 : 4, l = h - o; for (; c < l;) { if (c >= i) return 0; if (n = e[c++], 128 != (192 & n)) { c--, s = !0; break } this.interim[o++] = n, r <<= 6, r |= 63 & n } s || (2 === h ? r < 128 ? c-- : t[a++] = r : 3 === h ? r < 2048 || r >= 55296 && r <= 57343 || 65279 === r || (t[a++] = r) : r < 65536 || r > 1114111 || (t[a++] = r)), this.interim.fill(0) } const l = i - 4; let d = c; for (; d < i;) { for (; !(!(d < l) || 128 & (s = e[d]) || 128 & (r = e[d + 1]) || 128 & (n = e[d + 2]) || 128 & (o = e[d + 3]));)t[a++] = s, t[a++] = r, t[a++] = n, t[a++] = o, d += 4; if (s = e[d++], s < 128) t[a++] = s; else if (192 == (224 & s)) { if (d >= i) return this.interim[0] = s, a; if (r = e[d++], 128 != (192 & r)) { d--; continue } if (h = (31 & s) << 6 | 63 & r, h < 128) { d--; continue } t[a++] = h } else if (224 == (240 & s)) { if (d >= i) return this.interim[0] = s, a; if (r = e[d++], 128 != (192 & r)) { d--; continue } if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; if (n = e[d++], 128 != (192 & n)) { d--; continue } if (h = (15 & s) << 12 | (63 & r) << 6 | 63 & n, h < 2048 || h >= 55296 && h <= 57343 || 65279 === h) continue; t[a++] = h } else if (240 == (248 & s)) { if (d >= i) return this.interim[0] = s, a; if (r = e[d++], 128 != (192 & r)) { d--; continue } if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; if (n = e[d++], 128 != (192 & n)) { d--; continue } if (d >= i) return this.interim[0] = s, this.interim[1] = r, this.interim[2] = n, a; if (o = e[d++], 128 != (192 & o)) { d--; continue } if (h = (7 & s) << 18 | (63 & r) << 12 | (63 & n) << 6 | 63 & o, h < 65536 || h > 1114111) continue; t[a++] = h } } return a } } }, 225: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.UnicodeV6 = void 0; const s = i(1480), r = [[768, 879], [1155, 1158], [1160, 1161], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1536, 1539], [1552, 1557], [1611, 1630], [1648, 1648], [1750, 1764], [1767, 1768], [1770, 1773], [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2035], [2305, 2306], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2388], [2402, 2403], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2672, 2673], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2883], [2893, 2893], [2902, 2902], [2946, 2946], [3008, 3008], [3021, 3021], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3393, 3395], [3405, 3405], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3655, 3662], [3761, 3761], [3764, 3769], [3771, 3772], [3784, 3789], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3984, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4146], [4150, 4151], [4153, 4153], [4184, 4185], [4448, 4607], [4959, 4959], [5906, 5908], [5938, 5940], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6109, 6109], [6155, 6157], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7616, 7626], [7678, 7679], [8203, 8207], [8234, 8238], [8288, 8291], [8298, 8303], [8400, 8431], [12330, 12335], [12441, 12442], [43014, 43014], [43019, 43019], [43045, 43046], [64286, 64286], [65024, 65039], [65056, 65059], [65279, 65279], [65529, 65531]], n = [[68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [119143, 119145], [119155, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [917505, 917505], [917536, 917631], [917760, 917999]]; let o; t.UnicodeV6 = class { constructor() { if (this.version = "6", !o) { o = new Uint8Array(65536), o.fill(1), o[0] = 0, o.fill(0, 1, 32), o.fill(0, 127, 160), o.fill(2, 4352, 4448), o[9001] = 2, o[9002] = 2, o.fill(2, 11904, 42192), o[12351] = 1, o.fill(2, 44032, 55204), o.fill(2, 63744, 64256), o.fill(2, 65040, 65050), o.fill(2, 65072, 65136), o.fill(2, 65280, 65377), o.fill(2, 65504, 65511); for (let e = 0; e < r.length; ++e)o.fill(0, r[e][0], r[e][1] + 1) } } wcwidth(e) { return e < 32 ? 0 : e < 127 ? 1 : e < 65536 ? o[e] : function (e, t) { let i, s = 0, r = t.length - 1; if (e < t[0][0] || e > t[r][1]) return !1; for (; r >= s;)if (i = s + r >> 1, e > t[i][1]) s = i + 1; else { if (!(e < t[i][0])) return !0; r = i - 1 } return !1 }(e, n) ? 0 : e >= 131072 && e <= 196605 || e >= 196608 && e <= 262141 ? 2 : 1 } charProperties(e, t) { let i = this.wcwidth(e), r = 0 === i && 0 !== t; if (r) { const e = s.UnicodeService.extractWidth(t); 0 === e ? r = !1 : e > i && (i = e) } return s.UnicodeService.createPropertyValue(0, i, r) } } }, 5981: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.WriteBuffer = void 0; const s = i(8460), r = i(844); class n extends r.Disposable { constructor(e) { super(), this._action = e, this._writeBuffer = [], this._callbacks = [], this._pendingData = 0, this._bufferOffset = 0, this._isSyncWriting = !1, this._syncCalls = 0, this._didUserInput = !1, this._onWriteParsed = this.register(new s.EventEmitter), this.onWriteParsed = this._onWriteParsed.event } handleUserInput() { this._didUserInput = !0 } writeSync(e, t) { if (void 0 !== t && this._syncCalls > t) return void (this._syncCalls = 0); if (this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(void 0), this._syncCalls++, this._isSyncWriting) return; let i; for (this._isSyncWriting = !0; i = this._writeBuffer.shift();) { this._action(i); const e = this._callbacks.shift(); e && e() } this._pendingData = 0, this._bufferOffset = 2147483647, this._isSyncWriting = !1, this._syncCalls = 0 } write(e, t) { if (this._pendingData > 5e7) throw new Error("write data discarded, use flow control to avoid losing data"); if (!this._writeBuffer.length) { if (this._bufferOffset = 0, this._didUserInput) return this._didUserInput = !1, this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(t), void this._innerWrite(); setTimeout((() => this._innerWrite())) } this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(t) } _innerWrite(e = 0, t = !0) { const i = e || Date.now(); for (; this._writeBuffer.length > this._bufferOffset;) { const e = this._writeBuffer[this._bufferOffset], s = this._action(e, t); if (s) { const e = e => Date.now() - i >= 12 ? setTimeout((() => this._innerWrite(0, e))) : this._innerWrite(i, e); return void s.catch((e => (queueMicrotask((() => { throw e })), Promise.resolve(!1)))).then(e) } const r = this._callbacks[this._bufferOffset]; if (r && r(), this._bufferOffset++, this._pendingData -= e.length, Date.now() - i >= 12) break } this._writeBuffer.length > this._bufferOffset ? (this._bufferOffset > 50 && (this._writeBuffer = this._writeBuffer.slice(this._bufferOffset), this._callbacks = this._callbacks.slice(this._bufferOffset), this._bufferOffset = 0), setTimeout((() => this._innerWrite()))) : (this._writeBuffer.length = 0, this._callbacks.length = 0, this._pendingData = 0, this._bufferOffset = 0), this._onWriteParsed.fire() } } t.WriteBuffer = n }, 5941: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.toRgbString = t.parseColor = void 0; const i = /^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/, s = /^[\da-f]+$/; function r(e, t) { const i = e.toString(16), s = i.length < 2 ? "0" + i : i; switch (t) { case 4: return i[0]; case 8: return s; case 12: return (s + s).slice(0, 3); default: return s + s } } t.parseColor = function (e) { if (!e) return; let t = e.toLowerCase(); if (0 === t.indexOf("rgb:")) { t = t.slice(4); const e = i.exec(t); if (e) { const t = e[1] ? 15 : e[4] ? 255 : e[7] ? 4095 : 65535; return [Math.round(parseInt(e[1] || e[4] || e[7] || e[10], 16) / t * 255), Math.round(parseInt(e[2] || e[5] || e[8] || e[11], 16) / t * 255), Math.round(parseInt(e[3] || e[6] || e[9] || e[12], 16) / t * 255)] } } else if (0 === t.indexOf("#") && (t = t.slice(1), s.exec(t) && [3, 6, 9, 12].includes(t.length))) { const e = t.length / 3, i = [0, 0, 0]; for (let s = 0; s < 3; ++s) { const r = parseInt(t.slice(e * s, e * s + e), 16); i[s] = 1 === e ? r << 4 : 2 === e ? r : 3 === e ? r >> 4 : r >> 8 } return i } }, t.toRgbString = function (e, t = 16) { const [i, s, n] = e; return `rgb:${r(i, t)}/${r(s, t)}/${r(n, t)}` } }, 5770: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.PAYLOAD_LIMIT = void 0, t.PAYLOAD_LIMIT = 1e7 }, 6351: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.DcsHandler = t.DcsParser = void 0; const s = i(482), r = i(8742), n = i(5770), o = []; t.DcsParser = class { constructor() { this._handlers = Object.create(null), this._active = o, this._ident = 0, this._handlerFb = () => { }, this._stack = { paused: !1, loopPosition: 0, fallThrough: !1 } } dispose() { this._handlers = Object.create(null), this._handlerFb = () => { }, this._active = o } registerHandler(e, t) { void 0 === this._handlers[e] && (this._handlers[e] = []); const i = this._handlers[e]; return i.push(t), { dispose: () => { const e = i.indexOf(t); -1 !== e && i.splice(e, 1) } } } clearHandler(e) { this._handlers[e] && delete this._handlers[e] } setHandlerFallback(e) { this._handlerFb = e } reset() { if (this._active.length) for (let e = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; e >= 0; --e)this._active[e].unhook(!1); this._stack.paused = !1, this._active = o, this._ident = 0 } hook(e, t) { if (this.reset(), this._ident = e, this._active = this._handlers[e] || o, this._active.length) for (let e = this._active.length - 1; e >= 0; e--)this._active[e].hook(t); else this._handlerFb(this._ident, "HOOK", t) } put(e, t, i) { if (this._active.length) for (let s = this._active.length - 1; s >= 0; s--)this._active[s].put(e, t, i); else this._handlerFb(this._ident, "PUT", (0, s.utf32ToString)(e, t, i)) } unhook(e, t = !0) { if (this._active.length) { let i = !1, s = this._active.length - 1, r = !1; if (this._stack.paused && (s = this._stack.loopPosition - 1, i = t, r = this._stack.fallThrough, this._stack.paused = !1), !r && !1 === i) { for (; s >= 0 && (i = this._active[s].unhook(e), !0 !== i); s--)if (i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !1, i; s-- } for (; s >= 0; s--)if (i = this._active[s].unhook(!1), i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !0, i } else this._handlerFb(this._ident, "UNHOOK", e); this._active = o, this._ident = 0 } }; const a = new r.Params; a.addParam(0), t.DcsHandler = class { constructor(e) { this._handler = e, this._data = "", this._params = a, this._hitLimit = !1 } hook(e) { this._params = e.length > 1 || e.params[0] ? e.clone() : a, this._data = "", this._hitLimit = !1 } put(e, t, i) { this._hitLimit || (this._data += (0, s.utf32ToString)(e, t, i), this._data.length > n.PAYLOAD_LIMIT && (this._data = "", this._hitLimit = !0)) } unhook(e) { let t = !1; if (this._hitLimit) t = !1; else if (e && (t = this._handler(this._data, this._params), t instanceof Promise)) return t.then((e => (this._params = a, this._data = "", this._hitLimit = !1, e))); return this._params = a, this._data = "", this._hitLimit = !1, t } } }, 2015: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.EscapeSequenceParser = t.VT500_TRANSITION_TABLE = t.TransitionTable = void 0; const s = i(844), r = i(8742), n = i(6242), o = i(6351); class a { constructor(e) { this.table = new Uint8Array(e) } setDefault(e, t) { this.table.fill(e << 4 | t) } add(e, t, i, s) { this.table[t << 8 | e] = i << 4 | s } addMany(e, t, i, s) { for (let r = 0; r < e.length; r++)this.table[t << 8 | e[r]] = i << 4 | s } } t.TransitionTable = a; const h = 160; t.VT500_TRANSITION_TABLE = function () { const e = new a(4095), t = Array.apply(null, Array(256)).map(((e, t) => t)), i = (e, i) => t.slice(e, i), s = i(32, 127), r = i(0, 24); r.push(25), r.push.apply(r, i(28, 32)); const n = i(0, 14); let o; for (o in e.setDefault(1, 0), e.addMany(s, 0, 2, 0), n) e.addMany([24, 26, 153, 154], o, 3, 0), e.addMany(i(128, 144), o, 3, 0), e.addMany(i(144, 152), o, 3, 0), e.add(156, o, 0, 0), e.add(27, o, 11, 1), e.add(157, o, 4, 8), e.addMany([152, 158, 159], o, 0, 7), e.add(155, o, 11, 3), e.add(144, o, 11, 9); return e.addMany(r, 0, 3, 0), e.addMany(r, 1, 3, 1), e.add(127, 1, 0, 1), e.addMany(r, 8, 0, 8), e.addMany(r, 3, 3, 3), e.add(127, 3, 0, 3), e.addMany(r, 4, 3, 4), e.add(127, 4, 0, 4), e.addMany(r, 6, 3, 6), e.addMany(r, 5, 3, 5), e.add(127, 5, 0, 5), e.addMany(r, 2, 3, 2), e.add(127, 2, 0, 2), e.add(93, 1, 4, 8), e.addMany(s, 8, 5, 8), e.add(127, 8, 5, 8), e.addMany([156, 27, 24, 26, 7], 8, 6, 0), e.addMany(i(28, 32), 8, 0, 8), e.addMany([88, 94, 95], 1, 0, 7), e.addMany(s, 7, 0, 7), e.addMany(r, 7, 0, 7), e.add(156, 7, 0, 0), e.add(127, 7, 0, 7), e.add(91, 1, 11, 3), e.addMany(i(64, 127), 3, 7, 0), e.addMany(i(48, 60), 3, 8, 4), e.addMany([60, 61, 62, 63], 3, 9, 4), e.addMany(i(48, 60), 4, 8, 4), e.addMany(i(64, 127), 4, 7, 0), e.addMany([60, 61, 62, 63], 4, 0, 6), e.addMany(i(32, 64), 6, 0, 6), e.add(127, 6, 0, 6), e.addMany(i(64, 127), 6, 0, 0), e.addMany(i(32, 48), 3, 9, 5), e.addMany(i(32, 48), 5, 9, 5), e.addMany(i(48, 64), 5, 0, 6), e.addMany(i(64, 127), 5, 7, 0), e.addMany(i(32, 48), 4, 9, 5), e.addMany(i(32, 48), 1, 9, 2), e.addMany(i(32, 48), 2, 9, 2), e.addMany(i(48, 127), 2, 10, 0), e.addMany(i(48, 80), 1, 10, 0), e.addMany(i(81, 88), 1, 10, 0), e.addMany([89, 90, 92], 1, 10, 0), e.addMany(i(96, 127), 1, 10, 0), e.add(80, 1, 11, 9), e.addMany(r, 9, 0, 9), e.add(127, 9, 0, 9), e.addMany(i(28, 32), 9, 0, 9), e.addMany(i(32, 48), 9, 9, 12), e.addMany(i(48, 60), 9, 8, 10), e.addMany([60, 61, 62, 63], 9, 9, 10), e.addMany(r, 11, 0, 11), e.addMany(i(32, 128), 11, 0, 11), e.addMany(i(28, 32), 11, 0, 11), e.addMany(r, 10, 0, 10), e.add(127, 10, 0, 10), e.addMany(i(28, 32), 10, 0, 10), e.addMany(i(48, 60), 10, 8, 10), e.addMany([60, 61, 62, 63], 10, 0, 11), e.addMany(i(32, 48), 10, 9, 12), e.addMany(r, 12, 0, 12), e.add(127, 12, 0, 12), e.addMany(i(28, 32), 12, 0, 12), e.addMany(i(32, 48), 12, 9, 12), e.addMany(i(48, 64), 12, 0, 11), e.addMany(i(64, 127), 12, 12, 13), e.addMany(i(64, 127), 10, 12, 13), e.addMany(i(64, 127), 9, 12, 13), e.addMany(r, 13, 13, 13), e.addMany(s, 13, 13, 13), e.add(127, 13, 0, 13), e.addMany([27, 156, 24, 26], 13, 14, 0), e.add(h, 0, 2, 0), e.add(h, 8, 5, 8), e.add(h, 6, 0, 6), e.add(h, 11, 0, 11), e.add(h, 13, 13, 13), e }(); class c extends s.Disposable { constructor(e = t.VT500_TRANSITION_TABLE) { super(), this._transitions = e, this._parseStack = { state: 0, handlers: [], handlerPos: 0, transition: 0, chunkPos: 0 }, this.initialState = 0, this.currentState = this.initialState, this._params = new r.Params, this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0, this._printHandlerFb = (e, t, i) => { }, this._executeHandlerFb = e => { }, this._csiHandlerFb = (e, t) => { }, this._escHandlerFb = e => { }, this._errorHandlerFb = e => e, this._printHandler = this._printHandlerFb, this._executeHandlers = Object.create(null), this._csiHandlers = Object.create(null), this._escHandlers = Object.create(null), this.register((0, s.toDisposable)((() => { this._csiHandlers = Object.create(null), this._executeHandlers = Object.create(null), this._escHandlers = Object.create(null) }))), this._oscParser = this.register(new n.OscParser), this._dcsParser = this.register(new o.DcsParser), this._errorHandler = this._errorHandlerFb, this.registerEscHandler({ final: "\\" }, (() => !0)) } _identifier(e, t = [64, 126]) { let i = 0; if (e.prefix) { if (e.prefix.length > 1) throw new Error("only one byte as prefix supported"); if (i = e.prefix.charCodeAt(0), i && 60 > i || i > 63) throw new Error("prefix must be in range 0x3c .. 0x3f") } if (e.intermediates) { if (e.intermediates.length > 2) throw new Error("only two bytes as intermediates are supported"); for (let t = 0; t < e.intermediates.length; ++t) { const s = e.intermediates.charCodeAt(t); if (32 > s || s > 47) throw new Error("intermediate must be in range 0x20 .. 0x2f"); i <<= 8, i |= s } } if (1 !== e.final.length) throw new Error("final must be a single byte"); const s = e.final.charCodeAt(0); if (t[0] > s || s > t[1]) throw new Error(`final must be in range ${t[0]} .. ${t[1]}`); return i <<= 8, i |= s, i } identToString(e) { const t = []; for (; e;)t.push(String.fromCharCode(255 & e)), e >>= 8; return t.reverse().join("") } setPrintHandler(e) { this._printHandler = e } clearPrintHandler() { this._printHandler = this._printHandlerFb } registerEscHandler(e, t) { const i = this._identifier(e, [48, 126]); void 0 === this._escHandlers[i] && (this._escHandlers[i] = []); const s = this._escHandlers[i]; return s.push(t), { dispose: () => { const e = s.indexOf(t); -1 !== e && s.splice(e, 1) } } } clearEscHandler(e) { this._escHandlers[this._identifier(e, [48, 126])] && delete this._escHandlers[this._identifier(e, [48, 126])] } setEscHandlerFallback(e) { this._escHandlerFb = e } setExecuteHandler(e, t) { this._executeHandlers[e.charCodeAt(0)] = t } clearExecuteHandler(e) { this._executeHandlers[e.charCodeAt(0)] && delete this._executeHandlers[e.charCodeAt(0)] } setExecuteHandlerFallback(e) { this._executeHandlerFb = e } registerCsiHandler(e, t) { const i = this._identifier(e); void 0 === this._csiHandlers[i] && (this._csiHandlers[i] = []); const s = this._csiHandlers[i]; return s.push(t), { dispose: () => { const e = s.indexOf(t); -1 !== e && s.splice(e, 1) } } } clearCsiHandler(e) { this._csiHandlers[this._identifier(e)] && delete this._csiHandlers[this._identifier(e)] } setCsiHandlerFallback(e) { this._csiHandlerFb = e } registerDcsHandler(e, t) { return this._dcsParser.registerHandler(this._identifier(e), t) } clearDcsHandler(e) { this._dcsParser.clearHandler(this._identifier(e)) } setDcsHandlerFallback(e) { this._dcsParser.setHandlerFallback(e) } registerOscHandler(e, t) { return this._oscParser.registerHandler(e, t) } clearOscHandler(e) { this._oscParser.clearHandler(e) } setOscHandlerFallback(e) { this._oscParser.setHandlerFallback(e) } setErrorHandler(e) { this._errorHandler = e } clearErrorHandler() { this._errorHandler = this._errorHandlerFb } reset() { this.currentState = this.initialState, this._oscParser.reset(), this._dcsParser.reset(), this._params.reset(), this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0, 0 !== this._parseStack.state && (this._parseStack.state = 2, this._parseStack.handlers = []) } _preserveStack(e, t, i, s, r) { this._parseStack.state = e, this._parseStack.handlers = t, this._parseStack.handlerPos = i, this._parseStack.transition = s, this._parseStack.chunkPos = r } parse(e, t, i) { let s, r = 0, n = 0, o = 0; if (this._parseStack.state) if (2 === this._parseStack.state) this._parseStack.state = 0, o = this._parseStack.chunkPos + 1; else { if (void 0 === i || 1 === this._parseStack.state) throw this._parseStack.state = 1, new Error("improper continuation due to previous async handler, giving up parsing"); const t = this._parseStack.handlers; let n = this._parseStack.handlerPos - 1; switch (this._parseStack.state) { case 3: if (!1 === i && n > -1) for (; n >= 0 && (s = t[n](this._params), !0 !== s); n--)if (s instanceof Promise) return this._parseStack.handlerPos = n, s; this._parseStack.handlers = []; break; case 4: if (!1 === i && n > -1) for (; n >= 0 && (s = t[n](), !0 !== s); n--)if (s instanceof Promise) return this._parseStack.handlerPos = n, s; this._parseStack.handlers = []; break; case 6: if (r = e[this._parseStack.chunkPos], s = this._dcsParser.unhook(24 !== r && 26 !== r, i), s) return s; 27 === r && (this._parseStack.transition |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0; break; case 5: if (r = e[this._parseStack.chunkPos], s = this._oscParser.end(24 !== r && 26 !== r, i), s) return s; 27 === r && (this._parseStack.transition |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0 }this._parseStack.state = 0, o = this._parseStack.chunkPos + 1, this.precedingJoinState = 0, this.currentState = 15 & this._parseStack.transition } for (let i = o; i < t; ++i) { switch (r = e[i], n = this._transitions.table[this.currentState << 8 | (r < 160 ? r : h)], n >> 4) { case 2: for (let s = i + 1; ; ++s) { if (s >= t || (r = e[s]) < 32 || r > 126 && r < h) { this._printHandler(e, i, s), i = s - 1; break } if (++s >= t || (r = e[s]) < 32 || r > 126 && r < h) { this._printHandler(e, i, s), i = s - 1; break } if (++s >= t || (r = e[s]) < 32 || r > 126 && r < h) { this._printHandler(e, i, s), i = s - 1; break } if (++s >= t || (r = e[s]) < 32 || r > 126 && r < h) { this._printHandler(e, i, s), i = s - 1; break } } break; case 3: this._executeHandlers[r] ? this._executeHandlers[r]() : this._executeHandlerFb(r), this.precedingJoinState = 0; break; case 0: break; case 1: if (this._errorHandler({ position: i, code: r, currentState: this.currentState, collect: this._collect, params: this._params, abort: !1 }).abort) return; break; case 7: const o = this._csiHandlers[this._collect << 8 | r]; let a = o ? o.length - 1 : -1; for (; a >= 0 && (s = o[a](this._params), !0 !== s); a--)if (s instanceof Promise) return this._preserveStack(3, o, a, n, i), s; a < 0 && this._csiHandlerFb(this._collect << 8 | r, this._params), this.precedingJoinState = 0; break; case 8: do { switch (r) { case 59: this._params.addParam(0); break; case 58: this._params.addSubParam(-1); break; default: this._params.addDigit(r - 48) } } while (++i < t && (r = e[i]) > 47 && r < 60); i--; break; case 9: this._collect <<= 8, this._collect |= r; break; case 10: const c = this._escHandlers[this._collect << 8 | r]; let l = c ? c.length - 1 : -1; for (; l >= 0 && (s = c[l](), !0 !== s); l--)if (s instanceof Promise) return this._preserveStack(4, c, l, n, i), s; l < 0 && this._escHandlerFb(this._collect << 8 | r), this.precedingJoinState = 0; break; case 11: this._params.reset(), this._params.addParam(0), this._collect = 0; break; case 12: this._dcsParser.hook(this._collect << 8 | r, this._params); break; case 13: for (let s = i + 1; ; ++s)if (s >= t || 24 === (r = e[s]) || 26 === r || 27 === r || r > 127 && r < h) { this._dcsParser.put(e, i, s), i = s - 1; break } break; case 14: if (s = this._dcsParser.unhook(24 !== r && 26 !== r), s) return this._preserveStack(6, [], 0, n, i), s; 27 === r && (n |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0; break; case 4: this._oscParser.start(); break; case 5: for (let s = i + 1; ; s++)if (s >= t || (r = e[s]) < 32 || r > 127 && r < h) { this._oscParser.put(e, i, s), i = s - 1; break } break; case 6: if (s = this._oscParser.end(24 !== r && 26 !== r), s) return this._preserveStack(5, [], 0, n, i), s; 27 === r && (n |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0 }this.currentState = 15 & n } } } t.EscapeSequenceParser = c }, 6242: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.OscHandler = t.OscParser = void 0; const s = i(5770), r = i(482), n = []; t.OscParser = class { constructor() { this._state = 0, this._active = n, this._id = -1, this._handlers = Object.create(null), this._handlerFb = () => { }, this._stack = { paused: !1, loopPosition: 0, fallThrough: !1 } } registerHandler(e, t) { void 0 === this._handlers[e] && (this._handlers[e] = []); const i = this._handlers[e]; return i.push(t), { dispose: () => { const e = i.indexOf(t); -1 !== e && i.splice(e, 1) } } } clearHandler(e) { this._handlers[e] && delete this._handlers[e] } setHandlerFallback(e) { this._handlerFb = e } dispose() { this._handlers = Object.create(null), this._handlerFb = () => { }, this._active = n } reset() { if (2 === this._state) for (let e = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; e >= 0; --e)this._active[e].end(!1); this._stack.paused = !1, this._active = n, this._id = -1, this._state = 0 } _start() { if (this._active = this._handlers[this._id] || n, this._active.length) for (let e = this._active.length - 1; e >= 0; e--)this._active[e].start(); else this._handlerFb(this._id, "START") } _put(e, t, i) { if (this._active.length) for (let s = this._active.length - 1; s >= 0; s--)this._active[s].put(e, t, i); else this._handlerFb(this._id, "PUT", (0, r.utf32ToString)(e, t, i)) } start() { this.reset(), this._state = 1 } put(e, t, i) { if (3 !== this._state) { if (1 === this._state) for (; t < i;) { const i = e[t++]; if (59 === i) { this._state = 2, this._start(); break } if (i < 48 || 57 < i) return void (this._state = 3); -1 === this._id && (this._id = 0), this._id = 10 * this._id + i - 48 } 2 === this._state && i - t > 0 && this._put(e, t, i) } } end(e, t = !0) { if (0 !== this._state) { if (3 !== this._state) if (1 === this._state && this._start(), this._active.length) { let i = !1, s = this._active.length - 1, r = !1; if (this._stack.paused && (s = this._stack.loopPosition - 1, i = t, r = this._stack.fallThrough, this._stack.paused = !1), !r && !1 === i) { for (; s >= 0 && (i = this._active[s].end(e), !0 !== i); s--)if (i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !1, i; s-- } for (; s >= 0; s--)if (i = this._active[s].end(!1), i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !0, i } else this._handlerFb(this._id, "END", e); this._active = n, this._id = -1, this._state = 0 } } }, t.OscHandler = class { constructor(e) { this._handler = e, this._data = "", this._hitLimit = !1 } start() { this._data = "", this._hitLimit = !1 } put(e, t, i) { this._hitLimit || (this._data += (0, r.utf32ToString)(e, t, i), this._data.length > s.PAYLOAD_LIMIT && (this._data = "", this._hitLimit = !0)) } end(e) { let t = !1; if (this._hitLimit) t = !1; else if (e && (t = this._handler(this._data), t instanceof Promise)) return t.then((e => (this._data = "", this._hitLimit = !1, e))); return this._data = "", this._hitLimit = !1, t } } }, 8742: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.Params = void 0; const i = 2147483647; class s { static fromArray(e) { const t = new s; if (!e.length) return t; for (let i = Array.isArray(e[0]) ? 1 : 0; i < e.length; ++i) { const s = e[i]; if (Array.isArray(s)) for (let e = 0; e < s.length; ++e)t.addSubParam(s[e]); else t.addParam(s) } return t } constructor(e = 32, t = 32) { if (this.maxLength = e, this.maxSubParamsLength = t, t > 256) throw new Error("maxSubParamsLength must not be greater than 256"); this.params = new Int32Array(e), this.length = 0, this._subParams = new Int32Array(t), this._subParamsLength = 0, this._subParamsIdx = new Uint16Array(e), this._rejectDigits = !1, this._rejectSubDigits = !1, this._digitIsSub = !1 } clone() { const e = new s(this.maxLength, this.maxSubParamsLength); return e.params.set(this.params), e.length = this.length, e._subParams.set(this._subParams), e._subParamsLength = this._subParamsLength, e._subParamsIdx.set(this._subParamsIdx), e._rejectDigits = this._rejectDigits, e._rejectSubDigits = this._rejectSubDigits, e._digitIsSub = this._digitIsSub, e } toArray() { const e = []; for (let t = 0; t < this.length; ++t) { e.push(this.params[t]); const i = this._subParamsIdx[t] >> 8, s = 255 & this._subParamsIdx[t]; s - i > 0 && e.push(Array.prototype.slice.call(this._subParams, i, s)) } return e } reset() { this.length = 0, this._subParamsLength = 0, this._rejectDigits = !1, this._rejectSubDigits = !1, this._digitIsSub = !1 } addParam(e) { if (this._digitIsSub = !1, this.length >= this.maxLength) this._rejectDigits = !0; else { if (e < -1) throw new Error("values lesser than -1 are not allowed"); this._subParamsIdx[this.length] = this._subParamsLength << 8 | this._subParamsLength, this.params[this.length++] = e > i ? i : e } } addSubParam(e) { if (this._digitIsSub = !0, this.length) if (this._rejectDigits || this._subParamsLength >= this.maxSubParamsLength) this._rejectSubDigits = !0; else { if (e < -1) throw new Error("values lesser than -1 are not allowed"); this._subParams[this._subParamsLength++] = e > i ? i : e, this._subParamsIdx[this.length - 1]++ } } hasSubParams(e) { return (255 & this._subParamsIdx[e]) - (this._subParamsIdx[e] >> 8) > 0 } getSubParams(e) { const t = this._subParamsIdx[e] >> 8, i = 255 & this._subParamsIdx[e]; return i - t > 0 ? this._subParams.subarray(t, i) : null } getSubParamsAll() { const e = {}; for (let t = 0; t < this.length; ++t) { const i = this._subParamsIdx[t] >> 8, s = 255 & this._subParamsIdx[t]; s - i > 0 && (e[t] = this._subParams.slice(i, s)) } return e } addDigit(e) { let t; if (this._rejectDigits || !(t = this._digitIsSub ? this._subParamsLength : this.length) || this._digitIsSub && this._rejectSubDigits) return; const s = this._digitIsSub ? this._subParams : this.params, r = s[t - 1]; s[t - 1] = ~r ? Math.min(10 * r + e, i) : e } } t.Params = s }, 5741: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.AddonManager = void 0, t.AddonManager = class { constructor() { this._addons = [] } dispose() { for (let e = this._addons.length - 1; e >= 0; e--)this._addons[e].instance.dispose() } loadAddon(e, t) { const i = { instance: t, dispose: t.dispose, isDisposed: !1 }; this._addons.push(i), t.dispose = () => this._wrappedAddonDispose(i), t.activate(e) } _wrappedAddonDispose(e) { if (e.isDisposed) return; let t = -1; for (let i = 0; i < this._addons.length; i++)if (this._addons[i] === e) { t = i; break } if (-1 === t) throw new Error("Could not dispose an addon that has not been loaded"); e.isDisposed = !0, e.dispose.apply(e.instance), this._addons.splice(t, 1) } } }, 8771: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.BufferApiView = void 0; const s = i(3785), r = i(511); t.BufferApiView = class { constructor(e, t) { this._buffer = e, this.type = t } init(e) { return this._buffer = e, this } get cursorY() { return this._buffer.y } get cursorX() { return this._buffer.x } get viewportY() { return this._buffer.ydisp } get baseY() { return this._buffer.ybase } get length() { return this._buffer.lines.length } getLine(e) { const t = this._buffer.lines.get(e); if (t) return new s.BufferLineApiView(t) } getNullCell() { return new r.CellData } } }, 3785: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.BufferLineApiView = void 0; const s = i(511); t.BufferLineApiView = class { constructor(e) { this._line = e } get isWrapped() { return this._line.isWrapped } get length() { return this._line.length } getCell(e, t) { if (!(e < 0 || e >= this._line.length)) return t ? (this._line.loadCell(e, t), t) : this._line.loadCell(e, new s.CellData) } translateToString(e, t, i) { return this._line.translateToString(e, t, i) } } }, 8285: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.BufferNamespaceApi = void 0; const s = i(8771), r = i(8460), n = i(844); class o extends n.Disposable { constructor(e) { super(), this._core = e, this._onBufferChange = this.register(new r.EventEmitter), this.onBufferChange = this._onBufferChange.event, this._normal = new s.BufferApiView(this._core.buffers.normal, "normal"), this._alternate = new s.BufferApiView(this._core.buffers.alt, "alternate"), this._core.buffers.onBufferActivate((() => this._onBufferChange.fire(this.active))) } get active() { if (this._core.buffers.active === this._core.buffers.normal) return this.normal; if (this._core.buffers.active === this._core.buffers.alt) return this.alternate; throw new Error("Active buffer is neither normal nor alternate") } get normal() { return this._normal.init(this._core.buffers.normal) } get alternate() { return this._alternate.init(this._core.buffers.alt) } } t.BufferNamespaceApi = o }, 7975: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.ParserApi = void 0, t.ParserApi = class { constructor(e) { this._core = e } registerCsiHandler(e, t) { return this._core.registerCsiHandler(e, (e => t(e.toArray()))) } addCsiHandler(e, t) { return this.registerCsiHandler(e, t) } registerDcsHandler(e, t) { return this._core.registerDcsHandler(e, ((e, i) => t(e, i.toArray()))) } addDcsHandler(e, t) { return this.registerDcsHandler(e, t) } registerEscHandler(e, t) { return this._core.registerEscHandler(e, t) } addEscHandler(e, t) { return this.registerEscHandler(e, t) } registerOscHandler(e, t) { return this._core.registerOscHandler(e, t) } addOscHandler(e, t) { return this.registerOscHandler(e, t) } } }, 7090: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.UnicodeApi = void 0, t.UnicodeApi = class { constructor(e) { this._core = e } register(e) { this._core.unicodeService.register(e) } get versions() { return this._core.unicodeService.versions } get activeVersion() { return this._core.unicodeService.activeVersion } set activeVersion(e) { this._core.unicodeService.activeVersion = e } } }, 744: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.BufferService = t.MINIMUM_ROWS = t.MINIMUM_COLS = void 0; const n = i(8460), o = i(844), a = i(5295), h = i(2585); t.MINIMUM_COLS = 2, t.MINIMUM_ROWS = 1; let c = t.BufferService = class extends o.Disposable { get buffer() { return this.buffers.active } constructor(e) { super(), this.isUserScrolling = !1, this._onResize = this.register(new n.EventEmitter), this.onResize = this._onResize.event, this._onScroll = this.register(new n.EventEmitter), this.onScroll = this._onScroll.event, this.cols = Math.max(e.rawOptions.cols || 0, t.MINIMUM_COLS), this.rows = Math.max(e.rawOptions.rows || 0, t.MINIMUM_ROWS), this.buffers = this.register(new a.BufferSet(e, this)) } resize(e, t) { this.cols = e, this.rows = t, this.buffers.resize(e, t), this._onResize.fire({ cols: e, rows: t }) } reset() { this.buffers.reset(), this.isUserScrolling = !1 } scroll(e, t = !1) { const i = this.buffer; let s; s = this._cachedBlankLine, s && s.length === this.cols && s.getFg(0) === e.fg && s.getBg(0) === e.bg || (s = i.getBlankLine(e, t), this._cachedBlankLine = s), s.isWrapped = t; const r = i.ybase + i.scrollTop, n = i.ybase + i.scrollBottom; if (0 === i.scrollTop) { const e = i.lines.isFull; n === i.lines.length - 1 ? e ? i.lines.recycle().copyFrom(s) : i.lines.push(s.clone()) : i.lines.splice(n + 1, 0, s.clone()), e ? this.isUserScrolling && (i.ydisp = Math.max(i.ydisp - 1, 0)) : (i.ybase++, this.isUserScrolling || i.ydisp++) } else { const e = n - r + 1; i.lines.shiftElements(r + 1, e - 1, -1), i.lines.set(n, s.clone()) } this.isUserScrolling || (i.ydisp = i.ybase), this._onScroll.fire(i.ydisp) } scrollLines(e, t, i) { const s = this.buffer; if (e < 0) { if (0 === s.ydisp) return; this.isUserScrolling = !0 } else e + s.ydisp >= s.ybase && (this.isUserScrolling = !1); const r = s.ydisp; s.ydisp = Math.max(Math.min(s.ydisp + e, s.ybase), 0), r !== s.ydisp && (t || this._onScroll.fire(s.ydisp)) } }; t.BufferService = c = s([r(0, h.IOptionsService)], c) }, 7994: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CharsetService = void 0, t.CharsetService = class { constructor() { this.glevel = 0, this._charsets = [] } reset() { this.charset = void 0, this._charsets = [], this.glevel = 0 } setgLevel(e) { this.glevel = e, this.charset = this._charsets[e] } setgCharset(e, t) { this._charsets[e] = t, this.glevel === e && (this.charset = t) } } }, 1753: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.CoreMouseService = void 0; const n = i(2585), o = i(8460), a = i(844), h = { NONE: { events: 0, restrict: () => !1 }, X10: { events: 1, restrict: e => 4 !== e.button && 1 === e.action && (e.ctrl = !1, e.alt = !1, e.shift = !1, !0) }, VT200: { events: 19, restrict: e => 32 !== e.action }, DRAG: { events: 23, restrict: e => 32 !== e.action || 3 !== e.button }, ANY: { events: 31, restrict: e => !0 } }; function c(e, t) { let i = (e.ctrl ? 16 : 0) | (e.shift ? 4 : 0) | (e.alt ? 8 : 0); return 4 === e.button ? (i |= 64, i |= e.action) : (i |= 3 & e.button, 4 & e.button && (i |= 64), 8 & e.button && (i |= 128), 32 === e.action ? i |= 32 : 0 !== e.action || t || (i |= 3)), i } const l = String.fromCharCode, d = { DEFAULT: e => { const t = [c(e, !1) + 32, e.col + 32, e.row + 32]; return t[0] > 255 || t[1] > 255 || t[2] > 255 ? "" : `${l(t[0])}${l(t[1])}${l(t[2])}` }, SGR: e => { const t = 0 === e.action && 4 !== e.button ? "m" : "M"; return `[<${c(e, !0)};${e.col};${e.row}${t}` }, SGR_PIXELS: e => { const t = 0 === e.action && 4 !== e.button ? "m" : "M"; return `[<${c(e, !0)};${e.x};${e.y}${t}` } }; let _ = t.CoreMouseService = class extends a.Disposable { constructor(e, t) { super(), this._bufferService = e, this._coreService = t, this._protocols = {}, this._encodings = {}, this._activeProtocol = "", this._activeEncoding = "", this._lastEvent = null, this._onProtocolChange = this.register(new o.EventEmitter), this.onProtocolChange = this._onProtocolChange.event; for (const e of Object.keys(h)) this.addProtocol(e, h[e]); for (const e of Object.keys(d)) this.addEncoding(e, d[e]); this.reset() } addProtocol(e, t) { this._protocols[e] = t } addEncoding(e, t) { this._encodings[e] = t } get activeProtocol() { return this._activeProtocol } get areMouseEventsActive() { return 0 !== this._protocols[this._activeProtocol].events } set activeProtocol(e) { if (!this._protocols[e]) throw new Error(`unknown protocol "${e}"`); this._activeProtocol = e, this._onProtocolChange.fire(this._protocols[e].events) } get activeEncoding() { return this._activeEncoding } set activeEncoding(e) { if (!this._encodings[e]) throw new Error(`unknown encoding "${e}"`); this._activeEncoding = e } reset() { this.activeProtocol = "NONE", this.activeEncoding = "DEFAULT", this._lastEvent = null } triggerMouseEvent(e) { if (e.col < 0 || e.col >= this._bufferService.cols || e.row < 0 || e.row >= this._bufferService.rows) return !1; if (4 === e.button && 32 === e.action) return !1; if (3 === e.button && 32 !== e.action) return !1; if (4 !== e.button && (2 === e.action || 3 === e.action)) return !1; if (e.col++, e.row++, 32 === e.action && this._lastEvent && this._equalEvents(this._lastEvent, e, "SGR_PIXELS" === this._activeEncoding)) return !1; if (!this._protocols[this._activeProtocol].restrict(e)) return !1; const t = this._encodings[this._activeEncoding](e); return t && ("DEFAULT" === this._activeEncoding ? this._coreService.triggerBinaryEvent(t) : this._coreService.triggerDataEvent(t, !0)), this._lastEvent = e, !0 } explainEvents(e) { return { down: !!(1 & e), up: !!(2 & e), drag: !!(4 & e), move: !!(8 & e), wheel: !!(16 & e) } } _equalEvents(e, t, i) { if (i) { if (e.x !== t.x) return !1; if (e.y !== t.y) return !1 } else { if (e.col !== t.col) return !1; if (e.row !== t.row) return !1 } return e.button === t.button && e.action === t.action && e.ctrl === t.ctrl && e.alt === t.alt && e.shift === t.shift } }; t.CoreMouseService = _ = s([r(0, n.IBufferService), r(1, n.ICoreService)], _) }, 6975: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.CoreService = void 0; const n = i(1439), o = i(8460), a = i(844), h = i(2585), c = Object.freeze({ insertMode: !1 }), l = Object.freeze({ applicationCursorKeys: !1, applicationKeypad: !1, bracketedPasteMode: !1, origin: !1, reverseWraparound: !1, sendFocus: !1, wraparound: !0 }); let d = t.CoreService = class extends a.Disposable { constructor(e, t, i) { super(), this._bufferService = e, this._logService = t, this._optionsService = i, this.isCursorInitialized = !1, this.isCursorHidden = !1, this._onData = this.register(new o.EventEmitter), this.onData = this._onData.event, this._onUserInput = this.register(new o.EventEmitter), this.onUserInput = this._onUserInput.event, this._onBinary = this.register(new o.EventEmitter), this.onBinary = this._onBinary.event, this._onRequestScrollToBottom = this.register(new o.EventEmitter), this.onRequestScrollToBottom = this._onRequestScrollToBottom.event, this.modes = (0, n.clone)(c), this.decPrivateModes = (0, n.clone)(l) } reset() { this.modes = (0, n.clone)(c), this.decPrivateModes = (0, n.clone)(l) } triggerDataEvent(e, t = !1) { if (this._optionsService.rawOptions.disableStdin) return; const i = this._bufferService.buffer; t && this._optionsService.rawOptions.scrollOnUserInput && i.ybase !== i.ydisp && this._onRequestScrollToBottom.fire(), t && this._onUserInput.fire(), this._logService.debug(`sending data "${e}"`, (() => e.split("").map((e => e.charCodeAt(0))))), this._onData.fire(e) } triggerBinaryEvent(e) { this._optionsService.rawOptions.disableStdin || (this._logService.debug(`sending binary "${e}"`, (() => e.split("").map((e => e.charCodeAt(0))))), this._onBinary.fire(e)) } }; t.CoreService = d = s([r(0, h.IBufferService), r(1, h.ILogService), r(2, h.IOptionsService)], d) }, 9074: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.DecorationService = void 0; const s = i(8055), r = i(8460), n = i(844), o = i(6106); let a = 0, h = 0; class c extends n.Disposable { get decorations() { return this._decorations.values() } constructor() { super(), this._decorations = new o.SortedList((e => e?.marker.line)), this._onDecorationRegistered = this.register(new r.EventEmitter), this.onDecorationRegistered = this._onDecorationRegistered.event, this._onDecorationRemoved = this.register(new r.EventEmitter), this.onDecorationRemoved = this._onDecorationRemoved.event, this.register((0, n.toDisposable)((() => this.reset()))) } registerDecoration(e) { if (e.marker.isDisposed) return; const t = new l(e); if (t) { const e = t.marker.onDispose((() => t.dispose())); t.onDispose((() => { t && (this._decorations.delete(t) && this._onDecorationRemoved.fire(t), e.dispose()) })), this._decorations.insert(t), this._onDecorationRegistered.fire(t) } return t } reset() { for (const e of this._decorations.values()) e.dispose(); this._decorations.clear() } *getDecorationsAtCell(e, t, i) { let s = 0, r = 0; for (const n of this._decorations.getKeyIterator(t)) s = n.options.x ?? 0, r = s + (n.options.width ?? 1), e >= s && e < r && (!i || (n.options.layer ?? "bottom") === i) && (yield n) } forEachDecorationAtCell(e, t, i, s) { this._decorations.forEachByKey(t, (t => { a = t.options.x ?? 0, h = a + (t.options.width ?? 1), e >= a && e < h && (!i || (t.options.layer ?? "bottom") === i) && s(t) })) } } t.DecorationService = c; class l extends n.Disposable { get isDisposed() { return this._isDisposed } get backgroundColorRGB() { return null === this._cachedBg && (this.options.backgroundColor ? this._cachedBg = s.css.toColor(this.options.backgroundColor) : this._cachedBg = void 0), this._cachedBg } get foregroundColorRGB() { return null === this._cachedFg && (this.options.foregroundColor ? this._cachedFg = s.css.toColor(this.options.foregroundColor) : this._cachedFg = void 0), this._cachedFg } constructor(e) { super(), this.options = e, this.onRenderEmitter = this.register(new r.EventEmitter), this.onRender = this.onRenderEmitter.event, this._onDispose = this.register(new r.EventEmitter), this.onDispose = this._onDispose.event, this._cachedBg = null, this._cachedFg = null, this.marker = e.marker, this.options.overviewRulerOptions && !this.options.overviewRulerOptions.position && (this.options.overviewRulerOptions.position = "full") } dispose() { this._onDispose.fire(), super.dispose() } } }, 4348: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.InstantiationService = t.ServiceCollection = void 0; const s = i(2585), r = i(8343); class n { 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 } forEach(e) { for (const [t, i] of this._entries.entries()) e(t, i) } has(e) { return this._entries.has(e) } get(e) { return this._entries.get(e) } } t.ServiceCollection = n, t.InstantiationService = class { constructor() { this._services = new n, this._services.set(s.IInstantiationService, this) } setService(e, t) { this._services.set(e, t) } getService(e) { return this._services.get(e) } createInstance(e, ...t) { const i = (0, r.getServiceDependencies)(e).sort(((e, t) => e.index - t.index)), s = []; for (const t of i) { const i = this._services.get(t.id); if (!i) throw new Error(`[createInstance] ${e.name} depends on UNKNOWN service ${t.id}.`); s.push(i) } const n = i.length > 0 ? i[0].index : t.length; if (t.length !== n) throw new Error(`[createInstance] First service dependency of ${e.name} at position ${n + 1} conflicts with ${t.length} static arguments`); return new e(...[...t, ...s]) } } }, 7866: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.traceCall = t.setTraceLogger = t.LogService = void 0; const n = i(844), o = i(2585), a = { trace: o.LogLevelEnum.TRACE, debug: o.LogLevelEnum.DEBUG, info: o.LogLevelEnum.INFO, warn: o.LogLevelEnum.WARN, error: o.LogLevelEnum.ERROR, off: o.LogLevelEnum.OFF }; let h, c = t.LogService = class extends n.Disposable { get logLevel() { return this._logLevel } constructor(e) { super(), this._optionsService = e, this._logLevel = o.LogLevelEnum.OFF, this._updateLogLevel(), this.register(this._optionsService.onSpecificOptionChange("logLevel", (() => this._updateLogLevel()))), h = this } _updateLogLevel() { this._logLevel = a[this._optionsService.rawOptions.logLevel] } _evalLazyOptionalParams(e) { for (let t = 0; t < e.length; t++)"function" == typeof e[t] && (e[t] = e[t]()) } _log(e, t, i) { this._evalLazyOptionalParams(i), e.call(console, (this._optionsService.options.logger ? "" : "xterm.js: ") + t, ...i) } trace(e, ...t) { this._logLevel <= o.LogLevelEnum.TRACE && this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger) ?? console.log, e, t) } debug(e, ...t) { this._logLevel <= o.LogLevelEnum.DEBUG && this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger) ?? console.log, e, t) } info(e, ...t) { this._logLevel <= o.LogLevelEnum.INFO && this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger) ?? console.info, e, t) } warn(e, ...t) { this._logLevel <= o.LogLevelEnum.WARN && this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger) ?? console.warn, e, t) } error(e, ...t) { this._logLevel <= o.LogLevelEnum.ERROR && this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger) ?? console.error, e, t) } }; t.LogService = c = s([r(0, o.IOptionsService)], c), t.setTraceLogger = function (e) { h = e }, t.traceCall = function (e, t, i) { if ("function" != typeof i.value) throw new Error("not supported"); const s = i.value; i.value = function (...e) { if (h.logLevel !== o.LogLevelEnum.TRACE) return s.apply(this, e); h.trace(`GlyphRenderer#${s.name}(${e.map((e => JSON.stringify(e))).join(", ")})`); const t = s.apply(this, e); return h.trace(`GlyphRenderer#${s.name} return`, t), t } } }, 7302: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.OptionsService = t.DEFAULT_OPTIONS = void 0; const s = i(8460), r = i(844), n = i(6114); t.DEFAULT_OPTIONS = { cols: 80, rows: 24, cursorBlink: !1, cursorStyle: "block", cursorWidth: 1, cursorInactiveStyle: "outline", customGlyphs: !0, drawBoldTextInBrightColors: !0, documentOverride: null, fastScrollModifier: "alt", fastScrollSensitivity: 5, fontFamily: "courier-new, courier, monospace", fontSize: 15, fontWeight: "normal", fontWeightBold: "bold", ignoreBracketedPasteMode: !1, lineHeight: 1, letterSpacing: 0, linkHandler: null, logLevel: "info", logger: null, scrollback: 1e3, scrollOnUserInput: !0, scrollSensitivity: 1, screenReaderMode: !1, smoothScrollDuration: 0, macOptionIsMeta: !1, macOptionClickForcesSelection: !1, minimumContrastRatio: 1, disableStdin: !1, allowProposedApi: !1, allowTransparency: !1, tabStopWidth: 8, theme: {}, rescaleOverlappingGlyphs: !1, rightClickSelectsWord: n.isMac, windowOptions: {}, windowsMode: !1, windowsPty: {}, wordSeparator: " ()[]{}',\"`", altClickMovesCursor: !0, convertEol: !1, termName: "xterm", cancelEvents: !1, overviewRulerWidth: 0 }; const o = ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"]; class a extends r.Disposable { constructor(e) { super(), this._onOptionChange = this.register(new s.EventEmitter), this.onOptionChange = this._onOptionChange.event; const i = { ...t.DEFAULT_OPTIONS }; for (const t in e) if (t in i) try { const s = e[t]; i[t] = this._sanitizeAndValidateOption(t, s) } catch (e) { console.error(e) } this.rawOptions = i, this.options = { ...i }, this._setupOptions(), this.register((0, r.toDisposable)((() => { this.rawOptions.linkHandler = null, this.rawOptions.documentOverride = null }))) } onSpecificOptionChange(e, t) { return this.onOptionChange((i => { i === e && t(this.rawOptions[e]) })) } onMultipleOptionChange(e, t) { return this.onOptionChange((i => { -1 !== e.indexOf(i) && t() })) } _setupOptions() { const e = e => { if (!(e in t.DEFAULT_OPTIONS)) throw new Error(`No option with key "${e}"`); return this.rawOptions[e] }, i = (e, i) => { if (!(e in t.DEFAULT_OPTIONS)) throw new Error(`No option with key "${e}"`); i = this._sanitizeAndValidateOption(e, i), this.rawOptions[e] !== i && (this.rawOptions[e] = i, this._onOptionChange.fire(e)) }; for (const t in this.rawOptions) { const s = { get: e.bind(this, t), set: i.bind(this, t) }; Object.defineProperty(this.options, t, s) } } _sanitizeAndValidateOption(e, i) { switch (e) { case "cursorStyle": if (i || (i = t.DEFAULT_OPTIONS[e]), !function (e) { return "block" === e || "underline" === e || "bar" === e }(i)) throw new Error(`"${i}" is not a valid value for ${e}`); break; case "wordSeparator": i || (i = t.DEFAULT_OPTIONS[e]); break; case "fontWeight": case "fontWeightBold": if ("number" == typeof i && 1 <= i && i <= 1e3) break; i = o.includes(i) ? i : t.DEFAULT_OPTIONS[e]; break; case "cursorWidth": i = Math.floor(i); case "lineHeight": case "tabStopWidth": if (i < 1) throw new Error(`${e} cannot be less than 1, value: ${i}`); break; case "minimumContrastRatio": i = Math.max(1, Math.min(21, Math.round(10 * i) / 10)); break; case "scrollback": if ((i = Math.min(i, 4294967295)) < 0) throw new Error(`${e} cannot be less than 0, value: ${i}`); break; case "fastScrollSensitivity": case "scrollSensitivity": if (i <= 0) throw new Error(`${e} cannot be less than or equal to 0, value: ${i}`); break; case "rows": case "cols": if (!i && 0 !== i) throw new Error(`${e} must be numeric, value: ${i}`); break; case "windowsPty": i = i ?? {} }return i } } t.OptionsService = a }, 2660: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.OscLinkService = void 0; const n = i(2585); let o = t.OscLinkService = class { constructor(e) { this._bufferService = e, this._nextId = 1, this._entriesWithId = new Map, this._dataByLinkId = new Map } registerLink(e) { const t = this._bufferService.buffer; if (void 0 === e.id) { const i = t.addMarker(t.ybase + t.y), s = { data: e, id: this._nextId++, lines: [i] }; return i.onDispose((() => this._removeMarkerFromLink(s, i))), this._dataByLinkId.set(s.id, s), s.id } const i = e, s = this._getEntryIdKey(i), r = this._entriesWithId.get(s); if (r) return this.addLineToLink(r.id, t.ybase + t.y), r.id; const n = t.addMarker(t.ybase + t.y), o = { id: this._nextId++, key: this._getEntryIdKey(i), data: i, lines: [n] }; return n.onDispose((() => this._removeMarkerFromLink(o, n))), this._entriesWithId.set(o.key, o), this._dataByLinkId.set(o.id, o), o.id } addLineToLink(e, t) { const i = this._dataByLinkId.get(e); if (i && i.lines.every((e => e.line !== t))) { const e = this._bufferService.buffer.addMarker(t); i.lines.push(e), e.onDispose((() => this._removeMarkerFromLink(i, e))) } } getLinkData(e) { return this._dataByLinkId.get(e)?.data } _getEntryIdKey(e) { return `${e.id};;${e.uri}` } _removeMarkerFromLink(e, t) { const i = e.lines.indexOf(t); -1 !== i && (e.lines.splice(i, 1), 0 === e.lines.length && (void 0 !== e.data.id && this._entriesWithId.delete(e.key), this._dataByLinkId.delete(e.id))) } }; t.OscLinkService = o = s([r(0, n.IBufferService)], o) }, 8343: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.createDecorator = t.getServiceDependencies = t.serviceRegistry = void 0; const i = "di$target", s = "di$dependencies"; t.serviceRegistry = new Map, t.getServiceDependencies = function (e) { return e[s] || [] }, t.createDecorator = function (e) { if (t.serviceRegistry.has(e)) return t.serviceRegistry.get(e); const r = function (e, t, n) { if (3 !== arguments.length) throw new Error("@IServiceName-decorator can only be used to decorate a parameter"); !function (e, t, r) { t[i] === t ? t[s].push({ id: e, index: r }) : (t[s] = [{ id: e, index: r }], t[i] = t) }(r, e, n) }; return r.toString = () => e, t.serviceRegistry.set(e, r), r } }, 2585: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.IDecorationService = t.IUnicodeService = t.IOscLinkService = t.IOptionsService = t.ILogService = t.LogLevelEnum = t.IInstantiationService = t.ICharsetService = t.ICoreService = t.ICoreMouseService = t.IBufferService = void 0; const s = i(8343); var r; t.IBufferService = (0, s.createDecorator)("BufferService"), t.ICoreMouseService = (0, s.createDecorator)("CoreMouseService"), t.ICoreService = (0, s.createDecorator)("CoreService"), t.ICharsetService = (0, s.createDecorator)("CharsetService"), t.IInstantiationService = (0, s.createDecorator)("InstantiationService"), function (e) { e[e.TRACE = 0] = "TRACE", e[e.DEBUG = 1] = "DEBUG", e[e.INFO = 2] = "INFO", e[e.WARN = 3] = "WARN", e[e.ERROR = 4] = "ERROR", e[e.OFF = 5] = "OFF" }(r || (t.LogLevelEnum = r = {})), t.ILogService = (0, s.createDecorator)("LogService"), t.IOptionsService = (0, s.createDecorator)("OptionsService"), t.IOscLinkService = (0, s.createDecorator)("OscLinkService"), t.IUnicodeService = (0, s.createDecorator)("UnicodeService"), t.IDecorationService = (0, s.createDecorator)("DecorationService") }, 1480: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.UnicodeService = void 0; const s = i(8460), r = i(225); class n { static extractShouldJoin(e) { return !!(1 & e) } static extractWidth(e) { return e >> 1 & 3 } static extractCharKind(e) { return e >> 3 } static createPropertyValue(e, t, i = !1) { return (16777215 & e) << 3 | (3 & t) << 1 | (i ? 1 : 0) } constructor() { this._providers = Object.create(null), this._active = "", this._onChange = new s.EventEmitter, this.onChange = this._onChange.event; const e = new r.UnicodeV6; this.register(e), this._active = e.version, this._activeProvider = e } dispose() { this._onChange.dispose() } get versions() { return Object.keys(this._providers) } get activeVersion() { return this._active } set activeVersion(e) { if (!this._providers[e]) throw new Error(`unknown Unicode version "${e}"`); this._active = e, this._activeProvider = this._providers[e], this._onChange.fire(e) } register(e) { this._providers[e.version] = e } wcwidth(e) { return this._activeProvider.wcwidth(e) } getStringCellWidth(e) { let t = 0, i = 0; const s = e.length; for (let r = 0; r < s; ++r) { let o = e.charCodeAt(r); if (55296 <= o && o <= 56319) { if (++r >= s) return t + this.wcwidth(o); const i = e.charCodeAt(r); 56320 <= i && i <= 57343 ? o = 1024 * (o - 55296) + i - 56320 + 65536 : t += this.wcwidth(i) } const a = this.charProperties(o, i); let h = n.extractWidth(a); n.extractShouldJoin(a) && (h -= n.extractWidth(i)), t += h, i = a } return t } charProperties(e, t) { return this._activeProvider.charProperties(e, t) } } t.UnicodeService = n } }, t = {}; function i(s) { var r = t[s]; if (void 0 !== r) return r.exports; var n = t[s] = { exports: {} }; return e[s].call(n.exports, n, n.exports, i), n.exports } var s = {}; return (() => { var e = s; Object.defineProperty(e, "__esModule", { value: !0 }), e.Terminal = void 0; const t = i(9042), r = i(3236), n = i(844), o = i(5741), a = i(8285), h = i(7975), c = i(7090), l = ["cols", "rows"]; class d extends n.Disposable { constructor(e) { super(), this._core = this.register(new r.Terminal(e)), this._addonManager = this.register(new o.AddonManager), this._publicOptions = { ...this._core.options }; const t = e => this._core.options[e], i = (e, t) => { this._checkReadonlyOptions(e), this._core.options[e] = t }; for (const e in this._core.options) { const s = { get: t.bind(this, e), set: i.bind(this, e) }; Object.defineProperty(this._publicOptions, e, s) } } _checkReadonlyOptions(e) { if (l.includes(e)) throw new Error(`Option "${e}" can only be set in the constructor`) } _checkProposedApi() { if (!this._core.optionsService.rawOptions.allowProposedApi) throw new Error("You must set the allowProposedApi option to true to use proposed API") } get onBell() { return this._core.onBell } get onBinary() { return this._core.onBinary } get onCursorMove() { return this._core.onCursorMove } get onData() { return this._core.onData } get onKey() { return this._core.onKey } get onLineFeed() { return this._core.onLineFeed } get onRender() { return this._core.onRender } get onResize() { return this._core.onResize } get onScroll() { return this._core.onScroll } get onSelectionChange() { return this._core.onSelectionChange } get onTitleChange() { return this._core.onTitleChange } get onWriteParsed() { return this._core.onWriteParsed } get element() { return this._core.element } get parser() { return this._parser || (this._parser = new h.ParserApi(this._core)), this._parser } get unicode() { return this._checkProposedApi(), new c.UnicodeApi(this._core) } get textarea() { return this._core.textarea } get rows() { return this._core.rows } get cols() { return this._core.cols } get buffer() { return this._buffer || (this._buffer = this.register(new a.BufferNamespaceApi(this._core))), this._buffer } get markers() { return this._checkProposedApi(), this._core.markers } get modes() { const e = this._core.coreService.decPrivateModes; let t = "none"; switch (this._core.coreMouseService.activeProtocol) { case "X10": t = "x10"; break; case "VT200": t = "vt200"; break; case "DRAG": t = "drag"; break; case "ANY": t = "any" }return { applicationCursorKeysMode: e.applicationCursorKeys, applicationKeypadMode: e.applicationKeypad, bracketedPasteMode: e.bracketedPasteMode, insertMode: this._core.coreService.modes.insertMode, mouseTrackingMode: t, originMode: e.origin, reverseWraparoundMode: e.reverseWraparound, sendFocusMode: e.sendFocus, wraparoundMode: e.wraparound } } get options() { return this._publicOptions } set options(e) { for (const t in e) this._publicOptions[t] = e[t] } blur() { this._core.blur() } focus() { this._core.focus() } input(e, t = !0) { this._core.input(e, t) } resize(e, t) { this._verifyIntegers(e, t), this._core.resize(e, t) } open(e) { this._core.open(e) } attachCustomKeyEventHandler(e) { this._core.attachCustomKeyEventHandler(e) } attachCustomWheelEventHandler(e) { this._core.attachCustomWheelEventHandler(e) } registerLinkProvider(e) { return this._core.registerLinkProvider(e) } registerCharacterJoiner(e) { return this._checkProposedApi(), this._core.registerCharacterJoiner(e) } deregisterCharacterJoiner(e) { this._checkProposedApi(), this._core.deregisterCharacterJoiner(e) } registerMarker(e = 0) { return this._verifyIntegers(e), this._core.registerMarker(e) } registerDecoration(e) { return this._checkProposedApi(), this._verifyPositiveIntegers(e.x ?? 0, e.width ?? 0, e.height ?? 0), this._core.registerDecoration(e) } hasSelection() { return this._core.hasSelection() } select(e, t, i) { this._verifyIntegers(e, t, i), this._core.select(e, t, i) } getSelection() { return this._core.getSelection() } getSelectionPosition() { return this._core.getSelectionPosition() } clearSelection() { this._core.clearSelection() } selectAll() { this._core.selectAll() } selectLines(e, t) { this._verifyIntegers(e, t), this._core.selectLines(e, t) } dispose() { super.dispose() } scrollLines(e) { this._verifyIntegers(e), this._core.scrollLines(e) } scrollPages(e) { this._verifyIntegers(e), this._core.scrollPages(e) } scrollToTop() { this._core.scrollToTop() } scrollToBottom() { this._core.scrollToBottom() } scrollToLine(e) { this._verifyIntegers(e), this._core.scrollToLine(e) } clear() { this._core.clear() } write(e, t) { this._core.write(e, t) } writeln(e, t) { this._core.write(e), this._core.write("\r\n", t) } paste(e) { this._core.paste(e) } refresh(e, t) { this._verifyIntegers(e, t), this._core.refresh(e, t) } reset() { this._core.reset() } clearTextureAtlas() { this._core.clearTextureAtlas() } loadAddon(e) { this._addonManager.loadAddon(this, e) } static get strings() { return t } _verifyIntegers(...e) { for (const t of e) if (t === 1 / 0 || isNaN(t) || t % 1 != 0) throw new Error("This API only accepts integers") } _verifyPositiveIntegers(...e) { for (const t of e) if (t && (t === 1 / 0 || isNaN(t) || t % 1 != 0 || t < 0)) throw new Error("This API only accepts positive integers") } } e.Terminal = d })(), s })(), e.exports = t() }, 880: e => { var t; self, t = () => (() => { "use strict"; var e = { 903: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.BaseRenderLayer = void 0; const s = i(274), r = i(627), n = i(237), o = i(860), a = i(374), h = i(296), c = i(345), l = i(859), d = i(399), _ = i(855); class u extends l.Disposable { get canvas() { return this._canvas } get cacheCanvas() { return this._charAtlas?.pages[0].canvas } constructor(e, t, i, r, n, o, a, d, _, u) { super(), this._terminal = e, this._container = t, this._alpha = n, this._themeService = o, this._bufferService = a, this._optionsService = d, this._decorationService = _, this._coreBrowserService = u, this._deviceCharWidth = 0, this._deviceCharHeight = 0, this._deviceCellWidth = 0, this._deviceCellHeight = 0, this._deviceCharLeft = 0, this._deviceCharTop = 0, this._selectionModel = (0, h.createSelectionRenderModel)(), this._bitmapGenerator = [], this._charAtlasDisposable = this.register(new l.MutableDisposable), this._onAddTextureAtlasCanvas = this.register(new c.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._cellColorResolver = new s.CellColorResolver(this._terminal, this._optionsService, this._selectionModel, this._decorationService, this._coreBrowserService, this._themeService), this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add(`xterm-${i}-layer`), this._canvas.style.zIndex = r.toString(), this._initCanvas(), this._container.appendChild(this._canvas), this._refreshCharAtlas(this._themeService.colors), this.register(this._themeService.onChangeColors((e => { this._refreshCharAtlas(e), this.reset(), this.handleSelectionChanged(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode) }))), this.register((0, l.toDisposable)((() => { this._canvas.remove() }))) } _initCanvas() { this._ctx = (0, a.throwIfFalsy)(this._canvas.getContext("2d", { alpha: this._alpha })), this._alpha || this._clearAll() } handleBlur() { } handleFocus() { } handleCursorMove() { } handleGridChanged(e, t) { } handleSelectionChanged(e, t, i = !1) { this._selectionModel.update(this._terminal._core, e, t, i) } _setTransparency(e) { if (e === this._alpha) return; const t = this._canvas; this._alpha = e, this._canvas = this._canvas.cloneNode(), this._initCanvas(), this._container.replaceChild(this._canvas, t), this._refreshCharAtlas(this._themeService.colors), this.handleGridChanged(0, this._bufferService.rows - 1) } _refreshCharAtlas(e) { if (!(this._deviceCharWidth <= 0 && this._deviceCharHeight <= 0)) { this._charAtlas = (0, r.acquireTextureAtlas)(this._terminal, this._optionsService.rawOptions, e, this._deviceCellWidth, this._deviceCellHeight, this._deviceCharWidth, this._deviceCharHeight, this._coreBrowserService.dpr), this._charAtlasDisposable.value = (0, c.forwardEvent)(this._charAtlas.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas), this._charAtlas.warmUp(); for (let e = 0; e < this._charAtlas.pages.length; e++)this._bitmapGenerator[e] = new f(this._charAtlas.pages[e].canvas) } } resize(e) { this._deviceCellWidth = e.device.cell.width, this._deviceCellHeight = e.device.cell.height, this._deviceCharWidth = e.device.char.width, this._deviceCharHeight = e.device.char.height, this._deviceCharLeft = e.device.char.left, this._deviceCharTop = e.device.char.top, this._canvas.width = e.device.canvas.width, this._canvas.height = e.device.canvas.height, this._canvas.style.width = `${e.css.canvas.width}px`, this._canvas.style.height = `${e.css.canvas.height}px`, this._alpha || this._clearAll(), this._refreshCharAtlas(this._themeService.colors) } clearTextureAtlas() { this._charAtlas?.clearTexture() } _fillCells(e, t, i, s) { this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight) } _fillMiddleLineAtCells(e, t, i = 1) { const s = Math.ceil(.5 * this._deviceCellHeight); this._ctx.fillRect(e * this._deviceCellWidth, (t + 1) * this._deviceCellHeight - s - this._coreBrowserService.dpr, i * this._deviceCellWidth, this._coreBrowserService.dpr) } _fillBottomLineAtCells(e, t, i = 1, s = 0) { this._ctx.fillRect(e * this._deviceCellWidth, (t + 1) * this._deviceCellHeight + s - this._coreBrowserService.dpr - 1, i * this._deviceCellWidth, this._coreBrowserService.dpr) } _curlyUnderlineAtCell(e, t, i = 1) { this._ctx.save(), this._ctx.beginPath(), this._ctx.strokeStyle = this._ctx.fillStyle; const s = this._coreBrowserService.dpr; this._ctx.lineWidth = s; for (let r = 0; r < i; r++) { const i = (e + r) * this._deviceCellWidth, n = (e + r + .5) * this._deviceCellWidth, o = (e + r + 1) * this._deviceCellWidth, a = (t + 1) * this._deviceCellHeight - s - 1, h = a - s, c = a + s; this._ctx.moveTo(i, a), this._ctx.bezierCurveTo(i, h, n, h, n, a), this._ctx.bezierCurveTo(n, c, o, c, o, a) } this._ctx.stroke(), this._ctx.restore() } _dottedUnderlineAtCell(e, t, i = 1) { this._ctx.save(), this._ctx.beginPath(), this._ctx.strokeStyle = this._ctx.fillStyle; const s = this._coreBrowserService.dpr; this._ctx.lineWidth = s, this._ctx.setLineDash([2 * s, s]); const r = e * this._deviceCellWidth, n = (t + 1) * this._deviceCellHeight - s - 1; this._ctx.moveTo(r, n); for (let t = 0; t < i; t++) { const s = (e + i + t) * this._deviceCellWidth; this._ctx.lineTo(s, n) } this._ctx.stroke(), this._ctx.closePath(), this._ctx.restore() } _dashedUnderlineAtCell(e, t, i = 1) { this._ctx.save(), this._ctx.beginPath(), this._ctx.strokeStyle = this._ctx.fillStyle; const s = this._coreBrowserService.dpr; this._ctx.lineWidth = s, this._ctx.setLineDash([4 * s, 3 * s]); const r = e * this._deviceCellWidth, n = (e + i) * this._deviceCellWidth, o = (t + 1) * this._deviceCellHeight - s - 1; this._ctx.moveTo(r, o), this._ctx.lineTo(n, o), this._ctx.stroke(), this._ctx.closePath(), this._ctx.restore() } _fillLeftLineAtCell(e, t, i) { this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, this._coreBrowserService.dpr * i, this._deviceCellHeight) } _strokeRectAtCell(e, t, i, s) { const r = this._coreBrowserService.dpr; this._ctx.lineWidth = r, this._ctx.strokeRect(e * this._deviceCellWidth + r / 2, t * this._deviceCellHeight + r / 2, i * this._deviceCellWidth - r, s * this._deviceCellHeight - r) } _clearAll() { this._alpha ? this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height)) } _clearCells(e, t, i, s) { this._alpha ? this._ctx.clearRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight)) } _fillCharTrueColor(e, t, i) { this._ctx.font = this._getFont(!1, !1), this._ctx.textBaseline = n.TEXT_BASELINE, this._clipRow(i); let s = !1; !1 !== this._optionsService.rawOptions.customGlyphs && (s = (0, o.tryDrawCustomChar)(this._ctx, e.getChars(), t * this._deviceCellWidth, i * this._deviceCellHeight, this._deviceCellWidth, this._deviceCellHeight, this._optionsService.rawOptions.fontSize, this._coreBrowserService.dpr)), s || this._ctx.fillText(e.getChars(), t * this._deviceCellWidth + this._deviceCharLeft, i * this._deviceCellHeight + this._deviceCharTop + this._deviceCharHeight) } _drawChars(e, t, i) { const s = e.getChars(), r = e.getCode(), n = e.getWidth(); if (this._cellColorResolver.resolve(e, t, this._bufferService.buffer.ydisp + i, this._deviceCellWidth), !this._charAtlas) return; let o; if (o = s && s.length > 1 ? this._charAtlas.getRasterizedGlyphCombinedChar(s, this._cellColorResolver.result.bg, this._cellColorResolver.result.fg, this._cellColorResolver.result.ext, !0) : this._charAtlas.getRasterizedGlyph(e.getCode() || _.WHITESPACE_CELL_CODE, this._cellColorResolver.result.bg, this._cellColorResolver.result.fg, this._cellColorResolver.result.ext, !0), !o.size.x || !o.size.y) return; this._ctx.save(), this._clipRow(i), this._bitmapGenerator[o.texturePage] && this._charAtlas.pages[o.texturePage].canvas !== this._bitmapGenerator[o.texturePage].canvas && (this._bitmapGenerator[o.texturePage]?.bitmap?.close(), delete this._bitmapGenerator[o.texturePage]), this._charAtlas.pages[o.texturePage].version !== this._bitmapGenerator[o.texturePage]?.version && (this._bitmapGenerator[o.texturePage] || (this._bitmapGenerator[o.texturePage] = new f(this._charAtlas.pages[o.texturePage].canvas)), this._bitmapGenerator[o.texturePage].refresh(), this._bitmapGenerator[o.texturePage].version = this._charAtlas.pages[o.texturePage].version); let h = o.size.x; this._optionsService.rawOptions.rescaleOverlappingGlyphs && (0, a.allowRescaling)(r, n, o.size.x, this._deviceCellWidth) && (h = this._deviceCellWidth - 1), this._ctx.drawImage(this._bitmapGenerator[o.texturePage]?.bitmap || this._charAtlas.pages[o.texturePage].canvas, o.texturePosition.x, o.texturePosition.y, o.size.x, o.size.y, t * this._deviceCellWidth + this._deviceCharLeft - o.offset.x, i * this._deviceCellHeight + this._deviceCharTop - o.offset.y, h, o.size.y), this._ctx.restore() } _clipRow(e) { this._ctx.beginPath(), this._ctx.rect(0, e * this._deviceCellHeight, this._bufferService.cols * this._deviceCellWidth, this._deviceCellHeight), this._ctx.clip() } _getFont(e, t) { return `${t ? "italic" : ""} ${e ? this._optionsService.rawOptions.fontWeightBold : this._optionsService.rawOptions.fontWeight} ${this._optionsService.rawOptions.fontSize * this._coreBrowserService.dpr}px ${this._optionsService.rawOptions.fontFamily}` } } t.BaseRenderLayer = u; class f { get bitmap() { return this._bitmap } constructor(e) { this.canvas = e, this._state = 0, this._commitTimeout = void 0, this._bitmap = void 0, this.version = -1 } refresh() { this._bitmap?.close(), this._bitmap = void 0, d.isSafari || (void 0 === this._commitTimeout && (this._commitTimeout = window.setTimeout((() => this._generate()), 100)), 1 === this._state && (this._state = 2)) } _generate() { 0 === this._state && (this._bitmap?.close(), this._bitmap = void 0, this._state = 1, window.createImageBitmap(this.canvas).then((e => { 2 === this._state ? this.refresh() : this._bitmap = e, this._state = 0 })), this._commitTimeout && (this._commitTimeout = void 0)) } } }, 949: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CanvasRenderer = void 0; const s = i(627), r = i(56), n = i(374), o = i(345), a = i(859), h = i(873), c = i(43), l = i(630), d = i(744); class _ extends a.Disposable { constructor(e, t, i, _, u, f, v, g, p, m, C) { super(), this._terminal = e, this._screenElement = t, this._bufferService = _, this._charSizeService = u, this._optionsService = f, this._coreBrowserService = p, this._themeService = C, this._observerDisposable = this.register(new a.MutableDisposable), this._onRequestRedraw = this.register(new o.EventEmitter), this.onRequestRedraw = this._onRequestRedraw.event, this._onChangeTextureAtlas = this.register(new o.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new o.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event; const S = this._optionsService.rawOptions.allowTransparency; this._renderLayers = [new d.TextRenderLayer(this._terminal, this._screenElement, 0, S, this._bufferService, this._optionsService, v, m, this._coreBrowserService, C), new l.SelectionRenderLayer(this._terminal, this._screenElement, 1, this._bufferService, this._coreBrowserService, m, this._optionsService, C), new c.LinkRenderLayer(this._terminal, this._screenElement, 2, i, this._bufferService, this._optionsService, m, this._coreBrowserService, C), new h.CursorRenderLayer(this._terminal, this._screenElement, 3, this._onRequestRedraw, this._bufferService, this._optionsService, g, this._coreBrowserService, m, C)]; for (const e of this._renderLayers) (0, o.forwardEvent)(e.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas); this.dimensions = (0, n.createRenderDimensions)(), this._devicePixelRatio = this._coreBrowserService.dpr, this._updateDimensions(), this._observerDisposable.value = (0, r.observeDevicePixelDimensions)(this._renderLayers[0].canvas, this._coreBrowserService.window, ((e, t) => this._setCanvasDevicePixelDimensions(e, t))), this.register(this._coreBrowserService.onWindowChange((e => { this._observerDisposable.value = (0, r.observeDevicePixelDimensions)(this._renderLayers[0].canvas, e, ((e, t) => this._setCanvasDevicePixelDimensions(e, t))) }))), this.register((0, a.toDisposable)((() => { for (const e of this._renderLayers) e.dispose(); (0, s.removeTerminalFromCache)(this._terminal) }))) } get textureAtlas() { return this._renderLayers[0].cacheCanvas } handleDevicePixelRatioChange() { this._devicePixelRatio !== this._coreBrowserService.dpr && (this._devicePixelRatio = this._coreBrowserService.dpr, this.handleResize(this._bufferService.cols, this._bufferService.rows)) } handleResize(e, t) { this._updateDimensions(); for (const e of this._renderLayers) e.resize(this.dimensions); this._screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._screenElement.style.height = `${this.dimensions.css.canvas.height}px` } handleCharSizeChanged() { this.handleResize(this._bufferService.cols, this._bufferService.rows) } handleBlur() { this._runOperation((e => e.handleBlur())) } handleFocus() { this._runOperation((e => e.handleFocus())) } handleSelectionChanged(e, t, i = !1) { this._runOperation((s => s.handleSelectionChanged(e, t, i))), this._themeService.colors.selectionForeground && this._onRequestRedraw.fire({ start: 0, end: this._bufferService.rows - 1 }) } handleCursorMove() { this._runOperation((e => e.handleCursorMove())) } clear() { this._runOperation((e => e.reset())) } _runOperation(e) { for (const t of this._renderLayers) e(t) } renderRows(e, t) { for (const i of this._renderLayers) i.handleGridChanged(e, t) } clearTextureAtlas() { for (const e of this._renderLayers) e.clearTextureAtlas() } _updateDimensions() { if (!this._charSizeService.hasValidSize) return; const e = this._coreBrowserService.dpr; this.dimensions.device.char.width = Math.floor(this._charSizeService.width * e), this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * e), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.top = 1 === this._optionsService.rawOptions.lineHeight ? 0 : Math.round((this.dimensions.device.cell.height - this.dimensions.device.char.height) / 2), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.char.left = Math.floor(this._optionsService.rawOptions.letterSpacing / 2), this.dimensions.device.canvas.height = this._bufferService.rows * this.dimensions.device.cell.height, this.dimensions.device.canvas.width = this._bufferService.cols * this.dimensions.device.cell.width, this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / e), this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / e), this.dimensions.css.cell.height = this.dimensions.css.canvas.height / this._bufferService.rows, this.dimensions.css.cell.width = this.dimensions.css.canvas.width / this._bufferService.cols } _setCanvasDevicePixelDimensions(e, t) { this.dimensions.device.canvas.height = t, this.dimensions.device.canvas.width = e; for (const e of this._renderLayers) e.resize(this.dimensions); this._requestRedrawViewport() } _requestRedrawViewport() { this._onRequestRedraw.fire({ start: 0, end: this._bufferService.rows - 1 }) } } t.CanvasRenderer = _ }, 873: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CursorRenderLayer = void 0; const s = i(457), r = i(859), n = i(399), o = i(782), a = i(903); class h extends a.BaseRenderLayer { constructor(e, t, i, s, n, a, h, c, l, d) { super(e, t, "cursor", i, !0, d, n, a, l, c), this._onRequestRedraw = s, this._coreService = h, this._cursorBlinkStateManager = this.register(new r.MutableDisposable), this._cell = new o.CellData, this._state = { x: 0, y: 0, isFocused: !1, style: "", width: 0 }, this._cursorRenderers = { bar: this._renderBarCursor.bind(this), block: this._renderBlockCursor.bind(this), underline: this._renderUnderlineCursor.bind(this), outline: this._renderOutlineCursor.bind(this) }, this.register(a.onOptionChange((() => this._handleOptionsChanged()))), this._handleOptionsChanged() } resize(e) { super.resize(e), this._state = { x: 0, y: 0, isFocused: !1, style: "", width: 0 } } reset() { this._clearCursor(), this._cursorBlinkStateManager.value?.restartBlinkAnimation(), this._handleOptionsChanged() } handleBlur() { this._cursorBlinkStateManager.value?.pause(), this._onRequestRedraw.fire({ start: this._bufferService.buffer.y, end: this._bufferService.buffer.y }) } handleFocus() { this._cursorBlinkStateManager.value?.resume(), this._onRequestRedraw.fire({ start: this._bufferService.buffer.y, end: this._bufferService.buffer.y }) } _handleOptionsChanged() { this._optionsService.rawOptions.cursorBlink ? this._cursorBlinkStateManager.value || (this._cursorBlinkStateManager.value = new s.CursorBlinkStateManager((() => this._render(!0)), this._coreBrowserService)) : this._cursorBlinkStateManager.clear(), this._onRequestRedraw.fire({ start: this._bufferService.buffer.y, end: this._bufferService.buffer.y }) } handleCursorMove() { this._cursorBlinkStateManager.value?.restartBlinkAnimation() } handleGridChanged(e, t) { !this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isPaused ? this._render(!1) : this._cursorBlinkStateManager.value.restartBlinkAnimation() } _render(e) { if (!this._coreService.isCursorInitialized || this._coreService.isCursorHidden) return void this._clearCursor(); const t = this._bufferService.buffer.ybase + this._bufferService.buffer.y, i = t - this._bufferService.buffer.ydisp; if (i < 0 || i >= this._bufferService.rows) return void this._clearCursor(); const s = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1); if (this._bufferService.buffer.lines.get(t).loadCell(s, this._cell), void 0 !== this._cell.content) { if (!this._coreBrowserService.isFocused) { this._clearCursor(), this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css; const e = this._optionsService.rawOptions.cursorStyle, t = this._optionsService.rawOptions.cursorInactiveStyle; return t && "none" !== t && this._cursorRenderers[t](s, i, this._cell), this._ctx.restore(), this._state.x = s, this._state.y = i, this._state.isFocused = !1, this._state.style = e, void (this._state.width = this._cell.getWidth()) } if (!this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isCursorVisible) { if (this._state) { if (this._state.x === s && this._state.y === i && this._state.isFocused === this._coreBrowserService.isFocused && this._state.style === this._optionsService.rawOptions.cursorStyle && this._state.width === this._cell.getWidth()) return; this._clearCursor() } this._ctx.save(), this._cursorRenderers[this._optionsService.rawOptions.cursorStyle || "block"](s, i, this._cell), this._ctx.restore(), this._state.x = s, this._state.y = i, this._state.isFocused = !1, this._state.style = this._optionsService.rawOptions.cursorStyle, this._state.width = this._cell.getWidth() } else this._clearCursor() } } _clearCursor() { this._state && (n.isFirefox || this._coreBrowserService.dpr < 1 ? this._clearAll() : this._clearCells(this._state.x, this._state.y, this._state.width, 1), this._state = { x: 0, y: 0, isFocused: !1, style: "", width: 0 }) } _renderBarCursor(e, t, i) { this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css, this._fillLeftLineAtCell(e, t, this._optionsService.rawOptions.cursorWidth), this._ctx.restore() } _renderBlockCursor(e, t, i) { this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css, this._fillCells(e, t, i.getWidth(), 1), this._ctx.fillStyle = this._themeService.colors.cursorAccent.css, this._fillCharTrueColor(i, e, t), this._ctx.restore() } _renderUnderlineCursor(e, t, i) { this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css, this._fillBottomLineAtCells(e, t), this._ctx.restore() } _renderOutlineCursor(e, t, i) { this._ctx.save(), this._ctx.strokeStyle = this._themeService.colors.cursor.css, this._strokeRectAtCell(e, t, i.getWidth(), 1), this._ctx.restore() } } t.CursorRenderLayer = h }, 574: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.GridCache = void 0, t.GridCache = class { constructor() { this.cache = [] } resize(e, t) { for (let i = 0; i < e; i++) { this.cache.length <= i && this.cache.push([]); for (let e = this.cache[i].length; e < t; e++)this.cache[i].push(void 0); this.cache[i].length = t } this.cache.length = e } clear() { for (let e = 0; e < this.cache.length; e++)for (let t = 0; t < this.cache[e].length; t++)this.cache[e][t] = void 0 } } }, 43: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.LinkRenderLayer = void 0; const s = i(197), r = i(237), n = i(903); class o extends n.BaseRenderLayer { constructor(e, t, i, s, r, n, o, a, h) { super(e, t, "link", i, !0, h, r, n, o, a), this.register(s.onShowLinkUnderline((e => this._handleShowLinkUnderline(e)))), this.register(s.onHideLinkUnderline((e => this._handleHideLinkUnderline(e)))) } resize(e) { super.resize(e), this._state = void 0 } reset() { this._clearCurrentLink() } _clearCurrentLink() { if (this._state) { this._clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1); const e = this._state.y2 - this._state.y1 - 1; e > 0 && this._clearCells(0, this._state.y1 + 1, this._state.cols, e), this._clearCells(0, this._state.y2, this._state.x2, 1), this._state = void 0 } } _handleShowLinkUnderline(e) { if (e.fg === r.INVERTED_DEFAULT_COLOR ? this._ctx.fillStyle = this._themeService.colors.background.css : e.fg && (0, s.is256Color)(e.fg) ? this._ctx.fillStyle = this._themeService.colors.ansi[e.fg].css : this._ctx.fillStyle = this._themeService.colors.foreground.css, e.y1 === e.y2) this._fillBottomLineAtCells(e.x1, e.y1, e.x2 - e.x1); else { this._fillBottomLineAtCells(e.x1, e.y1, e.cols - e.x1); for (let t = e.y1 + 1; t < e.y2; t++)this._fillBottomLineAtCells(0, t, e.cols); this._fillBottomLineAtCells(0, e.y2, e.x2) } this._state = e } _handleHideLinkUnderline(e) { this._clearCurrentLink() } } t.LinkRenderLayer = o }, 630: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.SelectionRenderLayer = void 0; const s = i(903); class r extends s.BaseRenderLayer { constructor(e, t, i, s, r, n, o, a) { super(e, t, "selection", i, !0, a, s, o, n, r), this._clearState() } _clearState() { this._state = { start: void 0, end: void 0, columnSelectMode: void 0, ydisp: void 0 } } resize(e) { super.resize(e), this._selectionModel.selectionStart && this._selectionModel.selectionEnd && (this._clearState(), this._redrawSelection(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode)) } reset() { this._state.start && this._state.end && (this._clearState(), this._clearAll()) } handleBlur() { this.reset(), this._redrawSelection(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode) } handleFocus() { this.reset(), this._redrawSelection(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode) } handleSelectionChanged(e, t, i) { super.handleSelectionChanged(e, t, i), this._redrawSelection(e, t, i) } _redrawSelection(e, t, i) { if (!this._didStateChange(e, t, i, this._bufferService.buffer.ydisp)) return; if (this._clearAll(), !e || !t) return void this._clearState(); const s = e[1] - this._bufferService.buffer.ydisp, r = t[1] - this._bufferService.buffer.ydisp, n = Math.max(s, 0), o = Math.min(r, this._bufferService.rows - 1); if (n >= this._bufferService.rows || o < 0) this._state.ydisp = this._bufferService.buffer.ydisp; else { if (this._ctx.fillStyle = (this._coreBrowserService.isFocused ? this._themeService.colors.selectionBackgroundTransparent : this._themeService.colors.selectionInactiveBackgroundTransparent).css, i) { const i = e[0], s = t[0] - i, r = o - n + 1; this._fillCells(i, n, s, r) } else { const i = s === n ? e[0] : 0, a = n === r ? t[0] : this._bufferService.cols; this._fillCells(i, n, a - i, 1); const h = Math.max(o - n - 1, 0); if (this._fillCells(0, n + 1, this._bufferService.cols, h), n !== o) { const e = r === o ? t[0] : this._bufferService.cols; this._fillCells(0, o, e, 1) } } this._state.start = [e[0], e[1]], this._state.end = [t[0], t[1]], this._state.columnSelectMode = i, this._state.ydisp = this._bufferService.buffer.ydisp } } _didStateChange(e, t, i, s) { return !this._areCoordinatesEqual(e, this._state.start) || !this._areCoordinatesEqual(t, this._state.end) || i !== this._state.columnSelectMode || s !== this._state.ydisp } _areCoordinatesEqual(e, t) { return !(!e || !t) && e[0] === t[0] && e[1] === t[1] } } t.SelectionRenderLayer = r }, 744: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.TextRenderLayer = void 0; const s = i(577), r = i(147), n = i(782), o = i(855), a = i(903), h = i(574); class c extends a.BaseRenderLayer { constructor(e, t, i, s, r, o, a, c, l, d) { super(e, t, "text", i, s, d, r, o, c, l), this._characterJoinerService = a, this._characterWidth = 0, this._characterFont = "", this._characterOverlapCache = {}, this._workCell = new n.CellData, this._state = new h.GridCache, this.register(o.onSpecificOptionChange("allowTransparency", (e => this._setTransparency(e)))) } resize(e) { super.resize(e); const t = this._getFont(!1, !1); this._characterWidth === e.device.char.width && this._characterFont === t || (this._characterWidth = e.device.char.width, this._characterFont = t, this._characterOverlapCache = {}), this._state.clear(), this._state.resize(this._bufferService.cols, this._bufferService.rows) } reset() { this._state.clear(), this._clearAll() } _forEachCell(e, t, i) { for (let r = e; r <= t; r++) { const e = r + this._bufferService.buffer.ydisp, t = this._bufferService.buffer.lines.get(e), n = this._characterJoinerService.getJoinedCharacters(e); for (let e = 0; e < this._bufferService.cols; e++) { t.loadCell(e, this._workCell); let a = this._workCell, h = !1, c = e; if (0 !== a.getWidth()) { if (n.length > 0 && e === n[0][0]) { h = !0; const e = n.shift(); a = new s.JoinedCellData(this._workCell, t.translateToString(!0, e[0], e[1]), e[1] - e[0]), c = e[1] - 1 } !h && this._isOverlapping(a) && c < t.length - 1 && t.getCodePoint(c + 1) === o.NULL_CELL_CODE && (a.content &= -12582913, a.content |= 2 << 22), i(a, e, r), e = c } } } } _drawBackground(e, t) { const i = this._ctx, s = this._bufferService.cols; let n = 0, o = 0, a = null; i.save(), this._forEachCell(e, t, ((e, t, h) => { let c = null; e.isInverse() ? c = e.isFgDefault() ? this._themeService.colors.foreground.css : e.isFgRGB() ? `rgb(${r.AttributeData.toColorRGB(e.getFgColor()).join(",")})` : this._themeService.colors.ansi[e.getFgColor()].css : e.isBgRGB() ? c = `rgb(${r.AttributeData.toColorRGB(e.getBgColor()).join(",")})` : e.isBgPalette() && (c = this._themeService.colors.ansi[e.getBgColor()].css); let l = !1; this._decorationService.forEachDecorationAtCell(t, this._bufferService.buffer.ydisp + h, void 0, (e => { "top" !== e.options.layer && l || (e.backgroundColorRGB && (c = e.backgroundColorRGB.css), l = "top" === e.options.layer) })), null === a && (n = t, o = h), h !== o ? (i.fillStyle = a || "", this._fillCells(n, o, s - n, 1), n = t, o = h) : a !== c && (i.fillStyle = a || "", this._fillCells(n, o, t - n, 1), n = t, o = h), a = c })), null !== a && (i.fillStyle = a, this._fillCells(n, o, s - n, 1)), i.restore() } _drawForeground(e, t) { this._forEachCell(e, t, ((e, t, i) => this._drawChars(e, t, i))) } handleGridChanged(e, t) { 0 !== this._state.cache.length && (this._charAtlas && this._charAtlas.beginFrame(), this._clearCells(0, e, this._bufferService.cols, t - e + 1), this._drawBackground(e, t), this._drawForeground(e, t)) } _isOverlapping(e) { if (1 !== e.getWidth()) return !1; if (e.getCode() < 256) return !1; const t = e.getChars(); if (this._characterOverlapCache.hasOwnProperty(t)) return this._characterOverlapCache[t]; this._ctx.save(), this._ctx.font = this._characterFont; const i = Math.floor(this._ctx.measureText(t).width) > this._characterWidth; return this._ctx.restore(), this._characterOverlapCache[t] = i, i } } t.TextRenderLayer = c }, 274: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CellColorResolver = void 0; const s = i(855), r = i(160), n = i(374); let o, a = 0, h = 0, c = !1, l = !1, d = !1, _ = 0; t.CellColorResolver = class { constructor(e, t, i, s, r, n) { this._terminal = e, this._optionService = t, this._selectionRenderModel = i, this._decorationService = s, this._coreBrowserService = r, this._themeService = n, this.result = { fg: 0, bg: 0, ext: 0 } } resolve(e, t, i, u) { if (this.result.bg = e.bg, this.result.fg = e.fg, this.result.ext = 268435456 & e.bg ? e.extended.ext : 0, h = 0, a = 0, l = !1, c = !1, d = !1, o = this._themeService.colors, _ = 0, e.getCode() !== s.NULL_CELL_CODE && 4 === e.extended.underlineStyle) { const e = Math.max(1, Math.floor(this._optionService.rawOptions.fontSize * this._coreBrowserService.dpr / 15)); _ = t * u % (2 * Math.round(e)) } if (this._decorationService.forEachDecorationAtCell(t, i, "bottom", (e => { e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0) })), d = this._selectionRenderModel.isCellSelected(this._terminal, t, i), d) { if (67108864 & this.result.fg || 50331648 & this.result.bg) { if (67108864 & this.result.fg) switch (50331648 & this.result.fg) { case 16777216: case 33554432: h = this._themeService.colors.ansi[255 & this.result.fg].rgba; break; case 50331648: h = (16777215 & this.result.fg) << 8 | 255; break; default: h = this._themeService.colors.foreground.rgba } else switch (50331648 & this.result.bg) { case 16777216: case 33554432: h = this._themeService.colors.ansi[255 & this.result.bg].rgba; break; case 50331648: h = (16777215 & this.result.bg) << 8 | 255 }h = r.rgba.blend(h, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215 } else h = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215; if (l = !0, o.selectionForeground && (a = o.selectionForeground.rgba >> 8 & 16777215, c = !0), (0, n.treatGlyphAsBackgroundColor)(e.getCode())) { if (67108864 & this.result.fg && !(50331648 & this.result.bg)) a = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215; else { if (67108864 & this.result.fg) switch (50331648 & this.result.bg) { case 16777216: case 33554432: a = this._themeService.colors.ansi[255 & this.result.bg].rgba; break; case 50331648: a = (16777215 & this.result.bg) << 8 | 255 } else switch (50331648 & this.result.fg) { case 16777216: case 33554432: a = this._themeService.colors.ansi[255 & this.result.fg].rgba; break; case 50331648: a = (16777215 & this.result.fg) << 8 | 255; break; default: a = this._themeService.colors.foreground.rgba }a = r.rgba.blend(a, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215 } c = !0 } } this._decorationService.forEachDecorationAtCell(t, i, "top", (e => { e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0) })), l && (h = d ? -16777216 & e.bg & -134217729 | h | 50331648 : -16777216 & e.bg | h | 50331648), c && (a = -16777216 & e.fg & -67108865 | a | 50331648), 67108864 & this.result.fg && (l && !c && (a = 50331648 & this.result.bg ? -134217728 & this.result.fg | 67108863 & this.result.bg : -134217728 & this.result.fg | 16777215 & o.background.rgba >> 8 | 50331648, c = !0), !l && c && (h = 50331648 & this.result.fg ? -67108864 & this.result.bg | 67108863 & this.result.fg : -67108864 & this.result.bg | 16777215 & o.foreground.rgba >> 8 | 50331648, l = !0)), o = void 0, this.result.bg = l ? h : this.result.bg, this.result.fg = c ? a : this.result.fg, this.result.ext &= 536870911, this.result.ext |= _ << 29 & 3758096384 } } }, 627: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.removeTerminalFromCache = t.acquireTextureAtlas = void 0; const s = i(509), r = i(197), n = []; t.acquireTextureAtlas = function (e, t, i, o, a, h, c, l) { const d = (0, r.generateConfig)(o, a, h, c, t, i, l); for (let t = 0; t < n.length; t++) { const i = n[t], s = i.ownedBy.indexOf(e); if (s >= 0) { if ((0, r.configEquals)(i.config, d)) return i.atlas; 1 === i.ownedBy.length ? (i.atlas.dispose(), n.splice(t, 1)) : i.ownedBy.splice(s, 1); break } } for (let t = 0; t < n.length; t++) { const i = n[t]; if ((0, r.configEquals)(i.config, d)) return i.ownedBy.push(e), i.atlas } const _ = e._core, u = { atlas: new s.TextureAtlas(document, d, _.unicodeService), config: d, ownedBy: [e] }; return n.push(u), u.atlas }, t.removeTerminalFromCache = function (e) { for (let t = 0; t < n.length; t++) { const i = n[t].ownedBy.indexOf(e); if (-1 !== i) { 1 === n[t].ownedBy.length ? (n[t].atlas.dispose(), n.splice(t, 1)) : n[t].ownedBy.splice(i, 1); break } } } }, 197: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.is256Color = t.configEquals = t.generateConfig = void 0; const s = i(160); t.generateConfig = function (e, t, i, r, n, o, a) { const h = { foreground: o.foreground, background: o.background, cursor: s.NULL_COLOR, cursorAccent: s.NULL_COLOR, selectionForeground: s.NULL_COLOR, selectionBackgroundTransparent: s.NULL_COLOR, selectionBackgroundOpaque: s.NULL_COLOR, selectionInactiveBackgroundTransparent: s.NULL_COLOR, selectionInactiveBackgroundOpaque: s.NULL_COLOR, ansi: o.ansi.slice(), contrastCache: o.contrastCache, halfContrastCache: o.halfContrastCache }; return { customGlyphs: n.customGlyphs, devicePixelRatio: a, letterSpacing: n.letterSpacing, lineHeight: n.lineHeight, deviceCellWidth: e, deviceCellHeight: t, deviceCharWidth: i, deviceCharHeight: r, fontFamily: n.fontFamily, fontSize: n.fontSize, fontWeight: n.fontWeight, fontWeightBold: n.fontWeightBold, allowTransparency: n.allowTransparency, drawBoldTextInBrightColors: n.drawBoldTextInBrightColors, minimumContrastRatio: n.minimumContrastRatio, colors: h } }, t.configEquals = function (e, t) { for (let i = 0; i < e.colors.ansi.length; i++)if (e.colors.ansi[i].rgba !== t.colors.ansi[i].rgba) return !1; return e.devicePixelRatio === t.devicePixelRatio && e.customGlyphs === t.customGlyphs && e.lineHeight === t.lineHeight && e.letterSpacing === t.letterSpacing && e.fontFamily === t.fontFamily && e.fontSize === t.fontSize && e.fontWeight === t.fontWeight && e.fontWeightBold === t.fontWeightBold && e.allowTransparency === t.allowTransparency && e.deviceCharWidth === t.deviceCharWidth && e.deviceCharHeight === t.deviceCharHeight && e.drawBoldTextInBrightColors === t.drawBoldTextInBrightColors && e.minimumContrastRatio === t.minimumContrastRatio && e.colors.foreground.rgba === t.colors.foreground.rgba && e.colors.background.rgba === t.colors.background.rgba }, t.is256Color = function (e) { return 16777216 == (50331648 & e) || 33554432 == (50331648 & e) } }, 237: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.TEXT_BASELINE = t.DIM_OPACITY = t.INVERTED_DEFAULT_COLOR = void 0; const s = i(399); t.INVERTED_DEFAULT_COLOR = 257, t.DIM_OPACITY = .5, t.TEXT_BASELINE = s.isFirefox || s.isLegacyEdge ? "bottom" : "ideographic" }, 457: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CursorBlinkStateManager = void 0, t.CursorBlinkStateManager = class { constructor(e, t) { this._renderCallback = e, this._coreBrowserService = t, this.isCursorVisible = !0, this._coreBrowserService.isFocused && this._restartInterval() } get isPaused() { return !(this._blinkStartTimeout || this._blinkInterval) } dispose() { this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0) } restartBlinkAnimation() { this.isPaused || (this._animationTimeRestarted = Date.now(), this.isCursorVisible = !0, this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { this._renderCallback(), this._animationFrame = void 0 })))) } _restartInterval(e = 600) { this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout = this._coreBrowserService.window.setTimeout((() => { if (this._animationTimeRestarted) { const e = 600 - (Date.now() - this._animationTimeRestarted); if (this._animationTimeRestarted = void 0, e > 0) return void this._restartInterval(e) } this.isCursorVisible = !1, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { this._renderCallback(), this._animationFrame = void 0 })), this._blinkInterval = this._coreBrowserService.window.setInterval((() => { if (this._animationTimeRestarted) { const e = 600 - (Date.now() - this._animationTimeRestarted); return this._animationTimeRestarted = void 0, void this._restartInterval(e) } this.isCursorVisible = !this.isCursorVisible, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { this._renderCallback(), this._animationFrame = void 0 })) }), 600) }), e) } pause() { this.isCursorVisible = !0, this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0) } resume() { this.pause(), this._animationTimeRestarted = void 0, this._restartInterval(), this.restartBlinkAnimation() } } }, 860: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.tryDrawCustomChar = t.powerlineDefinitions = t.boxDrawingDefinitions = t.blockElementDefinitions = void 0; const s = i(374); t.blockElementDefinitions = { "▀": [{ x: 0, y: 0, w: 8, h: 4 }], "▁": [{ x: 0, y: 7, w: 8, h: 1 }], "▂": [{ x: 0, y: 6, w: 8, h: 2 }], "▃": [{ x: 0, y: 5, w: 8, h: 3 }], "▄": [{ x: 0, y: 4, w: 8, h: 4 }], "▅": [{ x: 0, y: 3, w: 8, h: 5 }], "▆": [{ x: 0, y: 2, w: 8, h: 6 }], "▇": [{ x: 0, y: 1, w: 8, h: 7 }], "█": [{ x: 0, y: 0, w: 8, h: 8 }], "▉": [{ x: 0, y: 0, w: 7, h: 8 }], "▊": [{ x: 0, y: 0, w: 6, h: 8 }], "▋": [{ x: 0, y: 0, w: 5, h: 8 }], "▌": [{ x: 0, y: 0, w: 4, h: 8 }], "▍": [{ x: 0, y: 0, w: 3, h: 8 }], "▎": [{ x: 0, y: 0, w: 2, h: 8 }], "▏": [{ x: 0, y: 0, w: 1, h: 8 }], "▐": [{ x: 4, y: 0, w: 4, h: 8 }], "▔": [{ x: 0, y: 0, w: 8, h: 1 }], "▕": [{ x: 7, y: 0, w: 1, h: 8 }], "▖": [{ x: 0, y: 4, w: 4, h: 4 }], "▗": [{ x: 4, y: 4, w: 4, h: 4 }], "▘": [{ x: 0, y: 0, w: 4, h: 4 }], "▙": [{ x: 0, y: 0, w: 4, h: 8 }, { x: 0, y: 4, w: 8, h: 4 }], "▚": [{ x: 0, y: 0, w: 4, h: 4 }, { x: 4, y: 4, w: 4, h: 4 }], "▛": [{ x: 0, y: 0, w: 4, h: 8 }, { x: 4, y: 0, w: 4, h: 4 }], "▜": [{ x: 0, y: 0, w: 8, h: 4 }, { x: 4, y: 0, w: 4, h: 8 }], "▝": [{ x: 4, y: 0, w: 4, h: 4 }], "▞": [{ x: 4, y: 0, w: 4, h: 4 }, { x: 0, y: 4, w: 4, h: 4 }], "▟": [{ x: 4, y: 0, w: 4, h: 8 }, { x: 0, y: 4, w: 8, h: 4 }], "🭰": [{ x: 1, y: 0, w: 1, h: 8 }], "🭱": [{ x: 2, y: 0, w: 1, h: 8 }], "🭲": [{ x: 3, y: 0, w: 1, h: 8 }], "🭳": [{ x: 4, y: 0, w: 1, h: 8 }], "🭴": [{ x: 5, y: 0, w: 1, h: 8 }], "🭵": [{ x: 6, y: 0, w: 1, h: 8 }], "🭶": [{ x: 0, y: 1, w: 8, h: 1 }], "🭷": [{ x: 0, y: 2, w: 8, h: 1 }], "🭸": [{ x: 0, y: 3, w: 8, h: 1 }], "🭹": [{ x: 0, y: 4, w: 8, h: 1 }], "🭺": [{ x: 0, y: 5, w: 8, h: 1 }], "🭻": [{ x: 0, y: 6, w: 8, h: 1 }], "🭼": [{ x: 0, y: 0, w: 1, h: 8 }, { x: 0, y: 7, w: 8, h: 1 }], "🭽": [{ x: 0, y: 0, w: 1, h: 8 }, { x: 0, y: 0, w: 8, h: 1 }], "🭾": [{ x: 7, y: 0, w: 1, h: 8 }, { x: 0, y: 0, w: 8, h: 1 }], "🭿": [{ x: 7, y: 0, w: 1, h: 8 }, { x: 0, y: 7, w: 8, h: 1 }], "🮀": [{ x: 0, y: 0, w: 8, h: 1 }, { x: 0, y: 7, w: 8, h: 1 }], "🮁": [{ x: 0, y: 0, w: 8, h: 1 }, { x: 0, y: 2, w: 8, h: 1 }, { x: 0, y: 4, w: 8, h: 1 }, { x: 0, y: 7, w: 8, h: 1 }], "🮂": [{ x: 0, y: 0, w: 8, h: 2 }], "🮃": [{ x: 0, y: 0, w: 8, h: 3 }], "🮄": [{ x: 0, y: 0, w: 8, h: 5 }], "🮅": [{ x: 0, y: 0, w: 8, h: 6 }], "🮆": [{ x: 0, y: 0, w: 8, h: 7 }], "🮇": [{ x: 6, y: 0, w: 2, h: 8 }], "🮈": [{ x: 5, y: 0, w: 3, h: 8 }], "🮉": [{ x: 3, y: 0, w: 5, h: 8 }], "🮊": [{ x: 2, y: 0, w: 6, h: 8 }], "🮋": [{ x: 1, y: 0, w: 7, h: 8 }], "🮕": [{ x: 0, y: 0, w: 2, h: 2 }, { x: 4, y: 0, w: 2, h: 2 }, { x: 2, y: 2, w: 2, h: 2 }, { x: 6, y: 2, w: 2, h: 2 }, { x: 0, y: 4, w: 2, h: 2 }, { x: 4, y: 4, w: 2, h: 2 }, { x: 2, y: 6, w: 2, h: 2 }, { x: 6, y: 6, w: 2, h: 2 }], "🮖": [{ x: 2, y: 0, w: 2, h: 2 }, { x: 6, y: 0, w: 2, h: 2 }, { x: 0, y: 2, w: 2, h: 2 }, { x: 4, y: 2, w: 2, h: 2 }, { x: 2, y: 4, w: 2, h: 2 }, { x: 6, y: 4, w: 2, h: 2 }, { x: 0, y: 6, w: 2, h: 2 }, { x: 4, y: 6, w: 2, h: 2 }], "🮗": [{ x: 0, y: 2, w: 8, h: 2 }, { x: 0, y: 6, w: 8, h: 2 }] }; const r = { "░": [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0]], "▒": [[1, 0], [0, 0], [0, 1], [0, 0]], "▓": [[0, 1], [1, 1], [1, 0], [1, 1]] }; t.boxDrawingDefinitions = { "─": { 1: "M0,.5 L1,.5" }, "━": { 3: "M0,.5 L1,.5" }, "│": { 1: "M.5,0 L.5,1" }, "┃": { 3: "M.5,0 L.5,1" }, "┌": { 1: "M0.5,1 L.5,.5 L1,.5" }, "┏": { 3: "M0.5,1 L.5,.5 L1,.5" }, "┐": { 1: "M0,.5 L.5,.5 L.5,1" }, "┓": { 3: "M0,.5 L.5,.5 L.5,1" }, "└": { 1: "M.5,0 L.5,.5 L1,.5" }, "┗": { 3: "M.5,0 L.5,.5 L1,.5" }, "┘": { 1: "M.5,0 L.5,.5 L0,.5" }, "┛": { 3: "M.5,0 L.5,.5 L0,.5" }, "├": { 1: "M.5,0 L.5,1 M.5,.5 L1,.5" }, "┣": { 3: "M.5,0 L.5,1 M.5,.5 L1,.5" }, "┤": { 1: "M.5,0 L.5,1 M.5,.5 L0,.5" }, "┫": { 3: "M.5,0 L.5,1 M.5,.5 L0,.5" }, "┬": { 1: "M0,.5 L1,.5 M.5,.5 L.5,1" }, "┳": { 3: "M0,.5 L1,.5 M.5,.5 L.5,1" }, "┴": { 1: "M0,.5 L1,.5 M.5,.5 L.5,0" }, "┻": { 3: "M0,.5 L1,.5 M.5,.5 L.5,0" }, "┼": { 1: "M0,.5 L1,.5 M.5,0 L.5,1" }, "╋": { 3: "M0,.5 L1,.5 M.5,0 L.5,1" }, "╴": { 1: "M.5,.5 L0,.5" }, "╸": { 3: "M.5,.5 L0,.5" }, "╵": { 1: "M.5,.5 L.5,0" }, "╹": { 3: "M.5,.5 L.5,0" }, "╶": { 1: "M.5,.5 L1,.5" }, "╺": { 3: "M.5,.5 L1,.5" }, "╷": { 1: "M.5,.5 L.5,1" }, "╻": { 3: "M.5,.5 L.5,1" }, "═": { 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` }, "║": { 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` }, "╒": { 1: (e, t) => `M.5,1 L.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}` }, "╓": { 1: (e, t) => `M${.5 - e},1 L${.5 - e},.5 L1,.5 M${.5 + e},.5 L${.5 + e},1` }, "╔": { 1: (e, t) => `M1,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1` }, "╕": { 1: (e, t) => `M0,${.5 - t} L.5,${.5 - t} L.5,1 M0,${.5 + t} L.5,${.5 + t}` }, "╖": { 1: (e, t) => `M${.5 + e},1 L${.5 + e},.5 L0,.5 M${.5 - e},.5 L${.5 - e},1` }, "╗": { 1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},1` }, "╘": { 1: (e, t) => `M.5,0 L.5,${.5 + t} L1,${.5 + t} M.5,${.5 - t} L1,${.5 - t}` }, "╙": { 1: (e, t) => `M1,.5 L${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0` }, "╚": { 1: (e, t) => `M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0 M1,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},0` }, "╛": { 1: (e, t) => `M0,${.5 + t} L.5,${.5 + t} L.5,0 M0,${.5 - t} L.5,${.5 - t}` }, "╜": { 1: (e, t) => `M0,.5 L${.5 + e},.5 L${.5 + e},0 M${.5 - e},.5 L${.5 - e},0` }, "╝": { 1: (e, t) => `M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M0,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},0` }, "╞": { 1: (e, t) => `M.5,0 L.5,1 M.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}` }, "╟": { 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1 M${.5 + e},.5 L1,.5` }, "╠": { 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` }, "╡": { 1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L.5,${.5 - t} M0,${.5 + t} L.5,${.5 + t}` }, "╢": { 1: (e, t) => `M0,.5 L${.5 - e},.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` }, "╣": { 1: (e, t) => `M${.5 + e},0 L${.5 + e},1 M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0` }, "╤": { 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t} M.5,${.5 + t} L.5,1` }, "╥": { 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},1 M${.5 + e},.5 L${.5 + e},1` }, "╦": { 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1` }, "╧": { 1: (e, t) => `M.5,0 L.5,${.5 - t} M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` }, "╨": { 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0` }, "╩": { 1: (e, t) => `M0,${.5 + t} L1,${.5 + t} M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` }, "╪": { 1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` }, "╫": { 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` }, "╬": { 1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` }, "╱": { 1: "M1,0 L0,1" }, "╲": { 1: "M0,0 L1,1" }, "╳": { 1: "M1,0 L0,1 M0,0 L1,1" }, "╼": { 1: "M.5,.5 L0,.5", 3: "M.5,.5 L1,.5" }, "╽": { 1: "M.5,.5 L.5,0", 3: "M.5,.5 L.5,1" }, "╾": { 1: "M.5,.5 L1,.5", 3: "M.5,.5 L0,.5" }, "╿": { 1: "M.5,.5 L.5,1", 3: "M.5,.5 L.5,0" }, "┍": { 1: "M.5,.5 L.5,1", 3: "M.5,.5 L1,.5" }, "┎": { 1: "M.5,.5 L1,.5", 3: "M.5,.5 L.5,1" }, "┑": { 1: "M.5,.5 L.5,1", 3: "M.5,.5 L0,.5" }, "┒": { 1: "M.5,.5 L0,.5", 3: "M.5,.5 L.5,1" }, "┕": { 1: "M.5,.5 L.5,0", 3: "M.5,.5 L1,.5" }, "┖": { 1: "M.5,.5 L1,.5", 3: "M.5,.5 L.5,0" }, "┙": { 1: "M.5,.5 L.5,0", 3: "M.5,.5 L0,.5" }, "┚": { 1: "M.5,.5 L0,.5", 3: "M.5,.5 L.5,0" }, "┝": { 1: "M.5,0 L.5,1", 3: "M.5,.5 L1,.5" }, "┞": { 1: "M0.5,1 L.5,.5 L1,.5", 3: "M.5,.5 L.5,0" }, "┟": { 1: "M.5,0 L.5,.5 L1,.5", 3: "M.5,.5 L.5,1" }, "┠": { 1: "M.5,.5 L1,.5", 3: "M.5,0 L.5,1" }, "┡": { 1: "M.5,.5 L.5,1", 3: "M.5,0 L.5,.5 L1,.5" }, "┢": { 1: "M.5,.5 L.5,0", 3: "M0.5,1 L.5,.5 L1,.5" }, "┥": { 1: "M.5,0 L.5,1", 3: "M.5,.5 L0,.5" }, "┦": { 1: "M0,.5 L.5,.5 L.5,1", 3: "M.5,.5 L.5,0" }, "┧": { 1: "M.5,0 L.5,.5 L0,.5", 3: "M.5,.5 L.5,1" }, "┨": { 1: "M.5,.5 L0,.5", 3: "M.5,0 L.5,1" }, "┩": { 1: "M.5,.5 L.5,1", 3: "M.5,0 L.5,.5 L0,.5" }, "┪": { 1: "M.5,.5 L.5,0", 3: "M0,.5 L.5,.5 L.5,1" }, "┭": { 1: "M0.5,1 L.5,.5 L1,.5", 3: "M.5,.5 L0,.5" }, "┮": { 1: "M0,.5 L.5,.5 L.5,1", 3: "M.5,.5 L1,.5" }, "┯": { 1: "M.5,.5 L.5,1", 3: "M0,.5 L1,.5" }, "┰": { 1: "M0,.5 L1,.5", 3: "M.5,.5 L.5,1" }, "┱": { 1: "M.5,.5 L1,.5", 3: "M0,.5 L.5,.5 L.5,1" }, "┲": { 1: "M.5,.5 L0,.5", 3: "M0.5,1 L.5,.5 L1,.5" }, "┵": { 1: "M.5,0 L.5,.5 L1,.5", 3: "M.5,.5 L0,.5" }, "┶": { 1: "M.5,0 L.5,.5 L0,.5", 3: "M.5,.5 L1,.5" }, "┷": { 1: "M.5,.5 L.5,0", 3: "M0,.5 L1,.5" }, "┸": { 1: "M0,.5 L1,.5", 3: "M.5,.5 L.5,0" }, "┹": { 1: "M.5,.5 L1,.5", 3: "M.5,0 L.5,.5 L0,.5" }, "┺": { 1: "M.5,.5 L0,.5", 3: "M.5,0 L.5,.5 L1,.5" }, "┽": { 1: "M.5,0 L.5,1 M.5,.5 L1,.5", 3: "M.5,.5 L0,.5" }, "┾": { 1: "M.5,0 L.5,1 M.5,.5 L0,.5", 3: "M.5,.5 L1,.5" }, "┿": { 1: "M.5,0 L.5,1", 3: "M0,.5 L1,.5" }, "╀": { 1: "M0,.5 L1,.5 M.5,.5 L.5,1", 3: "M.5,.5 L.5,0" }, "╁": { 1: "M.5,.5 L.5,0 M0,.5 L1,.5", 3: "M.5,.5 L.5,1" }, "╂": { 1: "M0,.5 L1,.5", 3: "M.5,0 L.5,1" }, "╃": { 1: "M0.5,1 L.5,.5 L1,.5", 3: "M.5,0 L.5,.5 L0,.5" }, "╄": { 1: "M0,.5 L.5,.5 L.5,1", 3: "M.5,0 L.5,.5 L1,.5" }, "╅": { 1: "M.5,0 L.5,.5 L1,.5", 3: "M0,.5 L.5,.5 L.5,1" }, "╆": { 1: "M.5,0 L.5,.5 L0,.5", 3: "M0.5,1 L.5,.5 L1,.5" }, "╇": { 1: "M.5,.5 L.5,1", 3: "M.5,.5 L.5,0 M0,.5 L1,.5" }, "╈": { 1: "M.5,.5 L.5,0", 3: "M0,.5 L1,.5 M.5,.5 L.5,1" }, "╉": { 1: "M.5,.5 L1,.5", 3: "M.5,0 L.5,1 M.5,.5 L0,.5" }, "╊": { 1: "M.5,.5 L0,.5", 3: "M.5,0 L.5,1 M.5,.5 L1,.5" }, "╌": { 1: "M.1,.5 L.4,.5 M.6,.5 L.9,.5" }, "╍": { 3: "M.1,.5 L.4,.5 M.6,.5 L.9,.5" }, "┄": { 1: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5" }, "┅": { 3: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5" }, "┈": { 1: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5" }, "┉": { 3: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5" }, "╎": { 1: "M.5,.1 L.5,.4 M.5,.6 L.5,.9" }, "╏": { 3: "M.5,.1 L.5,.4 M.5,.6 L.5,.9" }, "┆": { 1: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333" }, "┇": { 3: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333" }, "┊": { 1: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95" }, "┋": { 3: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95" }, "╭": { 1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,1,.5` }, "╮": { 1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,0,.5` }, "╯": { 1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,0,.5` }, "╰": { 1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,1,.5` } }, t.powerlineDefinitions = { "": { d: "M0,0 L1,.5 L0,1", type: 0, rightPadding: 2 }, "": { d: "M-1,-.5 L1,.5 L-1,1.5", type: 1, leftPadding: 1, rightPadding: 1 }, "": { d: "M1,0 L0,.5 L1,1", type: 0, leftPadding: 2 }, "": { d: "M2,-.5 L0,.5 L2,1.5", type: 1, leftPadding: 1, rightPadding: 1 }, "": { d: "M0,0 L0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0", type: 0, rightPadding: 1 }, "": { d: "M.2,1 C.422,1,.8,.826,.78,.5 C.8,.174,0.422,0,.2,0", type: 1, rightPadding: 1 }, "": { d: "M1,0 L1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0", type: 0, leftPadding: 1 }, "": { d: "M.8,1 C0.578,1,0.2,.826,.22,.5 C0.2,0.174,0.578,0,0.8,0", type: 1, leftPadding: 1 }, "": { d: "M-.5,-.5 L1.5,1.5 L-.5,1.5", type: 0 }, "": { d: "M-.5,-.5 L1.5,1.5", type: 1, leftPadding: 1, rightPadding: 1 }, "": { d: "M1.5,-.5 L-.5,1.5 L1.5,1.5", type: 0 }, "": { d: "M1.5,-.5 L-.5,1.5 L-.5,-.5", type: 0 }, "": { d: "M1.5,-.5 L-.5,1.5", type: 1, leftPadding: 1, rightPadding: 1 }, "": { d: "M-.5,-.5 L1.5,1.5 L1.5,-.5", type: 0 } }, t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.tryDrawCustomChar = function (e, i, o, c, l, d, _, u) { const f = t.blockElementDefinitions[i]; if (f) return function (e, t, i, s, r, n) { for (let o = 0; o < t.length; o++) { const a = t[o], h = r / 8, c = n / 8; e.fillRect(i + a.x * h, s + a.y * c, a.w * h, a.h * c) } }(e, f, o, c, l, d), !0; const v = r[i]; if (v) return function (e, t, i, r, o, a) { let h = n.get(t); h || (h = new Map, n.set(t, h)); const c = e.fillStyle; if ("string" != typeof c) throw new Error(`Unexpected fillStyle type "${c}"`); let l = h.get(c); if (!l) { const i = t[0].length, r = t.length, n = e.canvas.ownerDocument.createElement("canvas"); n.width = i, n.height = r; const o = (0, s.throwIfFalsy)(n.getContext("2d")), a = new ImageData(i, r); let d, _, u, f; if (c.startsWith("#")) d = parseInt(c.slice(1, 3), 16), _ = parseInt(c.slice(3, 5), 16), u = parseInt(c.slice(5, 7), 16), f = c.length > 7 && parseInt(c.slice(7, 9), 16) || 1; else { if (!c.startsWith("rgba")) throw new Error(`Unexpected fillStyle color format "${c}" when drawing pattern glyph`);[d, _, u, f] = c.substring(5, c.length - 1).split(",").map((e => parseFloat(e))) } for (let e = 0; e < r; e++)for (let s = 0; s < i; s++)a.data[4 * (e * i + s)] = d, a.data[4 * (e * i + s) + 1] = _, a.data[4 * (e * i + s) + 2] = u, a.data[4 * (e * i + s) + 3] = t[e][s] * (255 * f); o.putImageData(a, 0, 0), l = (0, s.throwIfFalsy)(e.createPattern(n, null)), h.set(c, l) } e.fillStyle = l, e.fillRect(i, r, o, a) }(e, v, o, c, l, d), !0; const g = t.boxDrawingDefinitions[i]; if (g) return function (e, t, i, s, r, n, o) { e.strokeStyle = e.fillStyle; for (const [c, l] of Object.entries(t)) { let t; e.beginPath(), e.lineWidth = o * Number.parseInt(c), t = "function" == typeof l ? l(.15, .15 / n * r) : l; for (const c of t.split(" ")) { const t = c[0], l = a[t]; if (!l) { console.error(`Could not find drawing instructions for "${t}"`); continue } const d = c.substring(1).split(","); d[0] && d[1] && l(e, h(d, r, n, i, s, !0, o)) } e.stroke(), e.closePath() } }(e, g, o, c, l, d, u), !0; const p = t.powerlineDefinitions[i]; return !!p && (function (e, t, i, s, r, n, o, c) { const l = new Path2D; l.rect(i, s, r, n), e.clip(l), e.beginPath(); const d = o / 12; e.lineWidth = c * d; for (const o of t.d.split(" ")) { const l = o[0], _ = a[l]; if (!_) { console.error(`Could not find drawing instructions for "${l}"`); continue } const u = o.substring(1).split(","); u[0] && u[1] && _(e, h(u, r, n, i, s, !1, c, (t.leftPadding ?? 0) * (d / 2), (t.rightPadding ?? 0) * (d / 2))) } 1 === t.type ? (e.strokeStyle = e.fillStyle, e.stroke()) : e.fill(), e.closePath() }(e, p, o, c, l, d, _, u), !0) }; const n = new Map; function o(e, t, i = 0) { return Math.max(Math.min(e, t), i) } const a = { C: (e, t) => e.bezierCurveTo(t[0], t[1], t[2], t[3], t[4], t[5]), L: (e, t) => e.lineTo(t[0], t[1]), M: (e, t) => e.moveTo(t[0], t[1]) }; function h(e, t, i, s, r, n, a, h = 0, c = 0) { const l = e.map((e => parseFloat(e) || parseInt(e))); if (l.length < 2) throw new Error("Too few arguments for instruction"); for (let e = 0; e < l.length; e += 2)l[e] *= t - h * a - c * a, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, t, 0)), l[e] += s + h * a; for (let e = 1; e < l.length; e += 2)l[e] *= i, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, i, 0)), l[e] += r; return l } }, 56: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.observeDevicePixelDimensions = void 0; const s = i(859); t.observeDevicePixelDimensions = function (e, t, i) { let r = new t.ResizeObserver((t => { const s = t.find((t => t.target === e)); if (!s) return; if (!("devicePixelContentBoxSize" in s)) return r?.disconnect(), void (r = void 0); const n = s.devicePixelContentBoxSize[0].inlineSize, o = s.devicePixelContentBoxSize[0].blockSize; n > 0 && o > 0 && i(n, o) })); try { r.observe(e, { box: ["device-pixel-content-box"] }) } catch { r.disconnect(), r = void 0 } return (0, s.toDisposable)((() => r?.disconnect())) } }, 374: (e, t) => { function i(e) { return 57508 <= e && e <= 57558 } function s(e) { return e >= 128512 && e <= 128591 || e >= 127744 && e <= 128511 || e >= 128640 && e <= 128767 || e >= 9728 && e <= 9983 || e >= 9984 && e <= 10175 || e >= 65024 && e <= 65039 || e >= 129280 && e <= 129535 || e >= 127462 && e <= 127487 } Object.defineProperty(t, "__esModule", { value: !0 }), t.computeNextVariantOffset = t.createRenderDimensions = t.treatGlyphAsBackgroundColor = t.allowRescaling = t.isEmoji = t.isRestrictedPowerlineGlyph = t.isPowerlineGlyph = t.throwIfFalsy = void 0, t.throwIfFalsy = function (e) { if (!e) throw new Error("value must not be falsy"); return e }, t.isPowerlineGlyph = i, t.isRestrictedPowerlineGlyph = function (e) { return 57520 <= e && e <= 57527 }, t.isEmoji = s, t.allowRescaling = function (e, t, r, n) { return 1 === t && r > Math.ceil(1.5 * n) && void 0 !== e && e > 255 && !s(e) && !i(e) && !function (e) { return 57344 <= e && e <= 63743 }(e) }, t.treatGlyphAsBackgroundColor = function (e) { return i(e) || function (e) { return 9472 <= e && e <= 9631 }(e) }, t.createRenderDimensions = function () { return { css: { canvas: { width: 0, height: 0 }, cell: { width: 0, height: 0 } }, device: { canvas: { width: 0, height: 0 }, cell: { width: 0, height: 0 }, char: { width: 0, height: 0, left: 0, top: 0 } } } }, t.computeNextVariantOffset = function (e, t, i = 0) { return (e - (2 * Math.round(t) - i)) % (2 * Math.round(t)) } }, 296: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.createSelectionRenderModel = void 0; class i { constructor() { this.clear() } clear() { this.hasSelection = !1, this.columnSelectMode = !1, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0 } update(e, t, i, s = !1) { if (this.selectionStart = t, this.selectionEnd = i, !t || !i || t[0] === i[0] && t[1] === i[1]) return void this.clear(); const r = e.buffers.active.ydisp, n = t[1] - r, o = i[1] - r, a = Math.max(n, 0), h = Math.min(o, e.rows - 1); a >= e.rows || h < 0 ? this.clear() : (this.hasSelection = !0, this.columnSelectMode = s, this.viewportStartRow = n, this.viewportEndRow = o, this.viewportCappedStartRow = a, this.viewportCappedEndRow = h, this.startCol = t[0], this.endCol = i[0]) } isCellSelected(e, t, i) { return !!this.hasSelection && (i -= e.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? t >= this.startCol && i >= this.viewportCappedStartRow && t < this.endCol && i <= this.viewportCappedEndRow : t < this.startCol && i >= this.viewportCappedStartRow && t >= this.endCol && i <= this.viewportCappedEndRow : i > this.viewportStartRow && i < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportEndRow && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol) } } t.createSelectionRenderModel = function () { return new i } }, 509: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.TextureAtlas = void 0; const s = i(237), r = i(860), n = i(374), o = i(160), a = i(345), h = i(485), c = i(385), l = i(147), d = i(855), _ = { texturePage: 0, texturePosition: { x: 0, y: 0 }, texturePositionClipSpace: { x: 0, y: 0 }, offset: { x: 0, y: 0 }, size: { x: 0, y: 0 }, sizeClipSpace: { x: 0, y: 0 } }; let u; class f { get pages() { return this._pages } constructor(e, t, i) { this._document = e, this._config = t, this._unicodeService = i, this._didWarmUp = !1, this._cacheMap = new h.FourKeyMap, this._cacheMapCombined = new h.FourKeyMap, this._pages = [], this._activePages = [], this._workBoundingBox = { top: 0, left: 0, bottom: 0, right: 0 }, this._workAttributeData = new l.AttributeData, this._textureSize = 512, this._onAddTextureAtlasCanvas = new a.EventEmitter, this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = new a.EventEmitter, this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._requestClearModel = !1, this._createNewPage(), this._tmpCanvas = p(e, 4 * this._config.deviceCellWidth + 4, this._config.deviceCellHeight + 4), this._tmpCtx = (0, n.throwIfFalsy)(this._tmpCanvas.getContext("2d", { alpha: this._config.allowTransparency, willReadFrequently: !0 })) } dispose() { for (const e of this.pages) e.canvas.remove(); this._onAddTextureAtlasCanvas.dispose() } warmUp() { this._didWarmUp || (this._doWarmUp(), this._didWarmUp = !0) } _doWarmUp() { const e = new c.IdleTaskQueue; for (let t = 33; t < 126; t++)e.enqueue((() => { if (!this._cacheMap.get(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT)) { const e = this._drawToCache(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT); this._cacheMap.set(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT, e) } })) } beginFrame() { return this._requestClearModel } clearTexture() { if (0 !== this._pages[0].currentRow.x || 0 !== this._pages[0].currentRow.y) { for (const e of this._pages) e.clear(); this._cacheMap.clear(), this._cacheMapCombined.clear(), this._didWarmUp = !1 } } _createNewPage() { if (f.maxAtlasPages && this._pages.length >= Math.max(4, f.maxAtlasPages)) { const e = this._pages.filter((e => 2 * e.canvas.width <= (f.maxTextureSize || 4096))).sort(((e, t) => t.canvas.width !== e.canvas.width ? t.canvas.width - e.canvas.width : t.percentageUsed - e.percentageUsed)); let t = -1, i = 0; for (let s = 0; s < e.length; s++)if (e[s].canvas.width !== i) t = s, i = e[s].canvas.width; else if (s - t == 3) break; const s = e.slice(t, t + 4), r = s.map((e => e.glyphs[0].texturePage)).sort(((e, t) => e > t ? 1 : -1)), n = this.pages.length - s.length, o = this._mergePages(s, n); o.version++; for (let e = r.length - 1; e >= 0; e--)this._deletePage(r[e]); this.pages.push(o), this._requestClearModel = !0, this._onAddTextureAtlasCanvas.fire(o.canvas) } const e = new v(this._document, this._textureSize); return this._pages.push(e), this._activePages.push(e), this._onAddTextureAtlasCanvas.fire(e.canvas), e } _mergePages(e, t) { const i = 2 * e[0].canvas.width, s = new v(this._document, i, e); for (const [r, n] of e.entries()) { const e = r * n.canvas.width % i, o = Math.floor(r / 2) * n.canvas.height; s.ctx.drawImage(n.canvas, e, o); for (const s of n.glyphs) s.texturePage = t, s.sizeClipSpace.x = s.size.x / i, s.sizeClipSpace.y = s.size.y / i, s.texturePosition.x += e, s.texturePosition.y += o, s.texturePositionClipSpace.x = s.texturePosition.x / i, s.texturePositionClipSpace.y = s.texturePosition.y / i; this._onRemoveTextureAtlasCanvas.fire(n.canvas); const a = this._activePages.indexOf(n); -1 !== a && this._activePages.splice(a, 1) } return s } _deletePage(e) { this._pages.splice(e, 1); for (let t = e; t < this._pages.length; t++) { const e = this._pages[t]; for (const t of e.glyphs) t.texturePage--; e.version++ } } getRasterizedGlyphCombinedChar(e, t, i, s, r) { return this._getFromCacheMap(this._cacheMapCombined, e, t, i, s, r) } getRasterizedGlyph(e, t, i, s, r) { return this._getFromCacheMap(this._cacheMap, e, t, i, s, r) } _getFromCacheMap(e, t, i, s, r, n = !1) { return u = e.get(t, i, s, r), u || (u = this._drawToCache(t, i, s, r, n), e.set(t, i, s, r, u)), u } _getColorFromAnsiIndex(e) { if (e >= this._config.colors.ansi.length) throw new Error("No color found for idx " + e); return this._config.colors.ansi[e] } _getBackgroundColor(e, t, i, s) { if (this._config.allowTransparency) return o.NULL_COLOR; let r; switch (e) { case 16777216: case 33554432: r = this._getColorFromAnsiIndex(t); break; case 50331648: const e = l.AttributeData.toColorRGB(t); r = o.channels.toColor(e[0], e[1], e[2]); break; default: r = i ? o.color.opaque(this._config.colors.foreground) : this._config.colors.background }return r } _getForegroundColor(e, t, i, r, n, a, h, c, d, _) { const u = this._getMinimumContrastColor(e, t, i, r, n, a, h, d, c, _); if (u) return u; let f; switch (n) { case 16777216: case 33554432: this._config.drawBoldTextInBrightColors && d && a < 8 && (a += 8), f = this._getColorFromAnsiIndex(a); break; case 50331648: const e = l.AttributeData.toColorRGB(a); f = o.channels.toColor(e[0], e[1], e[2]); break; default: f = h ? this._config.colors.background : this._config.colors.foreground }return this._config.allowTransparency && (f = o.color.opaque(f)), c && (f = o.color.multiplyOpacity(f, s.DIM_OPACITY)), f } _resolveBackgroundRgba(e, t, i) { switch (e) { case 16777216: case 33554432: return this._getColorFromAnsiIndex(t).rgba; case 50331648: return t << 8; default: return i ? this._config.colors.foreground.rgba : this._config.colors.background.rgba } } _resolveForegroundRgba(e, t, i, s) { switch (e) { case 16777216: case 33554432: return this._config.drawBoldTextInBrightColors && s && t < 8 && (t += 8), this._getColorFromAnsiIndex(t).rgba; case 50331648: return t << 8; default: return i ? this._config.colors.background.rgba : this._config.colors.foreground.rgba } } _getMinimumContrastColor(e, t, i, s, r, n, a, h, c, l) { if (1 === this._config.minimumContrastRatio || l) return; const d = this._getContrastCache(c), _ = d.getColor(e, s); if (void 0 !== _) return _ || void 0; const u = this._resolveBackgroundRgba(t, i, a), f = this._resolveForegroundRgba(r, n, a, h), v = o.rgba.ensureContrastRatio(u, f, this._config.minimumContrastRatio / (c ? 2 : 1)); if (!v) return void d.setColor(e, s, null); const g = o.channels.toColor(v >> 24 & 255, v >> 16 & 255, v >> 8 & 255); return d.setColor(e, s, g), g } _getContrastCache(e) { return e ? this._config.colors.halfContrastCache : this._config.colors.contrastCache } _drawToCache(e, t, i, o, a = !1) { const h = "number" == typeof e ? String.fromCharCode(e) : e, c = Math.min(this._config.deviceCellWidth * Math.max(h.length, 2) + 4, this._textureSize); this._tmpCanvas.width < c && (this._tmpCanvas.width = c); const d = Math.min(this._config.deviceCellHeight + 8, this._textureSize); if (this._tmpCanvas.height < d && (this._tmpCanvas.height = d), this._tmpCtx.save(), this._workAttributeData.fg = i, this._workAttributeData.bg = t, this._workAttributeData.extended.ext = o, this._workAttributeData.isInvisible()) return _; const u = !!this._workAttributeData.isBold(), v = !!this._workAttributeData.isInverse(), p = !!this._workAttributeData.isDim(), m = !!this._workAttributeData.isItalic(), C = !!this._workAttributeData.isUnderline(), S = !!this._workAttributeData.isStrikethrough(), b = !!this._workAttributeData.isOverline(); let w = this._workAttributeData.getFgColor(), y = this._workAttributeData.getFgColorMode(), L = this._workAttributeData.getBgColor(), x = this._workAttributeData.getBgColorMode(); if (v) { const e = w; w = L, L = e; const t = y; y = x, x = t } const E = this._getBackgroundColor(x, L, v, p); this._tmpCtx.globalCompositeOperation = "copy", this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.globalCompositeOperation = "source-over"; const R = u ? this._config.fontWeightBold : this._config.fontWeight, M = m ? "italic" : ""; this._tmpCtx.font = `${M} ${R} ${this._config.fontSize * this._config.devicePixelRatio}px ${this._config.fontFamily}`, this._tmpCtx.textBaseline = s.TEXT_BASELINE; const A = 1 === h.length && (0, n.isPowerlineGlyph)(h.charCodeAt(0)), D = 1 === h.length && (0, n.isRestrictedPowerlineGlyph)(h.charCodeAt(0)), k = this._getForegroundColor(t, x, L, i, y, w, v, p, u, (0, n.treatGlyphAsBackgroundColor)(h.charCodeAt(0))); this._tmpCtx.fillStyle = k.css; const T = D ? 0 : 4; let B = !1; !1 !== this._config.customGlyphs && (B = (0, r.tryDrawCustomChar)(this._tmpCtx, h, T, T, this._config.deviceCellWidth, this._config.deviceCellHeight, this._config.fontSize, this._config.devicePixelRatio)); let O, P = !A; if (O = "number" == typeof e ? this._unicodeService.wcwidth(e) : this._unicodeService.getStringCellWidth(e), C) { this._tmpCtx.save(); const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)), t = e % 2 == 1 ? .5 : 0; if (this._tmpCtx.lineWidth = e, this._workAttributeData.isUnderlineColorDefault()) this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle; else if (this._workAttributeData.isUnderlineColorRGB()) P = !1, this._tmpCtx.strokeStyle = `rgb(${l.AttributeData.toColorRGB(this._workAttributeData.getUnderlineColor()).join(",")})`; else { P = !1; let e = this._workAttributeData.getUnderlineColor(); this._config.drawBoldTextInBrightColors && this._workAttributeData.isBold() && e < 8 && (e += 8), this._tmpCtx.strokeStyle = this._getColorFromAnsiIndex(e).css } this._tmpCtx.beginPath(); const i = T, s = Math.ceil(T + this._config.deviceCharHeight) - t - (a ? 2 * e : 0), r = s + e, o = s + 2 * e; let c = this._workAttributeData.getUnderlineVariantOffset(); for (let a = 0; a < O; a++) { this._tmpCtx.save(); const h = i + a * this._config.deviceCellWidth, l = i + (a + 1) * this._config.deviceCellWidth, d = h + this._config.deviceCellWidth / 2; switch (this._workAttributeData.extended.underlineStyle) { case 2: this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s), this._tmpCtx.moveTo(h, o), this._tmpCtx.lineTo(l, o); break; case 3: const i = e <= 1 ? o : Math.ceil(T + this._config.deviceCharHeight - e / 2) - t, a = e <= 1 ? s : Math.ceil(T + this._config.deviceCharHeight + e / 2) - t, _ = new Path2D; _.rect(h, s, this._config.deviceCellWidth, o - s), this._tmpCtx.clip(_), this._tmpCtx.moveTo(h - this._config.deviceCellWidth / 2, r), this._tmpCtx.bezierCurveTo(h - this._config.deviceCellWidth / 2, a, h, a, h, r), this._tmpCtx.bezierCurveTo(h, i, d, i, d, r), this._tmpCtx.bezierCurveTo(d, a, l, a, l, r), this._tmpCtx.bezierCurveTo(l, i, l + this._config.deviceCellWidth / 2, i, l + this._config.deviceCellWidth / 2, r); break; case 4: const u = 0 === c ? 0 : c >= e ? 2 * e - c : e - c; 0 == !(c >= e) || 0 === u ? (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h + u, s), this._tmpCtx.lineTo(l, s)) : (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(h + u, s), this._tmpCtx.moveTo(h + u + e, s), this._tmpCtx.lineTo(l, s)), c = (0, n.computeNextVariantOffset)(l - h, e, c); break; case 5: const f = .6, v = .3, g = l - h, p = Math.floor(f * g), m = Math.floor(v * g), C = g - p - m; this._tmpCtx.setLineDash([p, m, C]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s); break; default: this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s) }this._tmpCtx.stroke(), this._tmpCtx.restore() } if (this._tmpCtx.restore(), !B && this._config.fontSize >= 12 && !this._config.allowTransparency && " " !== h) { this._tmpCtx.save(), this._tmpCtx.textBaseline = "alphabetic"; const t = this._tmpCtx.measureText(h); if (this._tmpCtx.restore(), "actualBoundingBoxDescent" in t && t.actualBoundingBoxDescent > 0) { this._tmpCtx.save(); const t = new Path2D; t.rect(i, s - Math.ceil(e / 2), this._config.deviceCellWidth * O, o - s + Math.ceil(e / 2)), this._tmpCtx.clip(t), this._tmpCtx.lineWidth = 3 * this._config.devicePixelRatio, this._tmpCtx.strokeStyle = E.css, this._tmpCtx.strokeText(h, T, T + this._config.deviceCharHeight), this._tmpCtx.restore() } } } if (b) { const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)), t = e % 2 == 1 ? .5 : 0; this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + t), this._tmpCtx.stroke() } if (B || this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight), "_" === h && !this._config.allowTransparency) { let e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P); if (e) for (let t = 1; t <= 5 && (this._tmpCtx.save(), this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.restore(), this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight - t), e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P), e); t++); } if (S) { const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 10)), t = this._tmpCtx.lineWidth % 2 == 1 ? .5 : 0; this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.stroke() } this._tmpCtx.restore(); const I = this._tmpCtx.getImageData(0, 0, this._tmpCanvas.width, this._tmpCanvas.height); let F; if (F = this._config.allowTransparency ? function (e) { for (let t = 0; t < e.data.length; t += 4)if (e.data[t + 3] > 0) return !1; return !0 }(I) : g(I, E, k, P), F) return _; const H = this._findGlyphBoundingBox(I, this._workBoundingBox, c, D, B, T); let $, W; for (; ;) { if (0 === this._activePages.length) { const e = this._createNewPage(); $ = e, W = e.currentRow, W.height = H.size.y; break } $ = this._activePages[this._activePages.length - 1], W = $.currentRow; for (const e of this._activePages) H.size.y <= e.currentRow.height && ($ = e, W = e.currentRow); for (let e = this._activePages.length - 1; e >= 0; e--)for (const t of this._activePages[e].fixedRows) t.height <= W.height && H.size.y <= t.height && ($ = this._activePages[e], W = t); if (W.y + H.size.y >= $.canvas.height || W.height > H.size.y + 2) { let e = !1; if ($.currentRow.y + $.currentRow.height + H.size.y >= $.canvas.height) { let t; for (const e of this._activePages) if (e.currentRow.y + e.currentRow.height + H.size.y < e.canvas.height) { t = e; break } if (t) $ = t; else if (f.maxAtlasPages && this._pages.length >= f.maxAtlasPages && W.y + H.size.y <= $.canvas.height && W.height >= H.size.y && W.x + H.size.x <= $.canvas.width) e = !0; else { const t = this._createNewPage(); $ = t, W = t.currentRow, W.height = H.size.y, e = !0 } } e || ($.currentRow.height > 0 && $.fixedRows.push($.currentRow), W = { x: 0, y: $.currentRow.y + $.currentRow.height, height: H.size.y }, $.fixedRows.push(W), $.currentRow = { x: 0, y: W.y + W.height, height: 0 }) } if (W.x + H.size.x <= $.canvas.width) break; W === $.currentRow ? (W.x = 0, W.y += W.height, W.height = 0) : $.fixedRows.splice($.fixedRows.indexOf(W), 1) } return H.texturePage = this._pages.indexOf($), H.texturePosition.x = W.x, H.texturePosition.y = W.y, H.texturePositionClipSpace.x = W.x / $.canvas.width, H.texturePositionClipSpace.y = W.y / $.canvas.height, H.sizeClipSpace.x /= $.canvas.width, H.sizeClipSpace.y /= $.canvas.height, W.height = Math.max(W.height, H.size.y), W.x += H.size.x, $.ctx.putImageData(I, H.texturePosition.x - this._workBoundingBox.left, H.texturePosition.y - this._workBoundingBox.top, this._workBoundingBox.left, this._workBoundingBox.top, H.size.x, H.size.y), $.addGlyph(H), $.version++, H } _findGlyphBoundingBox(e, t, i, s, r, n) { t.top = 0; const o = s ? this._config.deviceCellHeight : this._tmpCanvas.height, a = s ? this._config.deviceCellWidth : i; let h = !1; for (let i = 0; i < o; i++) { for (let s = 0; s < a; s++) { const r = i * this._tmpCanvas.width * 4 + 4 * s + 3; if (0 !== e.data[r]) { t.top = i, h = !0; break } } if (h) break } t.left = 0, h = !1; for (let i = 0; i < n + a; i++) { for (let s = 0; s < o; s++) { const r = s * this._tmpCanvas.width * 4 + 4 * i + 3; if (0 !== e.data[r]) { t.left = i, h = !0; break } } if (h) break } t.right = a, h = !1; for (let i = n + a - 1; i >= n; i--) { for (let s = 0; s < o; s++) { const r = s * this._tmpCanvas.width * 4 + 4 * i + 3; if (0 !== e.data[r]) { t.right = i, h = !0; break } } if (h) break } t.bottom = o, h = !1; for (let i = o - 1; i >= 0; i--) { for (let s = 0; s < a; s++) { const r = i * this._tmpCanvas.width * 4 + 4 * s + 3; if (0 !== e.data[r]) { t.bottom = i, h = !0; break } } if (h) break } return { texturePage: 0, texturePosition: { x: 0, y: 0 }, texturePositionClipSpace: { x: 0, y: 0 }, size: { x: t.right - t.left + 1, y: t.bottom - t.top + 1 }, sizeClipSpace: { x: t.right - t.left + 1, y: t.bottom - t.top + 1 }, offset: { x: -t.left + n + (s || r ? Math.floor((this._config.deviceCellWidth - this._config.deviceCharWidth) / 2) : 0), y: -t.top + n + (s || r ? 1 === this._config.lineHeight ? 0 : Math.round((this._config.deviceCellHeight - this._config.deviceCharHeight) / 2) : 0) } } } } t.TextureAtlas = f; class v { get percentageUsed() { return this._usedPixels / (this.canvas.width * this.canvas.height) } get glyphs() { return this._glyphs } addGlyph(e) { this._glyphs.push(e), this._usedPixels += e.size.x * e.size.y } constructor(e, t, i) { if (this._usedPixels = 0, this._glyphs = [], this.version = 0, this.currentRow = { x: 0, y: 0, height: 0 }, this.fixedRows = [], i) for (const e of i) this._glyphs.push(...e.glyphs), this._usedPixels += e._usedPixels; this.canvas = p(e, t, t), this.ctx = (0, n.throwIfFalsy)(this.canvas.getContext("2d", { alpha: !0 })) } clear() { this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.currentRow.x = 0, this.currentRow.y = 0, this.currentRow.height = 0, this.fixedRows.length = 0, this.version++ } } function g(e, t, i, s) { const r = t.rgba >>> 24, n = t.rgba >>> 16 & 255, o = t.rgba >>> 8 & 255, a = i.rgba >>> 24, h = i.rgba >>> 16 & 255, c = i.rgba >>> 8 & 255, l = Math.floor((Math.abs(r - a) + Math.abs(n - h) + Math.abs(o - c)) / 12); let d = !0; for (let t = 0; t < e.data.length; t += 4)e.data[t] === r && e.data[t + 1] === n && e.data[t + 2] === o || s && Math.abs(e.data[t] - r) + Math.abs(e.data[t + 1] - n) + Math.abs(e.data[t + 2] - o) < l ? e.data[t + 3] = 0 : d = !1; return d } function p(e, t, i) { const s = e.createElement("canvas"); return s.width = t, s.height = i, s } }, 577: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.CharacterJoinerService = t.JoinedCellData = void 0; const n = i(147), o = i(855), a = i(782), h = i(97); class c extends n.AttributeData { constructor(e, t, i) { super(), this.content = 0, this.combinedData = "", this.fg = e.fg, this.bg = e.bg, this.combinedData = t, this._width = i } isCombined() { return 2097152 } getWidth() { return this._width } getChars() { return this.combinedData } getCode() { return 2097151 } setFromCharData(e) { throw new Error("not implemented") } getAsCharData() { return [this.fg, this.getChars(), this.getWidth(), this.getCode()] } } t.JoinedCellData = c; let l = t.CharacterJoinerService = class e { constructor(e) { this._bufferService = e, this._characterJoiners = [], this._nextCharacterJoinerId = 0, this._workCell = new a.CellData } register(e) { const t = { id: this._nextCharacterJoinerId++, handler: e }; return this._characterJoiners.push(t), t.id } deregister(e) { for (let t = 0; t < this._characterJoiners.length; t++)if (this._characterJoiners[t].id === e) return this._characterJoiners.splice(t, 1), !0; return !1 } getJoinedCharacters(e) { if (0 === this._characterJoiners.length) return []; const t = this._bufferService.buffer.lines.get(e); if (!t || 0 === t.length) return []; const i = [], s = t.translateToString(!0); let r = 0, n = 0, a = 0, h = t.getFg(0), c = t.getBg(0); for (let e = 0; e < t.getTrimmedLength(); e++)if (t.loadCell(e, this._workCell), 0 !== this._workCell.getWidth()) { if (this._workCell.fg !== h || this._workCell.bg !== c) { if (e - r > 1) { const e = this._getJoinedRanges(s, a, n, t, r); for (let t = 0; t < e.length; t++)i.push(e[t]) } r = e, a = n, h = this._workCell.fg, c = this._workCell.bg } n += this._workCell.getChars().length || o.WHITESPACE_CELL_CHAR.length } if (this._bufferService.cols - r > 1) { const e = this._getJoinedRanges(s, a, n, t, r); for (let t = 0; t < e.length; t++)i.push(e[t]) } return i } _getJoinedRanges(t, i, s, r, n) { const o = t.substring(i, s); let a = []; try { a = this._characterJoiners[0].handler(o) } catch (e) { console.error(e) } for (let t = 1; t < this._characterJoiners.length; t++)try { const i = this._characterJoiners[t].handler(o); for (let t = 0; t < i.length; t++)e._mergeRanges(a, i[t]) } catch (e) { console.error(e) } return this._stringRangesToCellRanges(a, r, n), a } _stringRangesToCellRanges(e, t, i) { let s = 0, r = !1, n = 0, a = e[s]; if (a) { for (let h = i; h < this._bufferService.cols; h++) { const i = t.getWidth(h), c = t.getString(h).length || o.WHITESPACE_CELL_CHAR.length; if (0 !== i) { if (!r && a[0] <= n && (a[0] = h, r = !0), a[1] <= n) { if (a[1] = h, a = e[++s], !a) break; a[0] <= n ? (a[0] = h, r = !0) : r = !1 } n += c } } a && (a[1] = this._bufferService.cols) } } static _mergeRanges(e, t) { let i = !1; for (let s = 0; s < e.length; s++) { const r = e[s]; if (i) { if (t[1] <= r[0]) return e[s - 1][1] = t[1], e; if (t[1] <= r[1]) return e[s - 1][1] = Math.max(t[1], r[1]), e.splice(s, 1), e; e.splice(s, 1), s-- } else { if (t[1] <= r[0]) return e.splice(s, 0, t), e; if (t[1] <= r[1]) return r[0] = Math.min(t[0], r[0]), e; t[0] < r[1] && (r[0] = Math.min(t[0], r[0]), i = !0) } } return i ? e[e.length - 1][1] = t[1] : e.push(t), e } }; t.CharacterJoinerService = l = s([r(0, h.IBufferService)], l) }, 160: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.contrastRatio = t.toPaddedHex = t.rgba = t.rgb = t.css = t.color = t.channels = t.NULL_COLOR = void 0; let i = 0, s = 0, r = 0, n = 0; var o, a, h, c, l; function d(e) { const t = e.toString(16); return t.length < 2 ? "0" + t : t } function _(e, t) { return e < t ? (t + .05) / (e + .05) : (e + .05) / (t + .05) } t.NULL_COLOR = { css: "#00000000", rgba: 0 }, function (e) { e.toCss = function (e, t, i, s) { return void 0 !== s ? `#${d(e)}${d(t)}${d(i)}${d(s)}` : `#${d(e)}${d(t)}${d(i)}` }, e.toRgba = function (e, t, i, s = 255) { return (e << 24 | t << 16 | i << 8 | s) >>> 0 }, e.toColor = function (t, i, s, r) { return { css: e.toCss(t, i, s, r), rgba: e.toRgba(t, i, s, r) } } }(o || (t.channels = o = {})), function (e) { function t(e, t) { return n = Math.round(255 * t), [i, s, r] = l.toChannels(e.rgba), { css: o.toCss(i, s, r, n), rgba: o.toRgba(i, s, r, n) } } e.blend = function (e, t) { if (n = (255 & t.rgba) / 255, 1 === n) return { css: t.css, rgba: t.rgba }; const a = t.rgba >> 24 & 255, h = t.rgba >> 16 & 255, c = t.rgba >> 8 & 255, l = e.rgba >> 24 & 255, d = e.rgba >> 16 & 255, _ = e.rgba >> 8 & 255; return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), { css: o.toCss(i, s, r), rgba: o.toRgba(i, s, r) } }, e.isOpaque = function (e) { return !(255 & ~e.rgba) }, e.ensureContrastRatio = function (e, t, i) { const s = l.ensureContrastRatio(e.rgba, t.rgba, i); if (s) return o.toColor(s >> 24 & 255, s >> 16 & 255, s >> 8 & 255) }, e.opaque = function (e) { const t = (255 | e.rgba) >>> 0; return [i, s, r] = l.toChannels(t), { css: o.toCss(i, s, r), rgba: t } }, e.opacity = t, e.multiplyOpacity = function (e, i) { return n = 255 & e.rgba, t(e, n * i / 255) }, e.toColorRGB = function (e) { return [e.rgba >> 24 & 255, e.rgba >> 16 & 255, e.rgba >> 8 & 255] } }(a || (t.color = a = {})), function (e) { let t, a; try { const e = document.createElement("canvas"); e.width = 1, e.height = 1; const i = e.getContext("2d", { willReadFrequently: !0 }); i && (t = i, t.globalCompositeOperation = "copy", a = t.createLinearGradient(0, 0, 1, 1)) } catch { } e.toColor = function (e) { if (e.match(/#[\da-f]{3,8}/i)) switch (e.length) { case 4: return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), o.toColor(i, s, r); case 5: return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), n = parseInt(e.slice(4, 5).repeat(2), 16), o.toColor(i, s, r, n); case 7: return { css: e, rgba: (parseInt(e.slice(1), 16) << 8 | 255) >>> 0 }; case 9: return { css: e, rgba: parseInt(e.slice(1), 16) >>> 0 } }const h = e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/); if (h) return i = parseInt(h[1]), s = parseInt(h[2]), r = parseInt(h[3]), n = Math.round(255 * (void 0 === h[5] ? 1 : parseFloat(h[5]))), o.toColor(i, s, r, n); if (!t || !a) throw new Error("css.toColor: Unsupported css format"); if (t.fillStyle = a, t.fillStyle = e, "string" != typeof t.fillStyle) throw new Error("css.toColor: Unsupported css format"); if (t.fillRect(0, 0, 1, 1), [i, s, r, n] = t.getImageData(0, 0, 1, 1).data, 255 !== n) throw new Error("css.toColor: Unsupported css format"); return { rgba: o.toRgba(i, s, r, n), css: e } } }(h || (t.css = h = {})), function (e) { function t(e, t, i) { const s = e / 255, r = t / 255, n = i / 255; return .2126 * (s <= .03928 ? s / 12.92 : Math.pow((s + .055) / 1.055, 2.4)) + .7152 * (r <= .03928 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4)) + .0722 * (n <= .03928 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4)) } e.relativeLuminance = function (e) { return t(e >> 16 & 255, e >> 8 & 255, 255 & e) }, e.relativeLuminance2 = t }(c || (t.rgb = c = {})), function (e) { function t(e, t, i) { const s = e >> 24 & 255, r = e >> 16 & 255, n = e >> 8 & 255; let o = t >> 24 & 255, a = t >> 16 & 255, h = t >> 8 & 255, l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); for (; l < i && (o > 0 || a > 0 || h > 0);)o -= Math.max(0, Math.ceil(.1 * o)), a -= Math.max(0, Math.ceil(.1 * a)), h -= Math.max(0, Math.ceil(.1 * h)), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); return (o << 24 | a << 16 | h << 8 | 255) >>> 0 } function a(e, t, i) { const s = e >> 24 & 255, r = e >> 16 & 255, n = e >> 8 & 255; let o = t >> 24 & 255, a = t >> 16 & 255, h = t >> 8 & 255, l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); for (; l < i && (o < 255 || a < 255 || h < 255);)o = Math.min(255, o + Math.ceil(.1 * (255 - o))), a = Math.min(255, a + Math.ceil(.1 * (255 - a))), h = Math.min(255, h + Math.ceil(.1 * (255 - h))), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); return (o << 24 | a << 16 | h << 8 | 255) >>> 0 } e.blend = function (e, t) { if (n = (255 & t) / 255, 1 === n) return t; const a = t >> 24 & 255, h = t >> 16 & 255, c = t >> 8 & 255, l = e >> 24 & 255, d = e >> 16 & 255, _ = e >> 8 & 255; return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), o.toRgba(i, s, r) }, e.ensureContrastRatio = function (e, i, s) { const r = c.relativeLuminance(e >> 8), n = c.relativeLuminance(i >> 8); if (_(r, n) < s) { if (n < r) { const n = t(e, i, s), o = _(r, c.relativeLuminance(n >> 8)); if (o < s) { const t = a(e, i, s); return o > _(r, c.relativeLuminance(t >> 8)) ? n : t } return n } const o = a(e, i, s), h = _(r, c.relativeLuminance(o >> 8)); if (h < s) { const n = t(e, i, s); return h > _(r, c.relativeLuminance(n >> 8)) ? o : n } return o } }, e.reduceLuminance = t, e.increaseLuminance = a, e.toChannels = function (e) { return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e] } }(l || (t.rgba = l = {})), t.toPaddedHex = d, t.contrastRatio = _ }, 345: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class { constructor() { this._listeners = [], this._disposed = !1 } get event() { return this._event || (this._event = e => (this._listeners.push(e), { dispose: () => { if (!this._disposed) for (let t = 0; t < this._listeners.length; t++)if (this._listeners[t] === e) return void this._listeners.splice(t, 1) } })), this._event } fire(e, t) { const i = []; for (let e = 0; e < this._listeners.length; e++)i.push(this._listeners[e]); for (let s = 0; s < i.length; s++)i[s].call(void 0, e, t) } dispose() { this.clearListeners(), this._disposed = !0 } clearListeners() { this._listeners && (this._listeners.length = 0) } }, t.forwardEvent = function (e, t) { return e((e => t.fire(e))) }, t.runAndSubscribe = function (e, t) { return t(void 0), e((e => t(e))) } }, 859: (e, t) => { function i(e) { for (const t of e) t.dispose(); e.length = 0 } Object.defineProperty(t, "__esModule", { value: !0 }), t.getDisposeArrayDisposable = t.disposeArray = t.toDisposable = t.MutableDisposable = t.Disposable = void 0, t.Disposable = class { constructor() { this._disposables = [], this._isDisposed = !1 } dispose() { this._isDisposed = !0; for (const e of this._disposables) e.dispose(); this._disposables.length = 0 } register(e) { return this._disposables.push(e), e } unregister(e) { const t = this._disposables.indexOf(e); -1 !== t && this._disposables.splice(t, 1) } }, t.MutableDisposable = class { constructor() { this._isDisposed = !1 } get value() { return this._isDisposed ? void 0 : this._value } set value(e) { this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e) } clear() { this.value = void 0 } dispose() { this._isDisposed = !0, this._value?.dispose(), this._value = void 0 } }, t.toDisposable = function (e) { return { dispose: e } }, t.disposeArray = i, t.getDisposeArrayDisposable = function (e) { return { dispose: () => i(e) } } }, 485: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.FourKeyMap = t.TwoKeyMap = void 0; class i { constructor() { this._data = {} } set(e, t, i) { this._data[e] || (this._data[e] = {}), this._data[e][t] = i } get(e, t) { return this._data[e] ? this._data[e][t] : void 0 } clear() { this._data = {} } } t.TwoKeyMap = i, t.FourKeyMap = class { constructor() { this._data = new i } set(e, t, s, r, n) { this._data.get(e, t) || this._data.set(e, t, new i), this._data.get(e, t).set(s, r, n) } get(e, t, i, s) { return this._data.get(e, t)?.get(i, s) } clear() { this._data.clear() } } }, 399: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.isChromeOS = t.isLinux = t.isWindows = t.isIphone = t.isIpad = t.isMac = t.getSafariVersion = t.isSafari = t.isLegacyEdge = t.isFirefox = t.isNode = void 0, t.isNode = "undefined" != typeof process && "title" in process; const i = t.isNode ? "node" : navigator.userAgent, s = t.isNode ? "node" : navigator.platform; t.isFirefox = i.includes("Firefox"), t.isLegacyEdge = i.includes("Edge"), t.isSafari = /^((?!chrome|android).)*safari/i.test(i), t.getSafariVersion = function () { if (!t.isSafari) return 0; const e = i.match(/Version\/(\d+)/); return null === e || e.length < 2 ? 0 : parseInt(e[1]) }, t.isMac = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(s), t.isIpad = "iPad" === s, t.isIphone = "iPhone" === s, t.isWindows = ["Windows", "Win16", "Win32", "WinCE"].includes(s), t.isLinux = s.indexOf("Linux") >= 0, t.isChromeOS = /\bCrOS\b/.test(i) }, 385: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.DebouncedIdleTask = t.IdleTaskQueue = t.PriorityTaskQueue = void 0; const s = i(399); class r { constructor() { this._tasks = [], this._i = 0 } enqueue(e) { this._tasks.push(e), this._start() } flush() { for (; this._i < this._tasks.length;)this._tasks[this._i]() || this._i++; this.clear() } clear() { this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0 } _start() { this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this))) } _process(e) { this._idleCallback = void 0; let t = 0, i = 0, s = e.timeRemaining(), r = 0; for (; this._i < this._tasks.length;) { if (t = Date.now(), this._tasks[this._i]() || this._i++, t = Math.max(1, Date.now() - t), i = Math.max(t, i), r = e.timeRemaining(), 1.5 * i > r) return s - t < -20 && console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s - t))}ms`), void this._start(); s = r } this.clear() } } class n extends r { _requestCallback(e) { return setTimeout((() => e(this._createDeadline(16)))) } _cancelCallback(e) { clearTimeout(e) } _createDeadline(e) { const t = Date.now() + e; return { timeRemaining: () => Math.max(0, t - Date.now()) } } } t.PriorityTaskQueue = n, t.IdleTaskQueue = !s.isNode && "requestIdleCallback" in window ? class extends r { _requestCallback(e) { return requestIdleCallback(e) } _cancelCallback(e) { cancelIdleCallback(e) } } : n, t.DebouncedIdleTask = class { constructor() { this._queue = new t.IdleTaskQueue } set(e) { this._queue.clear(), this._queue.enqueue(e) } flush() { this._queue.flush() } } }, 147: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.ExtendedAttrs = t.AttributeData = void 0; class i { constructor() { this.fg = 0, this.bg = 0, this.extended = new s } static toColorRGB(e) { return [e >>> 16 & 255, e >>> 8 & 255, 255 & e] } static fromColorRGB(e) { return (255 & e[0]) << 16 | (255 & e[1]) << 8 | 255 & e[2] } clone() { const e = new i; return e.fg = this.fg, e.bg = this.bg, e.extended = this.extended.clone(), e } isInverse() { return 67108864 & this.fg } isBold() { return 134217728 & this.fg } isUnderline() { return this.hasExtendedAttrs() && 0 !== this.extended.underlineStyle ? 1 : 268435456 & this.fg } isBlink() { return 536870912 & this.fg } isInvisible() { return 1073741824 & this.fg } isItalic() { return 67108864 & this.bg } isDim() { return 134217728 & this.bg } isStrikethrough() { return 2147483648 & this.fg } isProtected() { return 536870912 & this.bg } isOverline() { return 1073741824 & this.bg } getFgColorMode() { return 50331648 & this.fg } getBgColorMode() { return 50331648 & this.bg } isFgRGB() { return !(50331648 & ~this.fg) } isBgRGB() { return !(50331648 & ~this.bg) } isFgPalette() { return 16777216 == (50331648 & this.fg) || 33554432 == (50331648 & this.fg) } isBgPalette() { return 16777216 == (50331648 & this.bg) || 33554432 == (50331648 & this.bg) } isFgDefault() { return !(50331648 & this.fg) } isBgDefault() { return !(50331648 & this.bg) } isAttributeDefault() { return 0 === this.fg && 0 === this.bg } getFgColor() { switch (50331648 & this.fg) { case 16777216: case 33554432: return 255 & this.fg; case 50331648: return 16777215 & this.fg; default: return -1 } } getBgColor() { switch (50331648 & this.bg) { case 16777216: case 33554432: return 255 & this.bg; case 50331648: return 16777215 & this.bg; default: return -1 } } hasExtendedAttrs() { return 268435456 & this.bg } updateExtended() { this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456 } getUnderlineColor() { if (268435456 & this.bg && ~this.extended.underlineColor) switch (50331648 & this.extended.underlineColor) { case 16777216: case 33554432: return 255 & this.extended.underlineColor; case 50331648: return 16777215 & this.extended.underlineColor; default: return this.getFgColor() }return this.getFgColor() } getUnderlineColorMode() { return 268435456 & this.bg && ~this.extended.underlineColor ? 50331648 & this.extended.underlineColor : this.getFgColorMode() } isUnderlineColorRGB() { return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & ~this.extended.underlineColor) : this.isFgRGB() } isUnderlineColorPalette() { return 268435456 & this.bg && ~this.extended.underlineColor ? 16777216 == (50331648 & this.extended.underlineColor) || 33554432 == (50331648 & this.extended.underlineColor) : this.isFgPalette() } isUnderlineColorDefault() { return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & this.extended.underlineColor) : this.isFgDefault() } getUnderlineStyle() { return 268435456 & this.fg ? 268435456 & this.bg ? this.extended.underlineStyle : 1 : 0 } getUnderlineVariantOffset() { return this.extended.underlineVariantOffset } } t.AttributeData = i; class s { get ext() { return this._urlId ? -469762049 & this._ext | this.underlineStyle << 26 : this._ext } set ext(e) { this._ext = e } get underlineStyle() { return this._urlId ? 5 : (469762048 & this._ext) >> 26 } set underlineStyle(e) { this._ext &= -469762049, this._ext |= e << 26 & 469762048 } get underlineColor() { return 67108863 & this._ext } set underlineColor(e) { this._ext &= -67108864, this._ext |= 67108863 & e } get urlId() { return this._urlId } set urlId(e) { this._urlId = e } get underlineVariantOffset() { const e = (3758096384 & this._ext) >> 29; return e < 0 ? 4294967288 ^ e : e } set underlineVariantOffset(e) { this._ext &= 536870911, this._ext |= e << 29 & 3758096384 } constructor(e = 0, t = 0) { this._ext = 0, this._urlId = 0, this._ext = e, this._urlId = t } clone() { return new s(this._ext, this._urlId) } isEmpty() { return 0 === this.underlineStyle && 0 === this._urlId } } t.ExtendedAttrs = s }, 782: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.CellData = void 0; const s = i(133), r = i(855), n = i(147); class o extends n.AttributeData { constructor() { super(...arguments), this.content = 0, this.fg = 0, this.bg = 0, this.extended = new n.ExtendedAttrs, this.combinedData = "" } static fromCharData(e) { const t = new o; return t.setFromCharData(e), t } isCombined() { return 2097152 & this.content } getWidth() { return this.content >> 22 } getChars() { return 2097152 & this.content ? this.combinedData : 2097151 & this.content ? (0, s.stringFromCodePoint)(2097151 & this.content) : "" } getCode() { return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : 2097151 & this.content } setFromCharData(e) { this.fg = e[r.CHAR_DATA_ATTR_INDEX], this.bg = 0; let t = !1; if (e[r.CHAR_DATA_CHAR_INDEX].length > 2) t = !0; else if (2 === e[r.CHAR_DATA_CHAR_INDEX].length) { const i = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0); if (55296 <= i && i <= 56319) { const s = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1); 56320 <= s && s <= 57343 ? this.content = 1024 * (i - 55296) + s - 56320 + 65536 | e[r.CHAR_DATA_WIDTH_INDEX] << 22 : t = !0 } else t = !0 } else this.content = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | e[r.CHAR_DATA_WIDTH_INDEX] << 22; t && (this.combinedData = e[r.CHAR_DATA_CHAR_INDEX], this.content = 2097152 | e[r.CHAR_DATA_WIDTH_INDEX] << 22) } getAsCharData() { return [this.fg, this.getChars(), this.getWidth(), this.getCode()] } } t.CellData = o }, 855: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.WHITESPACE_CELL_CODE = t.WHITESPACE_CELL_WIDTH = t.WHITESPACE_CELL_CHAR = t.NULL_CELL_CODE = t.NULL_CELL_WIDTH = t.NULL_CELL_CHAR = t.CHAR_DATA_CODE_INDEX = t.CHAR_DATA_WIDTH_INDEX = t.CHAR_DATA_CHAR_INDEX = t.CHAR_DATA_ATTR_INDEX = t.DEFAULT_EXT = t.DEFAULT_ATTR = t.DEFAULT_COLOR = void 0, t.DEFAULT_COLOR = 0, t.DEFAULT_ATTR = 256 | t.DEFAULT_COLOR << 9, t.DEFAULT_EXT = 0, t.CHAR_DATA_ATTR_INDEX = 0, t.CHAR_DATA_CHAR_INDEX = 1, t.CHAR_DATA_WIDTH_INDEX = 2, t.CHAR_DATA_CODE_INDEX = 3, t.NULL_CELL_CHAR = "", t.NULL_CELL_WIDTH = 1, t.NULL_CELL_CODE = 0, t.WHITESPACE_CELL_CHAR = " ", t.WHITESPACE_CELL_WIDTH = 1, t.WHITESPACE_CELL_CODE = 32 }, 133: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.Utf8ToUtf32 = t.StringToUtf32 = t.utf32ToString = t.stringFromCodePoint = void 0, t.stringFromCodePoint = function (e) { return e > 65535 ? (e -= 65536, String.fromCharCode(55296 + (e >> 10)) + String.fromCharCode(e % 1024 + 56320)) : String.fromCharCode(e) }, t.utf32ToString = function (e, t = 0, i = e.length) { let s = ""; for (let r = t; r < i; ++r) { let t = e[r]; t > 65535 ? (t -= 65536, s += String.fromCharCode(55296 + (t >> 10)) + String.fromCharCode(t % 1024 + 56320)) : s += String.fromCharCode(t) } return s }, t.StringToUtf32 = class { constructor() { this._interim = 0 } clear() { this._interim = 0 } decode(e, t) { const i = e.length; if (!i) return 0; let s = 0, r = 0; if (this._interim) { const i = e.charCodeAt(r++); 56320 <= i && i <= 57343 ? t[s++] = 1024 * (this._interim - 55296) + i - 56320 + 65536 : (t[s++] = this._interim, t[s++] = i), this._interim = 0 } for (let n = r; n < i; ++n) { const r = e.charCodeAt(n); if (55296 <= r && r <= 56319) { if (++n >= i) return this._interim = r, s; const o = e.charCodeAt(n); 56320 <= o && o <= 57343 ? t[s++] = 1024 * (r - 55296) + o - 56320 + 65536 : (t[s++] = r, t[s++] = o) } else 65279 !== r && (t[s++] = r) } return s } }, t.Utf8ToUtf32 = class { constructor() { this.interim = new Uint8Array(3) } clear() { this.interim.fill(0) } decode(e, t) { const i = e.length; if (!i) return 0; let s, r, n, o, a = 0, h = 0, c = 0; if (this.interim[0]) { let s = !1, r = this.interim[0]; r &= 192 == (224 & r) ? 31 : 224 == (240 & r) ? 15 : 7; let n, o = 0; for (; (n = 63 & this.interim[++o]) && o < 4;)r <<= 6, r |= n; const h = 192 == (224 & this.interim[0]) ? 2 : 224 == (240 & this.interim[0]) ? 3 : 4, l = h - o; for (; c < l;) { if (c >= i) return 0; if (n = e[c++], 128 != (192 & n)) { c--, s = !0; break } this.interim[o++] = n, r <<= 6, r |= 63 & n } s || (2 === h ? r < 128 ? c-- : t[a++] = r : 3 === h ? r < 2048 || r >= 55296 && r <= 57343 || 65279 === r || (t[a++] = r) : r < 65536 || r > 1114111 || (t[a++] = r)), this.interim.fill(0) } const l = i - 4; let d = c; for (; d < i;) { for (; !(!(d < l) || 128 & (s = e[d]) || 128 & (r = e[d + 1]) || 128 & (n = e[d + 2]) || 128 & (o = e[d + 3]));)t[a++] = s, t[a++] = r, t[a++] = n, t[a++] = o, d += 4; if (s = e[d++], s < 128) t[a++] = s; else if (192 == (224 & s)) { if (d >= i) return this.interim[0] = s, a; if (r = e[d++], 128 != (192 & r)) { d--; continue } if (h = (31 & s) << 6 | 63 & r, h < 128) { d--; continue } t[a++] = h } else if (224 == (240 & s)) { if (d >= i) return this.interim[0] = s, a; if (r = e[d++], 128 != (192 & r)) { d--; continue } if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; if (n = e[d++], 128 != (192 & n)) { d--; continue } if (h = (15 & s) << 12 | (63 & r) << 6 | 63 & n, h < 2048 || h >= 55296 && h <= 57343 || 65279 === h) continue; t[a++] = h } else if (240 == (248 & s)) { if (d >= i) return this.interim[0] = s, a; if (r = e[d++], 128 != (192 & r)) { d--; continue } if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; if (n = e[d++], 128 != (192 & n)) { d--; continue } if (d >= i) return this.interim[0] = s, this.interim[1] = r, this.interim[2] = n, a; if (o = e[d++], 128 != (192 & o)) { d--; continue } if (h = (7 & s) << 18 | (63 & r) << 12 | (63 & n) << 6 | 63 & o, h < 65536 || h > 1114111) continue; t[a++] = h } } return a } } }, 776: function (e, t, i) { var s = this && this.__decorate || function (e, t, i, s) { var r, n = arguments.length, o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); else for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); return n > 3 && o && Object.defineProperty(t, i, o), o }, r = this && this.__param || function (e, t) { return function (i, s) { t(i, s, e) } }; Object.defineProperty(t, "__esModule", { value: !0 }), t.traceCall = t.setTraceLogger = t.LogService = void 0; const n = i(859), o = i(97), a = { trace: o.LogLevelEnum.TRACE, debug: o.LogLevelEnum.DEBUG, info: o.LogLevelEnum.INFO, warn: o.LogLevelEnum.WARN, error: o.LogLevelEnum.ERROR, off: o.LogLevelEnum.OFF }; let h, c = t.LogService = class extends n.Disposable { get logLevel() { return this._logLevel } constructor(e) { super(), this._optionsService = e, this._logLevel = o.LogLevelEnum.OFF, this._updateLogLevel(), this.register(this._optionsService.onSpecificOptionChange("logLevel", (() => this._updateLogLevel()))), h = this } _updateLogLevel() { this._logLevel = a[this._optionsService.rawOptions.logLevel] } _evalLazyOptionalParams(e) { for (let t = 0; t < e.length; t++)"function" == typeof e[t] && (e[t] = e[t]()) } _log(e, t, i) { this._evalLazyOptionalParams(i), e.call(console, (this._optionsService.options.logger ? "" : "xterm.js: ") + t, ...i) } trace(e, ...t) { this._logLevel <= o.LogLevelEnum.TRACE && this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger) ?? console.log, e, t) } debug(e, ...t) { this._logLevel <= o.LogLevelEnum.DEBUG && this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger) ?? console.log, e, t) } info(e, ...t) { this._logLevel <= o.LogLevelEnum.INFO && this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger) ?? console.info, e, t) } warn(e, ...t) { this._logLevel <= o.LogLevelEnum.WARN && this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger) ?? console.warn, e, t) } error(e, ...t) { this._logLevel <= o.LogLevelEnum.ERROR && this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger) ?? console.error, e, t) } }; t.LogService = c = s([r(0, o.IOptionsService)], c), t.setTraceLogger = function (e) { h = e }, t.traceCall = function (e, t, i) { if ("function" != typeof i.value) throw new Error("not supported"); const s = i.value; i.value = function (...e) { if (h.logLevel !== o.LogLevelEnum.TRACE) return s.apply(this, e); h.trace(`GlyphRenderer#${s.name}(${e.map((e => JSON.stringify(e))).join(", ")})`); const t = s.apply(this, e); return h.trace(`GlyphRenderer#${s.name} return`, t), t } } }, 726: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.createDecorator = t.getServiceDependencies = t.serviceRegistry = void 0; const i = "di$target", s = "di$dependencies"; t.serviceRegistry = new Map, t.getServiceDependencies = function (e) { return e[s] || [] }, t.createDecorator = function (e) { if (t.serviceRegistry.has(e)) return t.serviceRegistry.get(e); const r = function (e, t, n) { if (3 !== arguments.length) throw new Error("@IServiceName-decorator can only be used to decorate a parameter"); !function (e, t, r) { t[i] === t ? t[s].push({ id: e, index: r }) : (t[s] = [{ id: e, index: r }], t[i] = t) }(r, e, n) }; return r.toString = () => e, t.serviceRegistry.set(e, r), r } }, 97: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.IDecorationService = t.IUnicodeService = t.IOscLinkService = t.IOptionsService = t.ILogService = t.LogLevelEnum = t.IInstantiationService = t.ICharsetService = t.ICoreService = t.ICoreMouseService = t.IBufferService = void 0; const s = i(726); var r; t.IBufferService = (0, s.createDecorator)("BufferService"), t.ICoreMouseService = (0, s.createDecorator)("CoreMouseService"), t.ICoreService = (0, s.createDecorator)("CoreService"), t.ICharsetService = (0, s.createDecorator)("CharsetService"), t.IInstantiationService = (0, s.createDecorator)("InstantiationService"), function (e) { e[e.TRACE = 0] = "TRACE", e[e.DEBUG = 1] = "DEBUG", e[e.INFO = 2] = "INFO", e[e.WARN = 3] = "WARN", e[e.ERROR = 4] = "ERROR", e[e.OFF = 5] = "OFF" }(r || (t.LogLevelEnum = r = {})), t.ILogService = (0, s.createDecorator)("LogService"), t.IOptionsService = (0, s.createDecorator)("OptionsService"), t.IOscLinkService = (0, s.createDecorator)("OscLinkService"), t.IUnicodeService = (0, s.createDecorator)("UnicodeService"), t.IDecorationService = (0, s.createDecorator)("DecorationService") } }, t = {}; function i(s) { var r = t[s]; if (void 0 !== r) return r.exports; var n = t[s] = { exports: {} }; return e[s].call(n.exports, n, n.exports, i), n.exports } var s = {}; return (() => { var e = s; Object.defineProperty(e, "__esModule", { value: !0 }), e.CanvasAddon = void 0; const t = i(345), r = i(859), n = i(776), o = i(949); class a extends r.Disposable { constructor() { super(...arguments), this._onChangeTextureAtlas = this.register(new t.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new t.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event } get textureAtlas() { return this._renderer?.textureAtlas } activate(e) { const i = e._core; if (!e.element) return void this.register(i.onWillOpen((() => this.activate(e)))); this._terminal = e; const s = i.coreService, a = i.optionsService, h = i.screenElement, c = i.linkifier, l = i, d = l._bufferService, _ = l._renderService, u = l._characterJoinerService, f = l._charSizeService, v = l._coreBrowserService, g = l._decorationService, p = l._logService, m = l._themeService; (0, n.setTraceLogger)(p), this._renderer = new o.CanvasRenderer(e, h, c, d, f, a, u, s, v, g, m), this.register((0, t.forwardEvent)(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)), this.register((0, t.forwardEvent)(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)), _.setRenderer(this._renderer), _.handleResize(d.cols, d.rows), this.register((0, r.toDisposable)((() => { _.setRenderer(this._terminal._core._createRenderer()), _.handleResize(e.cols, e.rows), this._renderer?.dispose(), this._renderer = void 0 }))) } clearTextureAtlas() { this._renderer?.clearTextureAtlas() } } e.CanvasAddon = a })(), s })(), e.exports = t() } }, t = {}; function i(s) { var r = t[s]; if (void 0 !== r) return r.exports; var n = t[s] = { id: s, exports: {} }; return e[s].call(n.exports, n, n.exports, i), n.exports } i.n = e => { var t = e && e.__esModule ? () => e.default : () => e; return i.d(t, { a: t }), t }, i.d = (e, t) => { for (var s in t) i.o(t, s) && !i.o(e, s) && Object.defineProperty(e, s, { enumerable: !0, get: t[s] }) }, i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), i.nc = void 0, (() => { "use strict"; var e = i(72), t = i.n(e), s = i(825), r = i.n(s), n = i(659), o = i.n(n), a = i(56), h = i.n(a), c = i(540), l = i.n(c), d = i(113), _ = i.n(d), u = i(100), f = {}; f.styleTagTransform = _(), f.setAttributes = h(), f.insert = o().bind(null, "head"), f.domAPI = r(), f.insertStyleElement = l(), t()(u.A, f), u.A && u.A.locals && u.A.locals; var v = i(856), g = i(616), p = i(180), m = i(880), C = i(544), S = i(832), b = i(372); class w { constructor(e, t) { this.element = e, this.ping = t.ping, this.websocket_url = e.dataset.sessionWebsocketUrl, this.instance = void 0; const i = e.dataset.fontSize; this.terminal = new v.Terminal({ allowProposedApi: !0, fontSize: i, scrollback: 0, fontFamily: "'Roboto Mono', Monaco, 'Courier New', monospace" }), this.fitAddon = new g.FitAddon, this.terminal.loadAddon(this.fitAddon), this.webglAddon = new p.WebglAddon, this.terminal.loadAddon(this.webglAddon), this.canvasAddon = new m.CanvasAddon, this.terminal.loadAddon(this.canvasAddon), this.unicode11Addon = new C.Unicode11Addon, this.terminal.loadAddon(this.unicode11Addon), this.weblinksAddon = new S.WebLinksAddon, this.terminal.loadAddon(this.weblinksAddon), this.terminal.unicode.activeVersion = "11"; const s = new b.ClipboardAddon; this.terminal.loadAddon(s), this.terminal.open(e), this.socket = null, this.bufferedBytes = 0, this.refreshBytes = 0, this.size = null, this.terminal.element.querySelector(".xterm-screen").addEventListener("blur", (e => { this.onBlur() }), !0), this.terminal.element.querySelector(".xterm-screen").addEventListener("focus", (e => { this.onFocus() }), !0), this.terminal.onResize((e => { this.size = { width: e.cols, height: e.rows }, this.sendSize() })), this.terminal.onData((e => { this.socket.send(JSON.stringify(["stdin", e])) })), window.onresize = () => { this.fit() } } sendSize() { if (this.size) { const e = JSON.stringify(["resize", this.size]); this.socket && this.socket.send(e) } } sendPing() { const e = (new Date).getTime(), t = JSON.stringify(["ping", "" + e]); this.socket && this.socket.send(t) } onPong(e) { const t = (new Date).getTime() - parseInt(e); console.log("ping=" + t + "ms") } onFocus() { const e = JSON.stringify(["focus"]); this.socket && this.socket.send(e) } onBlur() { const e = JSON.stringify(["blur"]); this.socket && this.socket.send(e) } fit() { this.fitAddon.fit(this.element) } async connect() { this.ping && await fetch(this.ping, { method: "GET", mode: "no-cors" }), this.fit(); const e = this.fitAddon.proposeDimensions(); this.socket = new WebSocket(this.websocket_url + "?width=" + e.cols + "&height=" + e.rows), this.socket.binaryType = "arraybuffer", this.socket.addEventListener("open", (e => { this.element.classList.add("-connected"), this.fit(), this.sendSize(), setTimeout((() => { this.sendPing() }), 3), document.querySelector("body").classList.add("-loaded") })), this.socket.addEventListener("close", (e => { console.log("CLOSED"), document.querySelector("body").classList.add("-closed") })), this.socket.addEventListener("message", (e => { if ("string" == typeof e.data) { const t = JSON.parse(e.data), i = t[0], s = t[1]; switch (i) { case "log": console.log("LOG", s); break; case "pong": this.onPong(s); break; case "instance_id": this.instance = s; break; case "open_url": const e = s.url, t = s.new_tab; window.open(e, t ? "_blank" : "_self"); break; case "deliver_file_start": const i = s, r = this.instance ? `?instance=${this.instance}` : "", n = `${window.location.origin}/download/${i}${r}`; window.open(n, "_blank") } } else { const t = new Uint8Array(e.data); this.bufferedBytes += t.length, this.refreshBytes += t.length, this.terminal.write(t, (() => { this.bufferedBytes -= t.length })), t.length > 10 && document.querySelector("body").classList.add("-first-byte") } })) } } window.onload = e => { const t = document.querySelectorAll(".textual-terminal"), i = new URLSearchParams(window.location.search), s = i.get("delay"), r = i.get("ping"); s && document.querySelector("#start").classList.add("-delay"), t.forEach((e => { const t = new w(e, { ping: r }); t.fit(), s || t.connect() })) } })() })(); \ No newline at end of file +(() => { + var e = { + 56: (e, t, i) => { + "use strict"; + e.exports = function(e) { + var t = i.nc; + t && e.setAttribute("nonce", t) + } + }, + 72: e => { + "use strict"; + var t = []; + + function i(e) { + for (var i = -1, s = 0; s < t.length; s++) + if (t[s].identifier === e) { + i = s; + break + } return i + } + + function s(e, s) { + for (var n = {}, o = [], a = 0; a < e.length; a++) { + var h = e[a], + c = s.base ? h[0] + s.base : h[0], + l = n[c] || 0, + d = "".concat(c, " ").concat(l); + n[c] = l + 1; + var _ = i(d), + u = { + css: h[1], + media: h[2], + sourceMap: h[3], + supports: h[4], + layer: h[5] + }; + if (-1 !== _) t[_].references++, t[_].updater(u); + else { + var f = r(u, s); + s.byIndex = a, t.splice(a, 0, { + identifier: d, + updater: f, + references: 1 + }) + } + o.push(d) + } + return o + } + + function r(e, t) { + var i = t.domAPI(t); + return i.update(e), + function(t) { + if (t) { + if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap && t.supports === e.supports && t.layer === e.layer) return; + i.update(e = t) + } else i.remove() + } + } + e.exports = function(e, r) { + var n = s(e = e || [], r = r || {}); + return function(e) { + e = e || []; + for (var o = 0; o < n.length; o++) { + var a = i(n[o]); + t[a].references-- + } + for (var h = s(e, r), c = 0; c < n.length; c++) { + var l = i(n[c]); + 0 === t[l].references && (t[l].updater(), t.splice(l, 1)) + } + n = h + } + } + }, + 100: (e, t, i) => { + "use strict"; + i.d(t, { + A: () => a + }); + var s = i(601), + r = i.n(s), + n = i(314), + o = i.n(n)()(r()); + o.push([e.id, "h1{color:#fff;background-color:#000}body{margin:0;padding:0}.textual-terminal{width:100vw;height:100vh}", ""]); + const a = o + }, + 113: e => { + "use strict"; + e.exports = function(e, t) { + if (t.styleSheet) t.styleSheet.cssText = e; + else { + for (; t.firstChild;) t.removeChild(t.firstChild); + t.appendChild(document.createTextNode(e)) + } + } + }, + 180: e => { + var t; + self, t = () => (() => { + "use strict"; + var e = { + 965: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.GlyphRenderer = void 0; + const s = i(374), + r = i(509), + n = i(855), + o = i(859), + a = i(381), + h = 11, + c = h * Float32Array.BYTES_PER_ELEMENT; + let l, d = 0, + _ = 0, + u = 0; + class f extends o.Disposable { + constructor(e, t, i, n) { + super(), this._terminal = e, this._gl = t, this._dimensions = i, this._optionsService = n, this._activeBuffer = 0, this._vertices = { + count: 0, + attributes: new Float32Array(0), + attributesBuffers: [new Float32Array(0), new Float32Array(0)] + }; + const h = this._gl; + void 0 === r.TextureAtlas.maxAtlasPages && (r.TextureAtlas.maxAtlasPages = Math.min(32, (0, s.throwIfFalsy)(h.getParameter(h.MAX_TEXTURE_IMAGE_UNITS))), r.TextureAtlas.maxTextureSize = (0, s.throwIfFalsy)(h.getParameter(h.MAX_TEXTURE_SIZE))), this._program = (0, s.throwIfFalsy)((0, a.createProgram)(h, "#version 300 es\nlayout (location = 0) in vec2 a_unitquad;\nlayout (location = 1) in vec2 a_cellpos;\nlayout (location = 2) in vec2 a_offset;\nlayout (location = 3) in vec2 a_size;\nlayout (location = 4) in float a_texpage;\nlayout (location = 5) in vec2 a_texcoord;\nlayout (location = 6) in vec2 a_texsize;\n\nuniform mat4 u_projection;\nuniform vec2 u_resolution;\n\nout vec2 v_texcoord;\nflat out int v_texpage;\n\nvoid main() {\n vec2 zeroToOne = (a_offset / u_resolution) + a_cellpos + (a_unitquad * a_size);\n gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0);\n v_texpage = int(a_texpage);\n v_texcoord = a_texcoord + a_unitquad * a_texsize;\n}", function(e) { + let t = ""; + for (let i = 1; i < e; i++) t += ` else if (v_texpage == ${i}) { outColor = texture(u_texture[${i}], v_texcoord); }`; + return `#version 300 es\nprecision lowp float;\n\nin vec2 v_texcoord;\nflat in int v_texpage;\n\nuniform sampler2D u_texture[${e}];\n\nout vec4 outColor;\n\nvoid main() {\n if (v_texpage == 0) {\n outColor = texture(u_texture[0], v_texcoord);\n } ${t}\n}` + }(r.TextureAtlas.maxAtlasPages))), this.register((0, o.toDisposable)((() => h.deleteProgram(this._program)))), this._projectionLocation = (0, s.throwIfFalsy)(h.getUniformLocation(this._program, "u_projection")), this._resolutionLocation = (0, s.throwIfFalsy)(h.getUniformLocation(this._program, "u_resolution")), this._textureLocation = (0, s.throwIfFalsy)(h.getUniformLocation(this._program, "u_texture")), this._vertexArrayObject = h.createVertexArray(), h.bindVertexArray(this._vertexArrayObject); + const l = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]), + d = h.createBuffer(); + this.register((0, o.toDisposable)((() => h.deleteBuffer(d)))), h.bindBuffer(h.ARRAY_BUFFER, d), h.bufferData(h.ARRAY_BUFFER, l, h.STATIC_DRAW), h.enableVertexAttribArray(0), h.vertexAttribPointer(0, 2, this._gl.FLOAT, !1, 0, 0); + const _ = new Uint8Array([0, 1, 2, 3]), + u = h.createBuffer(); + this.register((0, o.toDisposable)((() => h.deleteBuffer(u)))), h.bindBuffer(h.ELEMENT_ARRAY_BUFFER, u), h.bufferData(h.ELEMENT_ARRAY_BUFFER, _, h.STATIC_DRAW), this._attributesBuffer = (0, s.throwIfFalsy)(h.createBuffer()), this.register((0, o.toDisposable)((() => h.deleteBuffer(this._attributesBuffer)))), h.bindBuffer(h.ARRAY_BUFFER, this._attributesBuffer), h.enableVertexAttribArray(2), h.vertexAttribPointer(2, 2, h.FLOAT, !1, c, 0), h.vertexAttribDivisor(2, 1), h.enableVertexAttribArray(3), h.vertexAttribPointer(3, 2, h.FLOAT, !1, c, 2 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(3, 1), h.enableVertexAttribArray(4), h.vertexAttribPointer(4, 1, h.FLOAT, !1, c, 4 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(4, 1), h.enableVertexAttribArray(5), h.vertexAttribPointer(5, 2, h.FLOAT, !1, c, 5 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(5, 1), h.enableVertexAttribArray(6), h.vertexAttribPointer(6, 2, h.FLOAT, !1, c, 7 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(6, 1), h.enableVertexAttribArray(1), h.vertexAttribPointer(1, 2, h.FLOAT, !1, c, 9 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(1, 1), h.useProgram(this._program); + const f = new Int32Array(r.TextureAtlas.maxAtlasPages); + for (let e = 0; e < r.TextureAtlas.maxAtlasPages; e++) f[e] = e; + h.uniform1iv(this._textureLocation, f), h.uniformMatrix4fv(this._projectionLocation, !1, a.PROJECTION_MATRIX), this._atlasTextures = []; + for (let e = 0; e < r.TextureAtlas.maxAtlasPages; e++) { + const t = new a.GLTexture((0, s.throwIfFalsy)(h.createTexture())); + this.register((0, o.toDisposable)((() => h.deleteTexture(t.texture)))), h.activeTexture(h.TEXTURE0 + e), h.bindTexture(h.TEXTURE_2D, t.texture), h.texParameteri(h.TEXTURE_2D, h.TEXTURE_WRAP_S, h.CLAMP_TO_EDGE), h.texParameteri(h.TEXTURE_2D, h.TEXTURE_WRAP_T, h.CLAMP_TO_EDGE), h.texImage2D(h.TEXTURE_2D, 0, h.RGBA, 1, 1, 0, h.RGBA, h.UNSIGNED_BYTE, new Uint8Array([255, 0, 0, 255])), this._atlasTextures[e] = t + } + h.enable(h.BLEND), h.blendFunc(h.SRC_ALPHA, h.ONE_MINUS_SRC_ALPHA), this.handleResize() + } + beginFrame() { + return !this._atlas || this._atlas.beginFrame() + } + updateCell(e, t, i, s, r, n, o, a, h) { + this._updateCell(this._vertices.attributes, e, t, i, s, r, n, o, a, h) + } + _updateCell(e, t, i, r, o, a, c, f, v, g) { + d = (i * this._terminal.cols + t) * h, r !== n.NULL_CELL_CODE && void 0 !== r ? this._atlas && (l = f && f.length > 1 ? this._atlas.getRasterizedGlyphCombinedChar(f, o, a, c, !1) : this._atlas.getRasterizedGlyph(r, o, a, c, !1), _ = Math.floor((this._dimensions.device.cell.width - this._dimensions.device.char.width) / 2), o !== g && l.offset.x > _ ? (u = l.offset.x - _, e[d] = -(l.offset.x - u) + this._dimensions.device.char.left, e[d + 1] = -l.offset.y + this._dimensions.device.char.top, e[d + 2] = (l.size.x - u) / this._dimensions.device.canvas.width, e[d + 3] = l.size.y / this._dimensions.device.canvas.height, e[d + 4] = l.texturePage, e[d + 5] = l.texturePositionClipSpace.x + u / this._atlas.pages[l.texturePage].canvas.width, e[d + 6] = l.texturePositionClipSpace.y, e[d + 7] = l.sizeClipSpace.x - u / this._atlas.pages[l.texturePage].canvas.width, e[d + 8] = l.sizeClipSpace.y) : (e[d] = -l.offset.x + this._dimensions.device.char.left, e[d + 1] = -l.offset.y + this._dimensions.device.char.top, e[d + 2] = l.size.x / this._dimensions.device.canvas.width, e[d + 3] = l.size.y / this._dimensions.device.canvas.height, e[d + 4] = l.texturePage, e[d + 5] = l.texturePositionClipSpace.x, e[d + 6] = l.texturePositionClipSpace.y, e[d + 7] = l.sizeClipSpace.x, e[d + 8] = l.sizeClipSpace.y), this._optionsService.rawOptions.rescaleOverlappingGlyphs && (0, s.allowRescaling)(r, v, l.size.x, this._dimensions.device.cell.width) && (e[d + 2] = (this._dimensions.device.cell.width - 1) / this._dimensions.device.canvas.width)) : e.fill(0, d, d + h - 1 - 2) + } + clear() { + const e = this._terminal, + t = e.cols * e.rows * h; + this._vertices.count !== t ? this._vertices.attributes = new Float32Array(t) : this._vertices.attributes.fill(0); + let i = 0; + for (; i < this._vertices.attributesBuffers.length; i++) this._vertices.count !== t ? this._vertices.attributesBuffers[i] = new Float32Array(t) : this._vertices.attributesBuffers[i].fill(0); + this._vertices.count = t, i = 0; + for (let t = 0; t < e.rows; t++) + for (let s = 0; s < e.cols; s++) this._vertices.attributes[i + 9] = s / e.cols, this._vertices.attributes[i + 10] = t / e.rows, i += h + } + handleResize() { + const e = this._gl; + e.useProgram(this._program), e.viewport(0, 0, e.canvas.width, e.canvas.height), e.uniform2f(this._resolutionLocation, e.canvas.width, e.canvas.height), this.clear() + } + render(e) { + if (!this._atlas) return; + const t = this._gl; + t.useProgram(this._program), t.bindVertexArray(this._vertexArrayObject), this._activeBuffer = (this._activeBuffer + 1) % 2; + const i = this._vertices.attributesBuffers[this._activeBuffer]; + let s = 0; + for (let t = 0; t < e.lineLengths.length; t++) { + const r = t * this._terminal.cols * h, + n = this._vertices.attributes.subarray(r, r + e.lineLengths[t] * h); + i.set(n, s), s += n.length + } + t.bindBuffer(t.ARRAY_BUFFER, this._attributesBuffer), t.bufferData(t.ARRAY_BUFFER, i.subarray(0, s), t.STREAM_DRAW); + for (let e = 0; e < this._atlas.pages.length; e++) this._atlas.pages[e].version !== this._atlasTextures[e].version && this._bindAtlasPageTexture(t, this._atlas, e); + t.drawElementsInstanced(t.TRIANGLE_STRIP, 4, t.UNSIGNED_BYTE, 0, s / h) + } + setAtlas(e) { + this._atlas = e; + for (const e of this._atlasTextures) e.version = -1 + } + _bindAtlasPageTexture(e, t, i) { + e.activeTexture(e.TEXTURE0 + i), e.bindTexture(e.TEXTURE_2D, this._atlasTextures[i].texture), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, t.pages[i].canvas), e.generateMipmap(e.TEXTURE_2D), this._atlasTextures[i].version = t.pages[i].version + } + setDimensions(e) { + this._dimensions = e + } + } + t.GlyphRenderer = f + }, + 742: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.RectangleRenderer = void 0; + const s = i(374), + r = i(859), + n = i(310), + o = i(381), + a = 8 * Float32Array.BYTES_PER_ELEMENT; + class h { + constructor() { + this.attributes = new Float32Array(160), this.count = 0 + } + } + let c = 0, + l = 0, + d = 0, + _ = 0, + u = 0, + f = 0, + v = 0; + class g extends r.Disposable { + constructor(e, t, i, n) { + super(), this._terminal = e, this._gl = t, this._dimensions = i, this._themeService = n, this._vertices = new h, this._verticesCursor = new h; + const c = this._gl; + this._program = (0, s.throwIfFalsy)((0, o.createProgram)(c, "#version 300 es\nlayout (location = 0) in vec2 a_position;\nlayout (location = 1) in vec2 a_size;\nlayout (location = 2) in vec4 a_color;\nlayout (location = 3) in vec2 a_unitquad;\n\nuniform mat4 u_projection;\n\nout vec4 v_color;\n\nvoid main() {\n vec2 zeroToOne = a_position + (a_unitquad * a_size);\n gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0);\n v_color = a_color;\n}", "#version 300 es\nprecision lowp float;\n\nin vec4 v_color;\n\nout vec4 outColor;\n\nvoid main() {\n outColor = v_color;\n}")), this.register((0, r.toDisposable)((() => c.deleteProgram(this._program)))), this._projectionLocation = (0, s.throwIfFalsy)(c.getUniformLocation(this._program, "u_projection")), this._vertexArrayObject = c.createVertexArray(), c.bindVertexArray(this._vertexArrayObject); + const l = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]), + d = c.createBuffer(); + this.register((0, r.toDisposable)((() => c.deleteBuffer(d)))), c.bindBuffer(c.ARRAY_BUFFER, d), c.bufferData(c.ARRAY_BUFFER, l, c.STATIC_DRAW), c.enableVertexAttribArray(3), c.vertexAttribPointer(3, 2, this._gl.FLOAT, !1, 0, 0); + const _ = new Uint8Array([0, 1, 2, 3]), + u = c.createBuffer(); + this.register((0, r.toDisposable)((() => c.deleteBuffer(u)))), c.bindBuffer(c.ELEMENT_ARRAY_BUFFER, u), c.bufferData(c.ELEMENT_ARRAY_BUFFER, _, c.STATIC_DRAW), this._attributesBuffer = (0, s.throwIfFalsy)(c.createBuffer()), this.register((0, r.toDisposable)((() => c.deleteBuffer(this._attributesBuffer)))), c.bindBuffer(c.ARRAY_BUFFER, this._attributesBuffer), c.enableVertexAttribArray(0), c.vertexAttribPointer(0, 2, c.FLOAT, !1, a, 0), c.vertexAttribDivisor(0, 1), c.enableVertexAttribArray(1), c.vertexAttribPointer(1, 2, c.FLOAT, !1, a, 2 * Float32Array.BYTES_PER_ELEMENT), c.vertexAttribDivisor(1, 1), c.enableVertexAttribArray(2), c.vertexAttribPointer(2, 4, c.FLOAT, !1, a, 4 * Float32Array.BYTES_PER_ELEMENT), c.vertexAttribDivisor(2, 1), this._updateCachedColors(n.colors), this.register(this._themeService.onChangeColors((e => { + this._updateCachedColors(e), this._updateViewportRectangle() + }))) + } + renderBackgrounds() { + this._renderVertices(this._vertices) + } + renderCursor() { + this._renderVertices(this._verticesCursor) + } + _renderVertices(e) { + const t = this._gl; + t.useProgram(this._program), t.bindVertexArray(this._vertexArrayObject), t.uniformMatrix4fv(this._projectionLocation, !1, o.PROJECTION_MATRIX), t.bindBuffer(t.ARRAY_BUFFER, this._attributesBuffer), t.bufferData(t.ARRAY_BUFFER, e.attributes, t.DYNAMIC_DRAW), t.drawElementsInstanced(this._gl.TRIANGLE_STRIP, 4, t.UNSIGNED_BYTE, 0, e.count) + } + handleResize() { + this._updateViewportRectangle() + } + setDimensions(e) { + this._dimensions = e + } + _updateCachedColors(e) { + this._bgFloat = this._colorToFloat32Array(e.background), this._cursorFloat = this._colorToFloat32Array(e.cursor) + } + _updateViewportRectangle() { + this._addRectangleFloat(this._vertices.attributes, 0, 0, 0, this._terminal.cols * this._dimensions.device.cell.width, this._terminal.rows * this._dimensions.device.cell.height, this._bgFloat) + } + updateBackgrounds(e) { + const t = this._terminal, + i = this._vertices; + let s, r, o, a, h, c, l, d, _, u, f, v = 1; + for (s = 0; s < t.rows; s++) { + for (o = -1, a = 0, h = 0, c = !1, r = 0; r < t.cols; r++) l = (s * t.cols + r) * n.RENDER_MODEL_INDICIES_PER_CELL, d = e.cells[l + n.RENDER_MODEL_BG_OFFSET], _ = e.cells[l + n.RENDER_MODEL_FG_OFFSET], u = !!(67108864 & _), (d !== a || _ !== h && (c || u)) && ((0 !== a || c && 0 !== h) && (f = 8 * v++, this._updateRectangle(i, f, h, a, o, r, s)), o = r, a = d, h = _, c = u); + (0 !== a || c && 0 !== h) && (f = 8 * v++, this._updateRectangle(i, f, h, a, o, t.cols, s)) + } + i.count = v + } + updateCursor(e) { + const t = this._verticesCursor, + i = e.cursor; + if (!i || "block" === i.style) return void(t.count = 0); + let s, r = 0; + "bar" !== i.style && "outline" !== i.style || (s = 8 * r++, this._addRectangleFloat(t.attributes, s, i.x * this._dimensions.device.cell.width, i.y * this._dimensions.device.cell.height, "bar" === i.style ? i.dpr * i.cursorWidth : i.dpr, this._dimensions.device.cell.height, this._cursorFloat)), "underline" !== i.style && "outline" !== i.style || (s = 8 * r++, this._addRectangleFloat(t.attributes, s, i.x * this._dimensions.device.cell.width, (i.y + 1) * this._dimensions.device.cell.height - i.dpr, i.width * this._dimensions.device.cell.width, i.dpr, this._cursorFloat)), "outline" === i.style && (s = 8 * r++, this._addRectangleFloat(t.attributes, s, i.x * this._dimensions.device.cell.width, i.y * this._dimensions.device.cell.height, i.width * this._dimensions.device.cell.width, i.dpr, this._cursorFloat), s = 8 * r++, this._addRectangleFloat(t.attributes, s, (i.x + i.width) * this._dimensions.device.cell.width - i.dpr, i.y * this._dimensions.device.cell.height, i.dpr, this._dimensions.device.cell.height, this._cursorFloat)), t.count = r + } + _updateRectangle(e, t, i, s, r, n, a) { + if (67108864 & i) switch (50331648 & i) { + case 16777216: + case 33554432: + c = this._themeService.colors.ansi[255 & i].rgba; + break; + case 50331648: + c = (16777215 & i) << 8; + break; + default: + c = this._themeService.colors.foreground.rgba + } else switch (50331648 & s) { + case 16777216: + case 33554432: + c = this._themeService.colors.ansi[255 & s].rgba; + break; + case 50331648: + c = (16777215 & s) << 8; + break; + default: + c = this._themeService.colors.background.rgba + } + e.attributes.length < t + 4 && (e.attributes = (0, o.expandFloat32Array)(e.attributes, this._terminal.rows * this._terminal.cols * 8)), l = r * this._dimensions.device.cell.width, d = a * this._dimensions.device.cell.height, _ = (c >> 24 & 255) / 255, u = (c >> 16 & 255) / 255, f = (c >> 8 & 255) / 255, v = 1, this._addRectangle(e.attributes, t, l, d, (n - r) * this._dimensions.device.cell.width, this._dimensions.device.cell.height, _, u, f, v) + } + _addRectangle(e, t, i, s, r, n, o, a, h, c) { + e[t] = i / this._dimensions.device.canvas.width, e[t + 1] = s / this._dimensions.device.canvas.height, e[t + 2] = r / this._dimensions.device.canvas.width, e[t + 3] = n / this._dimensions.device.canvas.height, e[t + 4] = o, e[t + 5] = a, e[t + 6] = h, e[t + 7] = c + } + _addRectangleFloat(e, t, i, s, r, n, o) { + e[t] = i / this._dimensions.device.canvas.width, e[t + 1] = s / this._dimensions.device.canvas.height, e[t + 2] = r / this._dimensions.device.canvas.width, e[t + 3] = n / this._dimensions.device.canvas.height, e[t + 4] = o[0], e[t + 5] = o[1], e[t + 6] = o[2], e[t + 7] = o[3] + } + _colorToFloat32Array(e) { + return new Float32Array([(e.rgba >> 24 & 255) / 255, (e.rgba >> 16 & 255) / 255, (e.rgba >> 8 & 255) / 255, (255 & e.rgba) / 255]) + } + } + t.RectangleRenderer = g + }, + 310: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.RenderModel = t.COMBINED_CHAR_BIT_MASK = t.RENDER_MODEL_EXT_OFFSET = t.RENDER_MODEL_FG_OFFSET = t.RENDER_MODEL_BG_OFFSET = t.RENDER_MODEL_INDICIES_PER_CELL = void 0; + const s = i(296); + t.RENDER_MODEL_INDICIES_PER_CELL = 4, t.RENDER_MODEL_BG_OFFSET = 1, t.RENDER_MODEL_FG_OFFSET = 2, t.RENDER_MODEL_EXT_OFFSET = 3, t.COMBINED_CHAR_BIT_MASK = 2147483648, t.RenderModel = class { + constructor() { + this.cells = new Uint32Array(0), this.lineLengths = new Uint32Array(0), this.selection = (0, s.createSelectionRenderModel)() + } + resize(e, i) { + const s = e * i * t.RENDER_MODEL_INDICIES_PER_CELL; + s !== this.cells.length && (this.cells = new Uint32Array(s), this.lineLengths = new Uint32Array(i)) + } + clear() { + this.cells.fill(0, 0), this.lineLengths.fill(0, 0) + } + } + }, + 666: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.JoinedCellData = t.WebglRenderer = void 0; + const s = i(820), + r = i(274), + n = i(627), + o = i(457), + a = i(56), + h = i(374), + c = i(345), + l = i(859), + d = i(147), + _ = i(782), + u = i(855), + f = i(965), + v = i(742), + g = i(310), + p = i(733); + class m extends l.Disposable { + constructor(e, t, i, o, d, u, f, v, m) { + super(), this._terminal = e, this._characterJoinerService = t, this._charSizeService = i, this._coreBrowserService = o, this._coreService = d, this._decorationService = u, this._optionsService = f, this._themeService = v, this._cursorBlinkStateManager = new l.MutableDisposable, this._charAtlasDisposable = this.register(new l.MutableDisposable), this._observerDisposable = this.register(new l.MutableDisposable), this._model = new g.RenderModel, this._workCell = new _.CellData, this._workCell2 = new _.CellData, this._rectangleRenderer = this.register(new l.MutableDisposable), this._glyphRenderer = this.register(new l.MutableDisposable), this._onChangeTextureAtlas = this.register(new c.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new c.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = this.register(new c.EventEmitter), this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._onRequestRedraw = this.register(new c.EventEmitter), this.onRequestRedraw = this._onRequestRedraw.event, this._onContextLoss = this.register(new c.EventEmitter), this.onContextLoss = this._onContextLoss.event, this.register(this._themeService.onChangeColors((() => this._handleColorChange()))), this._cellColorResolver = new r.CellColorResolver(this._terminal, this._optionsService, this._model.selection, this._decorationService, this._coreBrowserService, this._themeService), this._core = this._terminal._core, this._renderLayers = [new p.LinkRenderLayer(this._core.screenElement, 2, this._terminal, this._core.linkifier, this._coreBrowserService, f, this._themeService)], this.dimensions = (0, h.createRenderDimensions)(), this._devicePixelRatio = this._coreBrowserService.dpr, this._updateDimensions(), this._updateCursorBlink(), this.register(f.onOptionChange((() => this._handleOptionsChanged()))), this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"); + const C = { + antialias: !1, + depth: !1, + preserveDrawingBuffer: m + }; + if (this._gl = this._canvas.getContext("webgl2", C), !this._gl) throw new Error("WebGL2 not supported " + this._gl); + this.register((0, s.addDisposableDomListener)(this._canvas, "webglcontextlost", (e => { + console.log("webglcontextlost event received"), e.preventDefault(), this._contextRestorationTimeout = setTimeout((() => { + this._contextRestorationTimeout = void 0, console.warn("webgl context not restored; firing onContextLoss"), this._onContextLoss.fire(e) + }), 3e3) + }))), this.register((0, s.addDisposableDomListener)(this._canvas, "webglcontextrestored", (e => { + console.warn("webglcontextrestored event received"), clearTimeout(this._contextRestorationTimeout), this._contextRestorationTimeout = void 0, (0, n.removeTerminalFromCache)(this._terminal), this._initializeWebGLState(), this._requestRedrawViewport() + }))), this._observerDisposable.value = (0, a.observeDevicePixelDimensions)(this._canvas, this._coreBrowserService.window, ((e, t) => this._setCanvasDevicePixelDimensions(e, t))), this.register(this._coreBrowserService.onWindowChange((e => { + this._observerDisposable.value = (0, a.observeDevicePixelDimensions)(this._canvas, e, ((e, t) => this._setCanvasDevicePixelDimensions(e, t))) + }))), this._core.screenElement.appendChild(this._canvas), [this._rectangleRenderer.value, this._glyphRenderer.value] = this._initializeWebGLState(), this._isAttached = this._coreBrowserService.window.document.body.contains(this._core.screenElement), this.register((0, l.toDisposable)((() => { + for (const e of this._renderLayers) e.dispose(); + this._canvas.parentElement?.removeChild(this._canvas), (0, n.removeTerminalFromCache)(this._terminal) + }))) + } + get textureAtlas() { + return this._charAtlas?.pages[0].canvas + } + _handleColorChange() { + this._refreshCharAtlas(), this._clearModel(!0) + } + handleDevicePixelRatioChange() { + this._devicePixelRatio !== this._coreBrowserService.dpr && (this._devicePixelRatio = this._coreBrowserService.dpr, this.handleResize(this._terminal.cols, this._terminal.rows)) + } + handleResize(e, t) { + this._updateDimensions(), this._model.resize(this._terminal.cols, this._terminal.rows); + for (const e of this._renderLayers) e.resize(this._terminal, this.dimensions); + this._canvas.width = this.dimensions.device.canvas.width, this._canvas.height = this.dimensions.device.canvas.height, this._canvas.style.width = `${this.dimensions.css.canvas.width}px`, this._canvas.style.height = `${this.dimensions.css.canvas.height}px`, this._core.screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._core.screenElement.style.height = `${this.dimensions.css.canvas.height}px`, this._rectangleRenderer.value?.setDimensions(this.dimensions), this._rectangleRenderer.value?.handleResize(), this._glyphRenderer.value?.setDimensions(this.dimensions), this._glyphRenderer.value?.handleResize(), this._refreshCharAtlas(), this._clearModel(!1) + } + handleCharSizeChanged() { + this.handleResize(this._terminal.cols, this._terminal.rows) + } + handleBlur() { + for (const e of this._renderLayers) e.handleBlur(this._terminal); + this._cursorBlinkStateManager.value?.pause(), this._requestRedrawViewport() + } + handleFocus() { + for (const e of this._renderLayers) e.handleFocus(this._terminal); + this._cursorBlinkStateManager.value?.resume(), this._requestRedrawViewport() + } + handleSelectionChanged(e, t, i) { + for (const s of this._renderLayers) s.handleSelectionChanged(this._terminal, e, t, i); + this._model.selection.update(this._core, e, t, i), this._requestRedrawViewport() + } + handleCursorMove() { + for (const e of this._renderLayers) e.handleCursorMove(this._terminal); + this._cursorBlinkStateManager.value?.restartBlinkAnimation() + } + _handleOptionsChanged() { + this._updateDimensions(), this._refreshCharAtlas(), this._updateCursorBlink() + } + _initializeWebGLState() { + return this._rectangleRenderer.value = new v.RectangleRenderer(this._terminal, this._gl, this.dimensions, this._themeService), this._glyphRenderer.value = new f.GlyphRenderer(this._terminal, this._gl, this.dimensions, this._optionsService), this.handleCharSizeChanged(), [this._rectangleRenderer.value, this._glyphRenderer.value] + } + _refreshCharAtlas() { + if (this.dimensions.device.char.width <= 0 && this.dimensions.device.char.height <= 0) return void(this._isAttached = !1); + const e = (0, n.acquireTextureAtlas)(this._terminal, this._optionsService.rawOptions, this._themeService.colors, this.dimensions.device.cell.width, this.dimensions.device.cell.height, this.dimensions.device.char.width, this.dimensions.device.char.height, this._coreBrowserService.dpr); + this._charAtlas !== e && (this._onChangeTextureAtlas.fire(e.pages[0].canvas), this._charAtlasDisposable.value = (0, l.getDisposeArrayDisposable)([(0, c.forwardEvent)(e.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas), (0, c.forwardEvent)(e.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas)])), this._charAtlas = e, this._charAtlas.warmUp(), this._glyphRenderer.value?.setAtlas(this._charAtlas) + } + _clearModel(e) { + this._model.clear(), e && this._glyphRenderer.value?.clear() + } + clearTextureAtlas() { + this._charAtlas?.clearTexture(), this._clearModel(!0), this._requestRedrawViewport() + } + clear() { + this._clearModel(!0); + for (const e of this._renderLayers) e.reset(this._terminal); + this._cursorBlinkStateManager.value?.restartBlinkAnimation(), this._updateCursorBlink() + } + registerCharacterJoiner(e) { + return -1 + } + deregisterCharacterJoiner(e) { + return !1 + } + renderRows(e, t) { + if (!this._isAttached) { + if (!(this._coreBrowserService.window.document.body.contains(this._core.screenElement) && this._charSizeService.width && this._charSizeService.height)) return; + this._updateDimensions(), this._refreshCharAtlas(), this._isAttached = !0 + } + for (const i of this._renderLayers) i.handleGridChanged(this._terminal, e, t); + this._glyphRenderer.value && this._rectangleRenderer.value && (this._glyphRenderer.value.beginFrame() ? (this._clearModel(!0), this._updateModel(0, this._terminal.rows - 1)) : this._updateModel(e, t), this._rectangleRenderer.value.renderBackgrounds(), this._glyphRenderer.value.render(this._model), this._cursorBlinkStateManager.value && !this._cursorBlinkStateManager.value.isCursorVisible || this._rectangleRenderer.value.renderCursor()) + } + _updateCursorBlink() { + this._terminal.options.cursorBlink ? this._cursorBlinkStateManager.value = new o.CursorBlinkStateManager((() => { + this._requestRedrawCursor() + }), this._coreBrowserService) : this._cursorBlinkStateManager.clear(), this._requestRedrawCursor() + } + _updateModel(e, t) { + const i = this._core; + let s, r, n, o, a, h, c, l, d, _, f, v, p, m, b = this._workCell; + e = S(e, i.rows - 1, 0), t = S(t, i.rows - 1, 0); + const w = this._terminal.buffer.active.baseY + this._terminal.buffer.active.cursorY, + y = w - i.buffer.ydisp, + L = Math.min(this._terminal.buffer.active.cursorX, i.cols - 1); + let x = -1; + const E = this._coreService.isCursorInitialized && !this._coreService.isCursorHidden && (!this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isCursorVisible); + this._model.cursor = void 0; + let R = !1; + for (r = e; r <= t; r++) + for (n = r + i.buffer.ydisp, o = i.buffer.lines.get(n), this._model.lineLengths[r] = 0, a = this._characterJoinerService.getJoinedCharacters(n), p = 0; p < i.cols; p++) + if (s = this._cellColorResolver.result.bg, o.loadCell(p, b), 0 === p && (s = this._cellColorResolver.result.bg), h = !1, c = p, a.length > 0 && p === a[0][0] && (h = !0, l = a.shift(), b = new C(b, o.translateToString(!0, l[0], l[1]), l[1] - l[0]), c = l[1] - 1), d = b.getChars(), _ = b.getCode(), v = (r * i.cols + p) * g.RENDER_MODEL_INDICIES_PER_CELL, this._cellColorResolver.resolve(b, p, n, this.dimensions.device.cell.width), E && n === w && (p === L && (this._model.cursor = { + x: L, + y, + width: b.getWidth(), + style: this._coreBrowserService.isFocused ? i.options.cursorStyle || "block" : i.options.cursorInactiveStyle, + cursorWidth: i.options.cursorWidth, + dpr: this._devicePixelRatio + }, x = L + b.getWidth() - 1), p >= L && p <= x && (this._coreBrowserService.isFocused && "block" === (i.options.cursorStyle || "block") || !1 === this._coreBrowserService.isFocused && "block" === i.options.cursorInactiveStyle) && (this._cellColorResolver.result.fg = 50331648 | this._themeService.colors.cursorAccent.rgba >> 8 & 16777215, this._cellColorResolver.result.bg = 50331648 | this._themeService.colors.cursor.rgba >> 8 & 16777215)), _ !== u.NULL_CELL_CODE && (this._model.lineLengths[r] = p + 1), (this._model.cells[v] !== _ || this._model.cells[v + g.RENDER_MODEL_BG_OFFSET] !== this._cellColorResolver.result.bg || this._model.cells[v + g.RENDER_MODEL_FG_OFFSET] !== this._cellColorResolver.result.fg || this._model.cells[v + g.RENDER_MODEL_EXT_OFFSET] !== this._cellColorResolver.result.ext) && (R = !0, d.length > 1 && (_ |= g.COMBINED_CHAR_BIT_MASK), this._model.cells[v] = _, this._model.cells[v + g.RENDER_MODEL_BG_OFFSET] = this._cellColorResolver.result.bg, this._model.cells[v + g.RENDER_MODEL_FG_OFFSET] = this._cellColorResolver.result.fg, this._model.cells[v + g.RENDER_MODEL_EXT_OFFSET] = this._cellColorResolver.result.ext, f = b.getWidth(), this._glyphRenderer.value.updateCell(p, r, _, this._cellColorResolver.result.bg, this._cellColorResolver.result.fg, this._cellColorResolver.result.ext, d, f, s), h)) + for (b = this._workCell, p++; p < c; p++) m = (r * i.cols + p) * g.RENDER_MODEL_INDICIES_PER_CELL, this._glyphRenderer.value.updateCell(p, r, u.NULL_CELL_CODE, 0, 0, 0, u.NULL_CELL_CHAR, 0, 0), this._model.cells[m] = u.NULL_CELL_CODE, this._model.cells[m + g.RENDER_MODEL_BG_OFFSET] = this._cellColorResolver.result.bg, this._model.cells[m + g.RENDER_MODEL_FG_OFFSET] = this._cellColorResolver.result.fg, this._model.cells[m + g.RENDER_MODEL_EXT_OFFSET] = this._cellColorResolver.result.ext; + R && this._rectangleRenderer.value.updateBackgrounds(this._model), this._rectangleRenderer.value.updateCursor(this._model) + } + _updateDimensions() { + this._charSizeService.width && this._charSizeService.height && (this.dimensions.device.char.width = Math.floor(this._charSizeService.width * this._devicePixelRatio), this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * this._devicePixelRatio), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.top = 1 === this._optionsService.rawOptions.lineHeight ? 0 : Math.round((this.dimensions.device.cell.height - this.dimensions.device.char.height) / 2), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.char.left = Math.floor(this._optionsService.rawOptions.letterSpacing / 2), this.dimensions.device.canvas.height = this._terminal.rows * this.dimensions.device.cell.height, this.dimensions.device.canvas.width = this._terminal.cols * this.dimensions.device.cell.width, this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / this._devicePixelRatio), this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / this._devicePixelRatio), this.dimensions.css.cell.height = this.dimensions.device.cell.height / this._devicePixelRatio, this.dimensions.css.cell.width = this.dimensions.device.cell.width / this._devicePixelRatio) + } + _setCanvasDevicePixelDimensions(e, t) { + this._canvas.width === e && this._canvas.height === t || (this._canvas.width = e, this._canvas.height = t, this._requestRedrawViewport()) + } + _requestRedrawViewport() { + this._onRequestRedraw.fire({ + start: 0, + end: this._terminal.rows - 1 + }) + } + _requestRedrawCursor() { + const e = this._terminal.buffer.active.cursorY; + this._onRequestRedraw.fire({ + start: e, + end: e + }) + } + } + t.WebglRenderer = m; + class C extends d.AttributeData { + constructor(e, t, i) { + super(), this.content = 0, this.combinedData = "", this.fg = e.fg, this.bg = e.bg, this.combinedData = t, this._width = i + } + isCombined() { + return 2097152 + } + getWidth() { + return this._width + } + getChars() { + return this.combinedData + } + getCode() { + return 2097151 + } + setFromCharData(e) { + throw new Error("not implemented") + } + getAsCharData() { + return [this.fg, this.getChars(), this.getWidth(), this.getCode()] + } + } + + function S(e, t, i = 0) { + return Math.max(Math.min(e, t), i) + } + t.JoinedCellData = C + }, + 381: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.GLTexture = t.expandFloat32Array = t.createShader = t.createProgram = t.PROJECTION_MATRIX = void 0; + const s = i(374); + + function r(e, t, i) { + const r = (0, s.throwIfFalsy)(e.createShader(t)); + if (e.shaderSource(r, i), e.compileShader(r), e.getShaderParameter(r, e.COMPILE_STATUS)) return r; + console.error(e.getShaderInfoLog(r)), e.deleteShader(r) + } + t.PROJECTION_MATRIX = new Float32Array([2, 0, 0, 0, 0, -2, 0, 0, 0, 0, 1, 0, -1, 1, 0, 1]), t.createProgram = function(e, t, i) { + const n = (0, s.throwIfFalsy)(e.createProgram()); + if (e.attachShader(n, (0, s.throwIfFalsy)(r(e, e.VERTEX_SHADER, t))), e.attachShader(n, (0, s.throwIfFalsy)(r(e, e.FRAGMENT_SHADER, i))), e.linkProgram(n), e.getProgramParameter(n, e.LINK_STATUS)) return n; + console.error(e.getProgramInfoLog(n)), e.deleteProgram(n) + }, t.createShader = r, t.expandFloat32Array = function(e, t) { + const i = Math.min(2 * e.length, t), + s = new Float32Array(i); + for (let t = 0; t < e.length; t++) s[t] = e[t]; + return s + }, t.GLTexture = class { + constructor(e) { + this.texture = e, this.version = -1 + } + } + }, + 592: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.BaseRenderLayer = void 0; + const s = i(627), + r = i(237), + n = i(374), + o = i(859); + class a extends o.Disposable { + constructor(e, t, i, s, r, n, a, h) { + super(), this._container = t, this._alpha = r, this._coreBrowserService = n, this._optionsService = a, this._themeService = h, this._deviceCharWidth = 0, this._deviceCharHeight = 0, this._deviceCellWidth = 0, this._deviceCellHeight = 0, this._deviceCharLeft = 0, this._deviceCharTop = 0, this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add(`xterm-${i}-layer`), this._canvas.style.zIndex = s.toString(), this._initCanvas(), this._container.appendChild(this._canvas), this.register(this._themeService.onChangeColors((t => { + this._refreshCharAtlas(e, t), this.reset(e) + }))), this.register((0, o.toDisposable)((() => { + this._canvas.remove() + }))) + } + _initCanvas() { + this._ctx = (0, n.throwIfFalsy)(this._canvas.getContext("2d", { + alpha: this._alpha + })), this._alpha || this._clearAll() + } + handleBlur(e) {} + handleFocus(e) {} + handleCursorMove(e) {} + handleGridChanged(e, t, i) {} + handleSelectionChanged(e, t, i, s = !1) {} + _setTransparency(e, t) { + if (t === this._alpha) return; + const i = this._canvas; + this._alpha = t, this._canvas = this._canvas.cloneNode(), this._initCanvas(), this._container.replaceChild(this._canvas, i), this._refreshCharAtlas(e, this._themeService.colors), this.handleGridChanged(e, 0, e.rows - 1) + } + _refreshCharAtlas(e, t) { + this._deviceCharWidth <= 0 && this._deviceCharHeight <= 0 || (this._charAtlas = (0, s.acquireTextureAtlas)(e, this._optionsService.rawOptions, t, this._deviceCellWidth, this._deviceCellHeight, this._deviceCharWidth, this._deviceCharHeight, this._coreBrowserService.dpr), this._charAtlas.warmUp()) + } + resize(e, t) { + this._deviceCellWidth = t.device.cell.width, this._deviceCellHeight = t.device.cell.height, this._deviceCharWidth = t.device.char.width, this._deviceCharHeight = t.device.char.height, this._deviceCharLeft = t.device.char.left, this._deviceCharTop = t.device.char.top, this._canvas.width = t.device.canvas.width, this._canvas.height = t.device.canvas.height, this._canvas.style.width = `${t.css.canvas.width}px`, this._canvas.style.height = `${t.css.canvas.height}px`, this._alpha || this._clearAll(), this._refreshCharAtlas(e, this._themeService.colors) + } + _fillBottomLineAtCells(e, t, i = 1) { + this._ctx.fillRect(e * this._deviceCellWidth, (t + 1) * this._deviceCellHeight - this._coreBrowserService.dpr - 1, i * this._deviceCellWidth, this._coreBrowserService.dpr) + } + _clearAll() { + this._alpha ? this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height)) + } + _clearCells(e, t, i, s) { + this._alpha ? this._ctx.clearRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight)) + } + _fillCharTrueColor(e, t, i, s) { + this._ctx.font = this._getFont(e, !1, !1), this._ctx.textBaseline = r.TEXT_BASELINE, this._clipCell(i, s, t.getWidth()), this._ctx.fillText(t.getChars(), i * this._deviceCellWidth + this._deviceCharLeft, s * this._deviceCellHeight + this._deviceCharTop + this._deviceCharHeight) + } + _clipCell(e, t, i) { + this._ctx.beginPath(), this._ctx.rect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, this._deviceCellHeight), this._ctx.clip() + } + _getFont(e, t, i) { + return `${i ? "italic" : ""} ${t ? e.options.fontWeightBold : e.options.fontWeight} ${e.options.fontSize * this._coreBrowserService.dpr}px ${e.options.fontFamily}` + } + } + t.BaseRenderLayer = a + }, + 733: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.LinkRenderLayer = void 0; + const s = i(197), + r = i(237), + n = i(592); + class o extends n.BaseRenderLayer { + constructor(e, t, i, s, r, n, o) { + super(i, e, "link", t, !0, r, n, o), this.register(s.onShowLinkUnderline((e => this._handleShowLinkUnderline(e)))), this.register(s.onHideLinkUnderline((e => this._handleHideLinkUnderline(e)))) + } + resize(e, t) { + super.resize(e, t), this._state = void 0 + } + reset(e) { + this._clearCurrentLink() + } + _clearCurrentLink() { + if (this._state) { + this._clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1); + const e = this._state.y2 - this._state.y1 - 1; + e > 0 && this._clearCells(0, this._state.y1 + 1, this._state.cols, e), this._clearCells(0, this._state.y2, this._state.x2, 1), this._state = void 0 + } + } + _handleShowLinkUnderline(e) { + if (e.fg === r.INVERTED_DEFAULT_COLOR ? this._ctx.fillStyle = this._themeService.colors.background.css : void 0 !== e.fg && (0, s.is256Color)(e.fg) ? this._ctx.fillStyle = this._themeService.colors.ansi[e.fg].css : this._ctx.fillStyle = this._themeService.colors.foreground.css, e.y1 === e.y2) this._fillBottomLineAtCells(e.x1, e.y1, e.x2 - e.x1); + else { + this._fillBottomLineAtCells(e.x1, e.y1, e.cols - e.x1); + for (let t = e.y1 + 1; t < e.y2; t++) this._fillBottomLineAtCells(0, t, e.cols); + this._fillBottomLineAtCells(0, e.y2, e.x2) + } + this._state = e + } + _handleHideLinkUnderline(e) { + this._clearCurrentLink() + } + } + t.LinkRenderLayer = o + }, + 820: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.addDisposableDomListener = void 0, t.addDisposableDomListener = function(e, t, i, s) { + e.addEventListener(t, i, s); + let r = !1; + return { + dispose: () => { + r || (r = !0, e.removeEventListener(t, i, s)) + } + } + } + }, + 274: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CellColorResolver = void 0; + const s = i(855), + r = i(160), + n = i(374); + let o, a = 0, + h = 0, + c = !1, + l = !1, + d = !1, + _ = 0; + t.CellColorResolver = class { + constructor(e, t, i, s, r, n) { + this._terminal = e, this._optionService = t, this._selectionRenderModel = i, this._decorationService = s, this._coreBrowserService = r, this._themeService = n, this.result = { + fg: 0, + bg: 0, + ext: 0 + } + } + resolve(e, t, i, u) { + if (this.result.bg = e.bg, this.result.fg = e.fg, this.result.ext = 268435456 & e.bg ? e.extended.ext : 0, h = 0, a = 0, l = !1, c = !1, d = !1, o = this._themeService.colors, _ = 0, e.getCode() !== s.NULL_CELL_CODE && 4 === e.extended.underlineStyle) { + const e = Math.max(1, Math.floor(this._optionService.rawOptions.fontSize * this._coreBrowserService.dpr / 15)); + _ = t * u % (2 * Math.round(e)) + } + if (this._decorationService.forEachDecorationAtCell(t, i, "bottom", (e => { + e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0) + })), d = this._selectionRenderModel.isCellSelected(this._terminal, t, i), d) { + if (67108864 & this.result.fg || 50331648 & this.result.bg) { + if (67108864 & this.result.fg) switch (50331648 & this.result.fg) { + case 16777216: + case 33554432: + h = this._themeService.colors.ansi[255 & this.result.fg].rgba; + break; + case 50331648: + h = (16777215 & this.result.fg) << 8 | 255; + break; + default: + h = this._themeService.colors.foreground.rgba + } else switch (50331648 & this.result.bg) { + case 16777216: + case 33554432: + h = this._themeService.colors.ansi[255 & this.result.bg].rgba; + break; + case 50331648: + h = (16777215 & this.result.bg) << 8 | 255 + } + h = r.rgba.blend(h, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215 + } else h = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215; + if (l = !0, o.selectionForeground && (a = o.selectionForeground.rgba >> 8 & 16777215, c = !0), (0, n.treatGlyphAsBackgroundColor)(e.getCode())) { + if (67108864 & this.result.fg && !(50331648 & this.result.bg)) a = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215; + else { + if (67108864 & this.result.fg) switch (50331648 & this.result.bg) { + case 16777216: + case 33554432: + a = this._themeService.colors.ansi[255 & this.result.bg].rgba; + break; + case 50331648: + a = (16777215 & this.result.bg) << 8 | 255 + } else switch (50331648 & this.result.fg) { + case 16777216: + case 33554432: + a = this._themeService.colors.ansi[255 & this.result.fg].rgba; + break; + case 50331648: + a = (16777215 & this.result.fg) << 8 | 255; + break; + default: + a = this._themeService.colors.foreground.rgba + } + a = r.rgba.blend(a, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215 + } + c = !0 + } + } + this._decorationService.forEachDecorationAtCell(t, i, "top", (e => { + e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0) + })), l && (h = d ? -16777216 & e.bg & -134217729 | h | 50331648 : -16777216 & e.bg | h | 50331648), c && (a = -16777216 & e.fg & -67108865 | a | 50331648), 67108864 & this.result.fg && (l && !c && (a = 50331648 & this.result.bg ? -134217728 & this.result.fg | 67108863 & this.result.bg : -134217728 & this.result.fg | 16777215 & o.background.rgba >> 8 | 50331648, c = !0), !l && c && (h = 50331648 & this.result.fg ? -67108864 & this.result.bg | 67108863 & this.result.fg : -67108864 & this.result.bg | 16777215 & o.foreground.rgba >> 8 | 50331648, l = !0)), o = void 0, this.result.bg = l ? h : this.result.bg, this.result.fg = c ? a : this.result.fg, this.result.ext &= 536870911, this.result.ext |= _ << 29 & 3758096384 + } + } + }, + 627: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.removeTerminalFromCache = t.acquireTextureAtlas = void 0; + const s = i(509), + r = i(197), + n = []; + t.acquireTextureAtlas = function(e, t, i, o, a, h, c, l) { + const d = (0, r.generateConfig)(o, a, h, c, t, i, l); + for (let t = 0; t < n.length; t++) { + const i = n[t], + s = i.ownedBy.indexOf(e); + if (s >= 0) { + if ((0, r.configEquals)(i.config, d)) return i.atlas; + 1 === i.ownedBy.length ? (i.atlas.dispose(), n.splice(t, 1)) : i.ownedBy.splice(s, 1); + break + } + } + for (let t = 0; t < n.length; t++) { + const i = n[t]; + if ((0, r.configEquals)(i.config, d)) return i.ownedBy.push(e), i.atlas + } + const _ = e._core, + u = { + atlas: new s.TextureAtlas(document, d, _.unicodeService), + config: d, + ownedBy: [e] + }; + return n.push(u), u.atlas + }, t.removeTerminalFromCache = function(e) { + for (let t = 0; t < n.length; t++) { + const i = n[t].ownedBy.indexOf(e); + if (-1 !== i) { + 1 === n[t].ownedBy.length ? (n[t].atlas.dispose(), n.splice(t, 1)) : n[t].ownedBy.splice(i, 1); + break + } + } + } + }, + 197: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.is256Color = t.configEquals = t.generateConfig = void 0; + const s = i(160); + t.generateConfig = function(e, t, i, r, n, o, a) { + const h = { + foreground: o.foreground, + background: o.background, + cursor: s.NULL_COLOR, + cursorAccent: s.NULL_COLOR, + selectionForeground: s.NULL_COLOR, + selectionBackgroundTransparent: s.NULL_COLOR, + selectionBackgroundOpaque: s.NULL_COLOR, + selectionInactiveBackgroundTransparent: s.NULL_COLOR, + selectionInactiveBackgroundOpaque: s.NULL_COLOR, + ansi: o.ansi.slice(), + contrastCache: o.contrastCache, + halfContrastCache: o.halfContrastCache + }; + return { + customGlyphs: n.customGlyphs, + devicePixelRatio: a, + letterSpacing: n.letterSpacing, + lineHeight: n.lineHeight, + deviceCellWidth: e, + deviceCellHeight: t, + deviceCharWidth: i, + deviceCharHeight: r, + fontFamily: n.fontFamily, + fontSize: n.fontSize, + fontWeight: n.fontWeight, + fontWeightBold: n.fontWeightBold, + allowTransparency: n.allowTransparency, + drawBoldTextInBrightColors: n.drawBoldTextInBrightColors, + minimumContrastRatio: n.minimumContrastRatio, + colors: h + } + }, t.configEquals = function(e, t) { + for (let i = 0; i < e.colors.ansi.length; i++) + if (e.colors.ansi[i].rgba !== t.colors.ansi[i].rgba) return !1; + return e.devicePixelRatio === t.devicePixelRatio && e.customGlyphs === t.customGlyphs && e.lineHeight === t.lineHeight && e.letterSpacing === t.letterSpacing && e.fontFamily === t.fontFamily && e.fontSize === t.fontSize && e.fontWeight === t.fontWeight && e.fontWeightBold === t.fontWeightBold && e.allowTransparency === t.allowTransparency && e.deviceCharWidth === t.deviceCharWidth && e.deviceCharHeight === t.deviceCharHeight && e.drawBoldTextInBrightColors === t.drawBoldTextInBrightColors && e.minimumContrastRatio === t.minimumContrastRatio && e.colors.foreground.rgba === t.colors.foreground.rgba && e.colors.background.rgba === t.colors.background.rgba + }, t.is256Color = function(e) { + return 16777216 == (50331648 & e) || 33554432 == (50331648 & e) + } + }, + 237: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.TEXT_BASELINE = t.DIM_OPACITY = t.INVERTED_DEFAULT_COLOR = void 0; + const s = i(399); + t.INVERTED_DEFAULT_COLOR = 257, t.DIM_OPACITY = .5, t.TEXT_BASELINE = s.isFirefox || s.isLegacyEdge ? "bottom" : "ideographic" + }, + 457: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CursorBlinkStateManager = void 0, t.CursorBlinkStateManager = class { + constructor(e, t) { + this._renderCallback = e, this._coreBrowserService = t, this.isCursorVisible = !0, this._coreBrowserService.isFocused && this._restartInterval() + } + get isPaused() { + return !(this._blinkStartTimeout || this._blinkInterval) + } + dispose() { + this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0) + } + restartBlinkAnimation() { + this.isPaused || (this._animationTimeRestarted = Date.now(), this.isCursorVisible = !0, this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { + this._renderCallback(), this._animationFrame = void 0 + })))) + } + _restartInterval(e = 600) { + this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout = this._coreBrowserService.window.setTimeout((() => { + if (this._animationTimeRestarted) { + const e = 600 - (Date.now() - this._animationTimeRestarted); + if (this._animationTimeRestarted = void 0, e > 0) return void this._restartInterval(e) + } + this.isCursorVisible = !1, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { + this._renderCallback(), this._animationFrame = void 0 + })), this._blinkInterval = this._coreBrowserService.window.setInterval((() => { + if (this._animationTimeRestarted) { + const e = 600 - (Date.now() - this._animationTimeRestarted); + return this._animationTimeRestarted = void 0, void this._restartInterval(e) + } + this.isCursorVisible = !this.isCursorVisible, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { + this._renderCallback(), this._animationFrame = void 0 + })) + }), 600) + }), e) + } + pause() { + this.isCursorVisible = !0, this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0) + } + resume() { + this.pause(), this._animationTimeRestarted = void 0, this._restartInterval(), this.restartBlinkAnimation() + } + } + }, + 860: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.tryDrawCustomChar = t.powerlineDefinitions = t.boxDrawingDefinitions = t.blockElementDefinitions = void 0; + const s = i(374); + t.blockElementDefinitions = { + "▀": [{ + x: 0, + y: 0, + w: 8, + h: 4 + }], + "▁": [{ + x: 0, + y: 7, + w: 8, + h: 1 + }], + "▂": [{ + x: 0, + y: 6, + w: 8, + h: 2 + }], + "▃": [{ + x: 0, + y: 5, + w: 8, + h: 3 + }], + "▄": [{ + x: 0, + y: 4, + w: 8, + h: 4 + }], + "▅": [{ + x: 0, + y: 3, + w: 8, + h: 5 + }], + "▆": [{ + x: 0, + y: 2, + w: 8, + h: 6 + }], + "▇": [{ + x: 0, + y: 1, + w: 8, + h: 7 + }], + "█": [{ + x: 0, + y: 0, + w: 8, + h: 8 + }], + "▉": [{ + x: 0, + y: 0, + w: 7, + h: 8 + }], + "▊": [{ + x: 0, + y: 0, + w: 6, + h: 8 + }], + "▋": [{ + x: 0, + y: 0, + w: 5, + h: 8 + }], + "▌": [{ + x: 0, + y: 0, + w: 4, + h: 8 + }], + "▍": [{ + x: 0, + y: 0, + w: 3, + h: 8 + }], + "▎": [{ + x: 0, + y: 0, + w: 2, + h: 8 + }], + "▏": [{ + x: 0, + y: 0, + w: 1, + h: 8 + }], + "▐": [{ + x: 4, + y: 0, + w: 4, + h: 8 + }], + "▔": [{ + x: 0, + y: 0, + w: 8, + h: 1 + }], + "▕": [{ + x: 7, + y: 0, + w: 1, + h: 8 + }], + "▖": [{ + x: 0, + y: 4, + w: 4, + h: 4 + }], + "▗": [{ + x: 4, + y: 4, + w: 4, + h: 4 + }], + "▘": [{ + x: 0, + y: 0, + w: 4, + h: 4 + }], + "▙": [{ + x: 0, + y: 0, + w: 4, + h: 8 + }, { + x: 0, + y: 4, + w: 8, + h: 4 + }], + "▚": [{ + x: 0, + y: 0, + w: 4, + h: 4 + }, { + x: 4, + y: 4, + w: 4, + h: 4 + }], + "▛": [{ + x: 0, + y: 0, + w: 4, + h: 8 + }, { + x: 4, + y: 0, + w: 4, + h: 4 + }], + "▜": [{ + x: 0, + y: 0, + w: 8, + h: 4 + }, { + x: 4, + y: 0, + w: 4, + h: 8 + }], + "▝": [{ + x: 4, + y: 0, + w: 4, + h: 4 + }], + "▞": [{ + x: 4, + y: 0, + w: 4, + h: 4 + }, { + x: 0, + y: 4, + w: 4, + h: 4 + }], + "▟": [{ + x: 4, + y: 0, + w: 4, + h: 8 + }, { + x: 0, + y: 4, + w: 8, + h: 4 + }], + "🭰": [{ + x: 1, + y: 0, + w: 1, + h: 8 + }], + "🭱": [{ + x: 2, + y: 0, + w: 1, + h: 8 + }], + "🭲": [{ + x: 3, + y: 0, + w: 1, + h: 8 + }], + "🭳": [{ + x: 4, + y: 0, + w: 1, + h: 8 + }], + "🭴": [{ + x: 5, + y: 0, + w: 1, + h: 8 + }], + "🭵": [{ + x: 6, + y: 0, + w: 1, + h: 8 + }], + "🭶": [{ + x: 0, + y: 1, + w: 8, + h: 1 + }], + "🭷": [{ + x: 0, + y: 2, + w: 8, + h: 1 + }], + "🭸": [{ + x: 0, + y: 3, + w: 8, + h: 1 + }], + "🭹": [{ + x: 0, + y: 4, + w: 8, + h: 1 + }], + "🭺": [{ + x: 0, + y: 5, + w: 8, + h: 1 + }], + "🭻": [{ + x: 0, + y: 6, + w: 8, + h: 1 + }], + "🭼": [{ + x: 0, + y: 0, + w: 1, + h: 8 + }, { + x: 0, + y: 7, + w: 8, + h: 1 + }], + "🭽": [{ + x: 0, + y: 0, + w: 1, + h: 8 + }, { + x: 0, + y: 0, + w: 8, + h: 1 + }], + "🭾": [{ + x: 7, + y: 0, + w: 1, + h: 8 + }, { + x: 0, + y: 0, + w: 8, + h: 1 + }], + "🭿": [{ + x: 7, + y: 0, + w: 1, + h: 8 + }, { + x: 0, + y: 7, + w: 8, + h: 1 + }], + "🮀": [{ + x: 0, + y: 0, + w: 8, + h: 1 + }, { + x: 0, + y: 7, + w: 8, + h: 1 + }], + "🮁": [{ + x: 0, + y: 0, + w: 8, + h: 1 + }, { + x: 0, + y: 2, + w: 8, + h: 1 + }, { + x: 0, + y: 4, + w: 8, + h: 1 + }, { + x: 0, + y: 7, + w: 8, + h: 1 + }], + "🮂": [{ + x: 0, + y: 0, + w: 8, + h: 2 + }], + "🮃": [{ + x: 0, + y: 0, + w: 8, + h: 3 + }], + "🮄": [{ + x: 0, + y: 0, + w: 8, + h: 5 + }], + "🮅": [{ + x: 0, + y: 0, + w: 8, + h: 6 + }], + "🮆": [{ + x: 0, + y: 0, + w: 8, + h: 7 + }], + "🮇": [{ + x: 6, + y: 0, + w: 2, + h: 8 + }], + "🮈": [{ + x: 5, + y: 0, + w: 3, + h: 8 + }], + "🮉": [{ + x: 3, + y: 0, + w: 5, + h: 8 + }], + "🮊": [{ + x: 2, + y: 0, + w: 6, + h: 8 + }], + "🮋": [{ + x: 1, + y: 0, + w: 7, + h: 8 + }], + "🮕": [{ + x: 0, + y: 0, + w: 2, + h: 2 + }, { + x: 4, + y: 0, + w: 2, + h: 2 + }, { + x: 2, + y: 2, + w: 2, + h: 2 + }, { + x: 6, + y: 2, + w: 2, + h: 2 + }, { + x: 0, + y: 4, + w: 2, + h: 2 + }, { + x: 4, + y: 4, + w: 2, + h: 2 + }, { + x: 2, + y: 6, + w: 2, + h: 2 + }, { + x: 6, + y: 6, + w: 2, + h: 2 + }], + "🮖": [{ + x: 2, + y: 0, + w: 2, + h: 2 + }, { + x: 6, + y: 0, + w: 2, + h: 2 + }, { + x: 0, + y: 2, + w: 2, + h: 2 + }, { + x: 4, + y: 2, + w: 2, + h: 2 + }, { + x: 2, + y: 4, + w: 2, + h: 2 + }, { + x: 6, + y: 4, + w: 2, + h: 2 + }, { + x: 0, + y: 6, + w: 2, + h: 2 + }, { + x: 4, + y: 6, + w: 2, + h: 2 + }], + "🮗": [{ + x: 0, + y: 2, + w: 8, + h: 2 + }, { + x: 0, + y: 6, + w: 8, + h: 2 + }] + }; + const r = { + "░": [ + [1, 0, 0, 0], + [0, 0, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 0] + ], + "▒": [ + [1, 0], + [0, 0], + [0, 1], + [0, 0] + ], + "▓": [ + [0, 1], + [1, 1], + [1, 0], + [1, 1] + ] + }; + t.boxDrawingDefinitions = { + "─": { + 1: "M0,.5 L1,.5" + }, + "━": { + 3: "M0,.5 L1,.5" + }, + "│": { + 1: "M.5,0 L.5,1" + }, + "┃": { + 3: "M.5,0 L.5,1" + }, + "┌": { + 1: "M0.5,1 L.5,.5 L1,.5" + }, + "┏": { + 3: "M0.5,1 L.5,.5 L1,.5" + }, + "┐": { + 1: "M0,.5 L.5,.5 L.5,1" + }, + "┓": { + 3: "M0,.5 L.5,.5 L.5,1" + }, + "└": { + 1: "M.5,0 L.5,.5 L1,.5" + }, + "┗": { + 3: "M.5,0 L.5,.5 L1,.5" + }, + "┘": { + 1: "M.5,0 L.5,.5 L0,.5" + }, + "┛": { + 3: "M.5,0 L.5,.5 L0,.5" + }, + "├": { + 1: "M.5,0 L.5,1 M.5,.5 L1,.5" + }, + "┣": { + 3: "M.5,0 L.5,1 M.5,.5 L1,.5" + }, + "┤": { + 1: "M.5,0 L.5,1 M.5,.5 L0,.5" + }, + "┫": { + 3: "M.5,0 L.5,1 M.5,.5 L0,.5" + }, + "┬": { + 1: "M0,.5 L1,.5 M.5,.5 L.5,1" + }, + "┳": { + 3: "M0,.5 L1,.5 M.5,.5 L.5,1" + }, + "┴": { + 1: "M0,.5 L1,.5 M.5,.5 L.5,0" + }, + "┻": { + 3: "M0,.5 L1,.5 M.5,.5 L.5,0" + }, + "┼": { + 1: "M0,.5 L1,.5 M.5,0 L.5,1" + }, + "╋": { + 3: "M0,.5 L1,.5 M.5,0 L.5,1" + }, + "╴": { + 1: "M.5,.5 L0,.5" + }, + "╸": { + 3: "M.5,.5 L0,.5" + }, + "╵": { + 1: "M.5,.5 L.5,0" + }, + "╹": { + 3: "M.5,.5 L.5,0" + }, + "╶": { + 1: "M.5,.5 L1,.5" + }, + "╺": { + 3: "M.5,.5 L1,.5" + }, + "╷": { + 1: "M.5,.5 L.5,1" + }, + "╻": { + 3: "M.5,.5 L.5,1" + }, + "═": { + 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` + }, + "║": { + 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` + }, + "╒": { + 1: (e, t) => `M.5,1 L.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}` + }, + "╓": { + 1: (e, t) => `M${.5 - e},1 L${.5 - e},.5 L1,.5 M${.5 + e},.5 L${.5 + e},1` + }, + "╔": { + 1: (e, t) => `M1,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1` + }, + "╕": { + 1: (e, t) => `M0,${.5 - t} L.5,${.5 - t} L.5,1 M0,${.5 + t} L.5,${.5 + t}` + }, + "╖": { + 1: (e, t) => `M${.5 + e},1 L${.5 + e},.5 L0,.5 M${.5 - e},.5 L${.5 - e},1` + }, + "╗": { + 1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},1` + }, + "╘": { + 1: (e, t) => `M.5,0 L.5,${.5 + t} L1,${.5 + t} M.5,${.5 - t} L1,${.5 - t}` + }, + "╙": { + 1: (e, t) => `M1,.5 L${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0` + }, + "╚": { + 1: (e, t) => `M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0 M1,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},0` + }, + "╛": { + 1: (e, t) => `M0,${.5 + t} L.5,${.5 + t} L.5,0 M0,${.5 - t} L.5,${.5 - t}` + }, + "╜": { + 1: (e, t) => `M0,.5 L${.5 + e},.5 L${.5 + e},0 M${.5 - e},.5 L${.5 - e},0` + }, + "╝": { + 1: (e, t) => `M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M0,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},0` + }, + "╞": { + 1: (e, t) => `M.5,0 L.5,1 M.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}` + }, + "╟": { + 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1 M${.5 + e},.5 L1,.5` + }, + "╠": { + 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` + }, + "╡": { + 1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L.5,${.5 - t} M0,${.5 + t} L.5,${.5 + t}` + }, + "╢": { + 1: (e, t) => `M0,.5 L${.5 - e},.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` + }, + "╣": { + 1: (e, t) => `M${.5 + e},0 L${.5 + e},1 M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0` + }, + "╤": { + 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t} M.5,${.5 + t} L.5,1` + }, + "╥": { + 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},1 M${.5 + e},.5 L${.5 + e},1` + }, + "╦": { + 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1` + }, + "╧": { + 1: (e, t) => `M.5,0 L.5,${.5 - t} M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` + }, + "╨": { + 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0` + }, + "╩": { + 1: (e, t) => `M0,${.5 + t} L1,${.5 + t} M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` + }, + "╪": { + 1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` + }, + "╫": { + 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` + }, + "╬": { + 1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` + }, + "╱": { + 1: "M1,0 L0,1" + }, + "╲": { + 1: "M0,0 L1,1" + }, + "╳": { + 1: "M1,0 L0,1 M0,0 L1,1" + }, + "╼": { + 1: "M.5,.5 L0,.5", + 3: "M.5,.5 L1,.5" + }, + "╽": { + 1: "M.5,.5 L.5,0", + 3: "M.5,.5 L.5,1" + }, + "╾": { + 1: "M.5,.5 L1,.5", + 3: "M.5,.5 L0,.5" + }, + "╿": { + 1: "M.5,.5 L.5,1", + 3: "M.5,.5 L.5,0" + }, + "┍": { + 1: "M.5,.5 L.5,1", + 3: "M.5,.5 L1,.5" + }, + "┎": { + 1: "M.5,.5 L1,.5", + 3: "M.5,.5 L.5,1" + }, + "┑": { + 1: "M.5,.5 L.5,1", + 3: "M.5,.5 L0,.5" + }, + "┒": { + 1: "M.5,.5 L0,.5", + 3: "M.5,.5 L.5,1" + }, + "┕": { + 1: "M.5,.5 L.5,0", + 3: "M.5,.5 L1,.5" + }, + "┖": { + 1: "M.5,.5 L1,.5", + 3: "M.5,.5 L.5,0" + }, + "┙": { + 1: "M.5,.5 L.5,0", + 3: "M.5,.5 L0,.5" + }, + "┚": { + 1: "M.5,.5 L0,.5", + 3: "M.5,.5 L.5,0" + }, + "┝": { + 1: "M.5,0 L.5,1", + 3: "M.5,.5 L1,.5" + }, + "┞": { + 1: "M0.5,1 L.5,.5 L1,.5", + 3: "M.5,.5 L.5,0" + }, + "┟": { + 1: "M.5,0 L.5,.5 L1,.5", + 3: "M.5,.5 L.5,1" + }, + "┠": { + 1: "M.5,.5 L1,.5", + 3: "M.5,0 L.5,1" + }, + "┡": { + 1: "M.5,.5 L.5,1", + 3: "M.5,0 L.5,.5 L1,.5" + }, + "┢": { + 1: "M.5,.5 L.5,0", + 3: "M0.5,1 L.5,.5 L1,.5" + }, + "┥": { + 1: "M.5,0 L.5,1", + 3: "M.5,.5 L0,.5" + }, + "┦": { + 1: "M0,.5 L.5,.5 L.5,1", + 3: "M.5,.5 L.5,0" + }, + "┧": { + 1: "M.5,0 L.5,.5 L0,.5", + 3: "M.5,.5 L.5,1" + }, + "┨": { + 1: "M.5,.5 L0,.5", + 3: "M.5,0 L.5,1" + }, + "┩": { + 1: "M.5,.5 L.5,1", + 3: "M.5,0 L.5,.5 L0,.5" + }, + "┪": { + 1: "M.5,.5 L.5,0", + 3: "M0,.5 L.5,.5 L.5,1" + }, + "┭": { + 1: "M0.5,1 L.5,.5 L1,.5", + 3: "M.5,.5 L0,.5" + }, + "┮": { + 1: "M0,.5 L.5,.5 L.5,1", + 3: "M.5,.5 L1,.5" + }, + "┯": { + 1: "M.5,.5 L.5,1", + 3: "M0,.5 L1,.5" + }, + "┰": { + 1: "M0,.5 L1,.5", + 3: "M.5,.5 L.5,1" + }, + "┱": { + 1: "M.5,.5 L1,.5", + 3: "M0,.5 L.5,.5 L.5,1" + }, + "┲": { + 1: "M.5,.5 L0,.5", + 3: "M0.5,1 L.5,.5 L1,.5" + }, + "┵": { + 1: "M.5,0 L.5,.5 L1,.5", + 3: "M.5,.5 L0,.5" + }, + "┶": { + 1: "M.5,0 L.5,.5 L0,.5", + 3: "M.5,.5 L1,.5" + }, + "┷": { + 1: "M.5,.5 L.5,0", + 3: "M0,.5 L1,.5" + }, + "┸": { + 1: "M0,.5 L1,.5", + 3: "M.5,.5 L.5,0" + }, + "┹": { + 1: "M.5,.5 L1,.5", + 3: "M.5,0 L.5,.5 L0,.5" + }, + "┺": { + 1: "M.5,.5 L0,.5", + 3: "M.5,0 L.5,.5 L1,.5" + }, + "┽": { + 1: "M.5,0 L.5,1 M.5,.5 L1,.5", + 3: "M.5,.5 L0,.5" + }, + "┾": { + 1: "M.5,0 L.5,1 M.5,.5 L0,.5", + 3: "M.5,.5 L1,.5" + }, + "┿": { + 1: "M.5,0 L.5,1", + 3: "M0,.5 L1,.5" + }, + "╀": { + 1: "M0,.5 L1,.5 M.5,.5 L.5,1", + 3: "M.5,.5 L.5,0" + }, + "╁": { + 1: "M.5,.5 L.5,0 M0,.5 L1,.5", + 3: "M.5,.5 L.5,1" + }, + "╂": { + 1: "M0,.5 L1,.5", + 3: "M.5,0 L.5,1" + }, + "╃": { + 1: "M0.5,1 L.5,.5 L1,.5", + 3: "M.5,0 L.5,.5 L0,.5" + }, + "╄": { + 1: "M0,.5 L.5,.5 L.5,1", + 3: "M.5,0 L.5,.5 L1,.5" + }, + "╅": { + 1: "M.5,0 L.5,.5 L1,.5", + 3: "M0,.5 L.5,.5 L.5,1" + }, + "╆": { + 1: "M.5,0 L.5,.5 L0,.5", + 3: "M0.5,1 L.5,.5 L1,.5" + }, + "╇": { + 1: "M.5,.5 L.5,1", + 3: "M.5,.5 L.5,0 M0,.5 L1,.5" + }, + "╈": { + 1: "M.5,.5 L.5,0", + 3: "M0,.5 L1,.5 M.5,.5 L.5,1" + }, + "╉": { + 1: "M.5,.5 L1,.5", + 3: "M.5,0 L.5,1 M.5,.5 L0,.5" + }, + "╊": { + 1: "M.5,.5 L0,.5", + 3: "M.5,0 L.5,1 M.5,.5 L1,.5" + }, + "╌": { + 1: "M.1,.5 L.4,.5 M.6,.5 L.9,.5" + }, + "╍": { + 3: "M.1,.5 L.4,.5 M.6,.5 L.9,.5" + }, + "┄": { + 1: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5" + }, + "┅": { + 3: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5" + }, + "┈": { + 1: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5" + }, + "┉": { + 3: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5" + }, + "╎": { + 1: "M.5,.1 L.5,.4 M.5,.6 L.5,.9" + }, + "╏": { + 3: "M.5,.1 L.5,.4 M.5,.6 L.5,.9" + }, + "┆": { + 1: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333" + }, + "┇": { + 3: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333" + }, + "┊": { + 1: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95" + }, + "┋": { + 3: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95" + }, + "╭": { + 1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,1,.5` + }, + "╮": { + 1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,0,.5` + }, + "╯": { + 1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,0,.5` + }, + "╰": { + 1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,1,.5` + } + }, t.powerlineDefinitions = { + "": { + d: "M0,0 L1,.5 L0,1", + type: 0, + rightPadding: 2 + }, + "": { + d: "M-1,-.5 L1,.5 L-1,1.5", + type: 1, + leftPadding: 1, + rightPadding: 1 + }, + "": { + d: "M1,0 L0,.5 L1,1", + type: 0, + leftPadding: 2 + }, + "": { + d: "M2,-.5 L0,.5 L2,1.5", + type: 1, + leftPadding: 1, + rightPadding: 1 + }, + "": { + d: "M0,0 L0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0", + type: 0, + rightPadding: 1 + }, + "": { + d: "M.2,1 C.422,1,.8,.826,.78,.5 C.8,.174,0.422,0,.2,0", + type: 1, + rightPadding: 1 + }, + "": { + d: "M1,0 L1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0", + type: 0, + leftPadding: 1 + }, + "": { + d: "M.8,1 C0.578,1,0.2,.826,.22,.5 C0.2,0.174,0.578,0,0.8,0", + type: 1, + leftPadding: 1 + }, + "": { + d: "M-.5,-.5 L1.5,1.5 L-.5,1.5", + type: 0 + }, + "": { + d: "M-.5,-.5 L1.5,1.5", + type: 1, + leftPadding: 1, + rightPadding: 1 + }, + "": { + d: "M1.5,-.5 L-.5,1.5 L1.5,1.5", + type: 0 + }, + "": { + d: "M1.5,-.5 L-.5,1.5 L-.5,-.5", + type: 0 + }, + "": { + d: "M1.5,-.5 L-.5,1.5", + type: 1, + leftPadding: 1, + rightPadding: 1 + }, + "": { + d: "M-.5,-.5 L1.5,1.5 L1.5,-.5", + type: 0 + } + }, t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.tryDrawCustomChar = function(e, i, o, c, l, d, _, u) { + const f = t.blockElementDefinitions[i]; + if (f) return function(e, t, i, s, r, n) { + for (let o = 0; o < t.length; o++) { + const a = t[o], + h = r / 8, + c = n / 8; + e.fillRect(i + a.x * h, s + a.y * c, a.w * h, a.h * c) + } + }(e, f, o, c, l, d), !0; + const v = r[i]; + if (v) return function(e, t, i, r, o, a) { + let h = n.get(t); + h || (h = new Map, n.set(t, h)); + const c = e.fillStyle; + if ("string" != typeof c) throw new Error(`Unexpected fillStyle type "${c}"`); + let l = h.get(c); + if (!l) { + const i = t[0].length, + r = t.length, + n = e.canvas.ownerDocument.createElement("canvas"); + n.width = i, n.height = r; + const o = (0, s.throwIfFalsy)(n.getContext("2d")), + a = new ImageData(i, r); + let d, _, u, f; + if (c.startsWith("#")) d = parseInt(c.slice(1, 3), 16), _ = parseInt(c.slice(3, 5), 16), u = parseInt(c.slice(5, 7), 16), f = c.length > 7 && parseInt(c.slice(7, 9), 16) || 1; + else { + if (!c.startsWith("rgba")) throw new Error(`Unexpected fillStyle color format "${c}" when drawing pattern glyph`); + [d, _, u, f] = c.substring(5, c.length - 1).split(",").map((e => parseFloat(e))) + } + for (let e = 0; e < r; e++) + for (let s = 0; s < i; s++) a.data[4 * (e * i + s)] = d, a.data[4 * (e * i + s) + 1] = _, a.data[4 * (e * i + s) + 2] = u, a.data[4 * (e * i + s) + 3] = t[e][s] * (255 * f); + o.putImageData(a, 0, 0), l = (0, s.throwIfFalsy)(e.createPattern(n, null)), h.set(c, l) + } + e.fillStyle = l, e.fillRect(i, r, o, a) + }(e, v, o, c, l, d), !0; + const g = t.boxDrawingDefinitions[i]; + if (g) return function(e, t, i, s, r, n, o) { + e.strokeStyle = e.fillStyle; + for (const [c, l] of Object.entries(t)) { + let t; + e.beginPath(), e.lineWidth = o * Number.parseInt(c), t = "function" == typeof l ? l(.15, .15 / n * r) : l; + for (const c of t.split(" ")) { + const t = c[0], + l = a[t]; + if (!l) { + console.error(`Could not find drawing instructions for "${t}"`); + continue + } + const d = c.substring(1).split(","); + d[0] && d[1] && l(e, h(d, r, n, i, s, !0, o)) + } + e.stroke(), e.closePath() + } + }(e, g, o, c, l, d, u), !0; + const p = t.powerlineDefinitions[i]; + return !!p && (function(e, t, i, s, r, n, o, c) { + const l = new Path2D; + l.rect(i, s, r, n), e.clip(l), e.beginPath(); + const d = o / 12; + e.lineWidth = c * d; + for (const o of t.d.split(" ")) { + const l = o[0], + _ = a[l]; + if (!_) { + console.error(`Could not find drawing instructions for "${l}"`); + continue + } + const u = o.substring(1).split(","); + u[0] && u[1] && _(e, h(u, r, n, i, s, !1, c, (t.leftPadding ?? 0) * (d / 2), (t.rightPadding ?? 0) * (d / 2))) + } + 1 === t.type ? (e.strokeStyle = e.fillStyle, e.stroke()) : e.fill(), e.closePath() + }(e, p, o, c, l, d, _, u), !0) + }; + const n = new Map; + + function o(e, t, i = 0) { + return Math.max(Math.min(e, t), i) + } + const a = { + C: (e, t) => e.bezierCurveTo(t[0], t[1], t[2], t[3], t[4], t[5]), + L: (e, t) => e.lineTo(t[0], t[1]), + M: (e, t) => e.moveTo(t[0], t[1]) + }; + + function h(e, t, i, s, r, n, a, h = 0, c = 0) { + const l = e.map((e => parseFloat(e) || parseInt(e))); + if (l.length < 2) throw new Error("Too few arguments for instruction"); + for (let e = 0; e < l.length; e += 2) l[e] *= t - h * a - c * a, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, t, 0)), l[e] += s + h * a; + for (let e = 1; e < l.length; e += 2) l[e] *= i, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, i, 0)), l[e] += r; + return l + } + }, + 56: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.observeDevicePixelDimensions = void 0; + const s = i(859); + t.observeDevicePixelDimensions = function(e, t, i) { + let r = new t.ResizeObserver((t => { + const s = t.find((t => t.target === e)); + if (!s) return; + if (!("devicePixelContentBoxSize" in s)) return r?.disconnect(), void(r = void 0); + const n = s.devicePixelContentBoxSize[0].inlineSize, + o = s.devicePixelContentBoxSize[0].blockSize; + n > 0 && o > 0 && i(n, o) + })); + try { + r.observe(e, { + box: ["device-pixel-content-box"] + }) + } catch { + r.disconnect(), r = void 0 + } + return (0, s.toDisposable)((() => r?.disconnect())) + } + }, + 374: (e, t) => { + function i(e) { + return 57508 <= e && e <= 57558 + } + + function s(e) { + return e >= 128512 && e <= 128591 || e >= 127744 && e <= 128511 || e >= 128640 && e <= 128767 || e >= 9728 && e <= 9983 || e >= 9984 && e <= 10175 || e >= 65024 && e <= 65039 || e >= 129280 && e <= 129535 || e >= 127462 && e <= 127487 + } + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.computeNextVariantOffset = t.createRenderDimensions = t.treatGlyphAsBackgroundColor = t.allowRescaling = t.isEmoji = t.isRestrictedPowerlineGlyph = t.isPowerlineGlyph = t.throwIfFalsy = void 0, t.throwIfFalsy = function(e) { + if (!e) throw new Error("value must not be falsy"); + return e + }, t.isPowerlineGlyph = i, t.isRestrictedPowerlineGlyph = function(e) { + return 57520 <= e && e <= 57527 + }, t.isEmoji = s, t.allowRescaling = function(e, t, r, n) { + return 1 === t && r > Math.ceil(1.5 * n) && void 0 !== e && e > 255 && !s(e) && !i(e) && ! function(e) { + return 57344 <= e && e <= 63743 + }(e) + }, t.treatGlyphAsBackgroundColor = function(e) { + return i(e) || function(e) { + return 9472 <= e && e <= 9631 + }(e) + }, t.createRenderDimensions = function() { + return { + css: { + canvas: { + width: 0, + height: 0 + }, + cell: { + width: 0, + height: 0 + } + }, + device: { + canvas: { + width: 0, + height: 0 + }, + cell: { + width: 0, + height: 0 + }, + char: { + width: 0, + height: 0, + left: 0, + top: 0 + } + } + } + }, t.computeNextVariantOffset = function(e, t, i = 0) { + return (e - (2 * Math.round(t) - i)) % (2 * Math.round(t)) + } + }, + 296: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.createSelectionRenderModel = void 0; + class i { + constructor() { + this.clear() + } + clear() { + this.hasSelection = !1, this.columnSelectMode = !1, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0 + } + update(e, t, i, s = !1) { + if (this.selectionStart = t, this.selectionEnd = i, !t || !i || t[0] === i[0] && t[1] === i[1]) return void this.clear(); + const r = e.buffers.active.ydisp, + n = t[1] - r, + o = i[1] - r, + a = Math.max(n, 0), + h = Math.min(o, e.rows - 1); + a >= e.rows || h < 0 ? this.clear() : (this.hasSelection = !0, this.columnSelectMode = s, this.viewportStartRow = n, this.viewportEndRow = o, this.viewportCappedStartRow = a, this.viewportCappedEndRow = h, this.startCol = t[0], this.endCol = i[0]) + } + isCellSelected(e, t, i) { + return !!this.hasSelection && (i -= e.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? t >= this.startCol && i >= this.viewportCappedStartRow && t < this.endCol && i <= this.viewportCappedEndRow : t < this.startCol && i >= this.viewportCappedStartRow && t >= this.endCol && i <= this.viewportCappedEndRow : i > this.viewportStartRow && i < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportEndRow && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol) + } + } + t.createSelectionRenderModel = function() { + return new i + } + }, + 509: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.TextureAtlas = void 0; + const s = i(237), + r = i(860), + n = i(374), + o = i(160), + a = i(345), + h = i(485), + c = i(385), + l = i(147), + d = i(855), + _ = { + texturePage: 0, + texturePosition: { + x: 0, + y: 0 + }, + texturePositionClipSpace: { + x: 0, + y: 0 + }, + offset: { + x: 0, + y: 0 + }, + size: { + x: 0, + y: 0 + }, + sizeClipSpace: { + x: 0, + y: 0 + } + }; + let u; + class f { + get pages() { + return this._pages + } + constructor(e, t, i) { + this._document = e, this._config = t, this._unicodeService = i, this._didWarmUp = !1, this._cacheMap = new h.FourKeyMap, this._cacheMapCombined = new h.FourKeyMap, this._pages = [], this._activePages = [], this._workBoundingBox = { + top: 0, + left: 0, + bottom: 0, + right: 0 + }, this._workAttributeData = new l.AttributeData, this._textureSize = 512, this._onAddTextureAtlasCanvas = new a.EventEmitter, this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = new a.EventEmitter, this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._requestClearModel = !1, this._createNewPage(), this._tmpCanvas = p(e, 4 * this._config.deviceCellWidth + 4, this._config.deviceCellHeight + 4), this._tmpCtx = (0, n.throwIfFalsy)(this._tmpCanvas.getContext("2d", { + alpha: this._config.allowTransparency, + willReadFrequently: !0 + })) + } + dispose() { + for (const e of this.pages) e.canvas.remove(); + this._onAddTextureAtlasCanvas.dispose() + } + warmUp() { + this._didWarmUp || (this._doWarmUp(), this._didWarmUp = !0) + } + _doWarmUp() { + const e = new c.IdleTaskQueue; + for (let t = 33; t < 126; t++) e.enqueue((() => { + if (!this._cacheMap.get(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT)) { + const e = this._drawToCache(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT); + this._cacheMap.set(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT, e) + } + })) + } + beginFrame() { + return this._requestClearModel + } + clearTexture() { + if (0 !== this._pages[0].currentRow.x || 0 !== this._pages[0].currentRow.y) { + for (const e of this._pages) e.clear(); + this._cacheMap.clear(), this._cacheMapCombined.clear(), this._didWarmUp = !1 + } + } + _createNewPage() { + if (f.maxAtlasPages && this._pages.length >= Math.max(4, f.maxAtlasPages)) { + const e = this._pages.filter((e => 2 * e.canvas.width <= (f.maxTextureSize || 4096))).sort(((e, t) => t.canvas.width !== e.canvas.width ? t.canvas.width - e.canvas.width : t.percentageUsed - e.percentageUsed)); + let t = -1, + i = 0; + for (let s = 0; s < e.length; s++) + if (e[s].canvas.width !== i) t = s, i = e[s].canvas.width; + else if (s - t == 3) break; + const s = e.slice(t, t + 4), + r = s.map((e => e.glyphs[0].texturePage)).sort(((e, t) => e > t ? 1 : -1)), + n = this.pages.length - s.length, + o = this._mergePages(s, n); + o.version++; + for (let e = r.length - 1; e >= 0; e--) this._deletePage(r[e]); + this.pages.push(o), this._requestClearModel = !0, this._onAddTextureAtlasCanvas.fire(o.canvas) + } + const e = new v(this._document, this._textureSize); + return this._pages.push(e), this._activePages.push(e), this._onAddTextureAtlasCanvas.fire(e.canvas), e + } + _mergePages(e, t) { + const i = 2 * e[0].canvas.width, + s = new v(this._document, i, e); + for (const [r, n] of e.entries()) { + const e = r * n.canvas.width % i, + o = Math.floor(r / 2) * n.canvas.height; + s.ctx.drawImage(n.canvas, e, o); + for (const s of n.glyphs) s.texturePage = t, s.sizeClipSpace.x = s.size.x / i, s.sizeClipSpace.y = s.size.y / i, s.texturePosition.x += e, s.texturePosition.y += o, s.texturePositionClipSpace.x = s.texturePosition.x / i, s.texturePositionClipSpace.y = s.texturePosition.y / i; + this._onRemoveTextureAtlasCanvas.fire(n.canvas); + const a = this._activePages.indexOf(n); - 1 !== a && this._activePages.splice(a, 1) + } + return s + } + _deletePage(e) { + this._pages.splice(e, 1); + for (let t = e; t < this._pages.length; t++) { + const e = this._pages[t]; + for (const t of e.glyphs) t.texturePage--; + e.version++ + } + } + getRasterizedGlyphCombinedChar(e, t, i, s, r) { + return this._getFromCacheMap(this._cacheMapCombined, e, t, i, s, r) + } + getRasterizedGlyph(e, t, i, s, r) { + return this._getFromCacheMap(this._cacheMap, e, t, i, s, r) + } + _getFromCacheMap(e, t, i, s, r, n = !1) { + return u = e.get(t, i, s, r), u || (u = this._drawToCache(t, i, s, r, n), e.set(t, i, s, r, u)), u + } + _getColorFromAnsiIndex(e) { + if (e >= this._config.colors.ansi.length) throw new Error("No color found for idx " + e); + return this._config.colors.ansi[e] + } + _getBackgroundColor(e, t, i, s) { + if (this._config.allowTransparency) return o.NULL_COLOR; + let r; + switch (e) { + case 16777216: + case 33554432: + r = this._getColorFromAnsiIndex(t); + break; + case 50331648: + const e = l.AttributeData.toColorRGB(t); + r = o.channels.toColor(e[0], e[1], e[2]); + break; + default: + r = i ? o.color.opaque(this._config.colors.foreground) : this._config.colors.background + } + return r + } + _getForegroundColor(e, t, i, r, n, a, h, c, d, _) { + const u = this._getMinimumContrastColor(e, t, i, r, n, a, h, d, c, _); + if (u) return u; + let f; + switch (n) { + case 16777216: + case 33554432: + this._config.drawBoldTextInBrightColors && d && a < 8 && (a += 8), f = this._getColorFromAnsiIndex(a); + break; + case 50331648: + const e = l.AttributeData.toColorRGB(a); + f = o.channels.toColor(e[0], e[1], e[2]); + break; + default: + f = h ? this._config.colors.background : this._config.colors.foreground + } + return this._config.allowTransparency && (f = o.color.opaque(f)), c && (f = o.color.multiplyOpacity(f, s.DIM_OPACITY)), f + } + _resolveBackgroundRgba(e, t, i) { + switch (e) { + case 16777216: + case 33554432: + return this._getColorFromAnsiIndex(t).rgba; + case 50331648: + return t << 8; + default: + return i ? this._config.colors.foreground.rgba : this._config.colors.background.rgba + } + } + _resolveForegroundRgba(e, t, i, s) { + switch (e) { + case 16777216: + case 33554432: + return this._config.drawBoldTextInBrightColors && s && t < 8 && (t += 8), this._getColorFromAnsiIndex(t).rgba; + case 50331648: + return t << 8; + default: + return i ? this._config.colors.background.rgba : this._config.colors.foreground.rgba + } + } + _getMinimumContrastColor(e, t, i, s, r, n, a, h, c, l) { + if (1 === this._config.minimumContrastRatio || l) return; + const d = this._getContrastCache(c), + _ = d.getColor(e, s); + if (void 0 !== _) return _ || void 0; + const u = this._resolveBackgroundRgba(t, i, a), + f = this._resolveForegroundRgba(r, n, a, h), + v = o.rgba.ensureContrastRatio(u, f, this._config.minimumContrastRatio / (c ? 2 : 1)); + if (!v) return void d.setColor(e, s, null); + const g = o.channels.toColor(v >> 24 & 255, v >> 16 & 255, v >> 8 & 255); + return d.setColor(e, s, g), g + } + _getContrastCache(e) { + return e ? this._config.colors.halfContrastCache : this._config.colors.contrastCache + } + _drawToCache(e, t, i, o, a = !1) { + const h = "number" == typeof e ? String.fromCharCode(e) : e, + c = Math.min(this._config.deviceCellWidth * Math.max(h.length, 2) + 4, this._textureSize); + this._tmpCanvas.width < c && (this._tmpCanvas.width = c); + const d = Math.min(this._config.deviceCellHeight + 8, this._textureSize); + if (this._tmpCanvas.height < d && (this._tmpCanvas.height = d), this._tmpCtx.save(), this._workAttributeData.fg = i, this._workAttributeData.bg = t, this._workAttributeData.extended.ext = o, this._workAttributeData.isInvisible()) return _; + const u = !!this._workAttributeData.isBold(), + v = !!this._workAttributeData.isInverse(), + p = !!this._workAttributeData.isDim(), + m = !!this._workAttributeData.isItalic(), + C = !!this._workAttributeData.isUnderline(), + S = !!this._workAttributeData.isStrikethrough(), + b = !!this._workAttributeData.isOverline(); + let w = this._workAttributeData.getFgColor(), + y = this._workAttributeData.getFgColorMode(), + L = this._workAttributeData.getBgColor(), + x = this._workAttributeData.getBgColorMode(); + if (v) { + const e = w; + w = L, L = e; + const t = y; + y = x, x = t + } + const E = this._getBackgroundColor(x, L, v, p); + this._tmpCtx.globalCompositeOperation = "copy", this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.globalCompositeOperation = "source-over"; + const R = u ? this._config.fontWeightBold : this._config.fontWeight, + M = m ? "italic" : ""; + this._tmpCtx.font = `${M} ${R} ${this._config.fontSize * this._config.devicePixelRatio}px ${this._config.fontFamily}`, this._tmpCtx.textBaseline = s.TEXT_BASELINE; + const A = 1 === h.length && (0, n.isPowerlineGlyph)(h.charCodeAt(0)), + D = 1 === h.length && (0, n.isRestrictedPowerlineGlyph)(h.charCodeAt(0)), + k = this._getForegroundColor(t, x, L, i, y, w, v, p, u, (0, n.treatGlyphAsBackgroundColor)(h.charCodeAt(0))); + this._tmpCtx.fillStyle = k.css; + const T = D ? 0 : 4; + let B = !1; + !1 !== this._config.customGlyphs && (B = (0, r.tryDrawCustomChar)(this._tmpCtx, h, T, T, this._config.deviceCellWidth, this._config.deviceCellHeight, this._config.fontSize, this._config.devicePixelRatio)); + let O, P = !A; + if (O = "number" == typeof e ? this._unicodeService.wcwidth(e) : this._unicodeService.getStringCellWidth(e), C) { + this._tmpCtx.save(); + const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)), + t = e % 2 == 1 ? .5 : 0; + if (this._tmpCtx.lineWidth = e, this._workAttributeData.isUnderlineColorDefault()) this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle; + else if (this._workAttributeData.isUnderlineColorRGB()) P = !1, this._tmpCtx.strokeStyle = `rgb(${l.AttributeData.toColorRGB(this._workAttributeData.getUnderlineColor()).join(",")})`; + else { + P = !1; + let e = this._workAttributeData.getUnderlineColor(); + this._config.drawBoldTextInBrightColors && this._workAttributeData.isBold() && e < 8 && (e += 8), this._tmpCtx.strokeStyle = this._getColorFromAnsiIndex(e).css + } + this._tmpCtx.beginPath(); + const i = T, + s = Math.ceil(T + this._config.deviceCharHeight) - t - (a ? 2 * e : 0), + r = s + e, + o = s + 2 * e; + let c = this._workAttributeData.getUnderlineVariantOffset(); + for (let a = 0; a < O; a++) { + this._tmpCtx.save(); + const h = i + a * this._config.deviceCellWidth, + l = i + (a + 1) * this._config.deviceCellWidth, + d = h + this._config.deviceCellWidth / 2; + switch (this._workAttributeData.extended.underlineStyle) { + case 2: + this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s), this._tmpCtx.moveTo(h, o), this._tmpCtx.lineTo(l, o); + break; + case 3: + const i = e <= 1 ? o : Math.ceil(T + this._config.deviceCharHeight - e / 2) - t, + a = e <= 1 ? s : Math.ceil(T + this._config.deviceCharHeight + e / 2) - t, + _ = new Path2D; + _.rect(h, s, this._config.deviceCellWidth, o - s), this._tmpCtx.clip(_), this._tmpCtx.moveTo(h - this._config.deviceCellWidth / 2, r), this._tmpCtx.bezierCurveTo(h - this._config.deviceCellWidth / 2, a, h, a, h, r), this._tmpCtx.bezierCurveTo(h, i, d, i, d, r), this._tmpCtx.bezierCurveTo(d, a, l, a, l, r), this._tmpCtx.bezierCurveTo(l, i, l + this._config.deviceCellWidth / 2, i, l + this._config.deviceCellWidth / 2, r); + break; + case 4: + const u = 0 === c ? 0 : c >= e ? 2 * e - c : e - c; + 0 == !(c >= e) || 0 === u ? (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h + u, s), this._tmpCtx.lineTo(l, s)) : (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(h + u, s), this._tmpCtx.moveTo(h + u + e, s), this._tmpCtx.lineTo(l, s)), c = (0, n.computeNextVariantOffset)(l - h, e, c); + break; + case 5: + const f = .6, + v = .3, + g = l - h, + p = Math.floor(f * g), + m = Math.floor(v * g), + C = g - p - m; + this._tmpCtx.setLineDash([p, m, C]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s); + break; + default: + this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s) + } + this._tmpCtx.stroke(), this._tmpCtx.restore() + } + if (this._tmpCtx.restore(), !B && this._config.fontSize >= 12 && !this._config.allowTransparency && " " !== h) { + this._tmpCtx.save(), this._tmpCtx.textBaseline = "alphabetic"; + const t = this._tmpCtx.measureText(h); + if (this._tmpCtx.restore(), "actualBoundingBoxDescent" in t && t.actualBoundingBoxDescent > 0) { + this._tmpCtx.save(); + const t = new Path2D; + t.rect(i, s - Math.ceil(e / 2), this._config.deviceCellWidth * O, o - s + Math.ceil(e / 2)), this._tmpCtx.clip(t), this._tmpCtx.lineWidth = 3 * this._config.devicePixelRatio, this._tmpCtx.strokeStyle = E.css, this._tmpCtx.strokeText(h, T, T + this._config.deviceCharHeight), this._tmpCtx.restore() + } + } + } + if (b) { + const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)), + t = e % 2 == 1 ? .5 : 0; + this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + t), this._tmpCtx.stroke() + } + if (B || this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight), "_" === h && !this._config.allowTransparency) { + let e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P); + if (e) + for (let t = 1; t <= 5 && (this._tmpCtx.save(), this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.restore(), this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight - t), e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P), e); t++); + } + if (S) { + const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 10)), + t = this._tmpCtx.lineWidth % 2 == 1 ? .5 : 0; + this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.stroke() + } + this._tmpCtx.restore(); + const I = this._tmpCtx.getImageData(0, 0, this._tmpCanvas.width, this._tmpCanvas.height); + let F; + if (F = this._config.allowTransparency ? function(e) { + for (let t = 0; t < e.data.length; t += 4) + if (e.data[t + 3] > 0) return !1; + return !0 + }(I) : g(I, E, k, P), F) return _; + const H = this._findGlyphBoundingBox(I, this._workBoundingBox, c, D, B, T); + let $, W; + for (;;) { + if (0 === this._activePages.length) { + const e = this._createNewPage(); + $ = e, W = e.currentRow, W.height = H.size.y; + break + } + $ = this._activePages[this._activePages.length - 1], W = $.currentRow; + for (const e of this._activePages) H.size.y <= e.currentRow.height && ($ = e, W = e.currentRow); + for (let e = this._activePages.length - 1; e >= 0; e--) + for (const t of this._activePages[e].fixedRows) t.height <= W.height && H.size.y <= t.height && ($ = this._activePages[e], W = t); + if (W.y + H.size.y >= $.canvas.height || W.height > H.size.y + 2) { + let e = !1; + if ($.currentRow.y + $.currentRow.height + H.size.y >= $.canvas.height) { + let t; + for (const e of this._activePages) + if (e.currentRow.y + e.currentRow.height + H.size.y < e.canvas.height) { + t = e; + break + } if (t) $ = t; + else if (f.maxAtlasPages && this._pages.length >= f.maxAtlasPages && W.y + H.size.y <= $.canvas.height && W.height >= H.size.y && W.x + H.size.x <= $.canvas.width) e = !0; + else { + const t = this._createNewPage(); + $ = t, W = t.currentRow, W.height = H.size.y, e = !0 + } + } + e || ($.currentRow.height > 0 && $.fixedRows.push($.currentRow), W = { + x: 0, + y: $.currentRow.y + $.currentRow.height, + height: H.size.y + }, $.fixedRows.push(W), $.currentRow = { + x: 0, + y: W.y + W.height, + height: 0 + }) + } + if (W.x + H.size.x <= $.canvas.width) break; + W === $.currentRow ? (W.x = 0, W.y += W.height, W.height = 0) : $.fixedRows.splice($.fixedRows.indexOf(W), 1) + } + return H.texturePage = this._pages.indexOf($), H.texturePosition.x = W.x, H.texturePosition.y = W.y, H.texturePositionClipSpace.x = W.x / $.canvas.width, H.texturePositionClipSpace.y = W.y / $.canvas.height, H.sizeClipSpace.x /= $.canvas.width, H.sizeClipSpace.y /= $.canvas.height, W.height = Math.max(W.height, H.size.y), W.x += H.size.x, $.ctx.putImageData(I, H.texturePosition.x - this._workBoundingBox.left, H.texturePosition.y - this._workBoundingBox.top, this._workBoundingBox.left, this._workBoundingBox.top, H.size.x, H.size.y), $.addGlyph(H), $.version++, H + } + _findGlyphBoundingBox(e, t, i, s, r, n) { + t.top = 0; + const o = s ? this._config.deviceCellHeight : this._tmpCanvas.height, + a = s ? this._config.deviceCellWidth : i; + let h = !1; + for (let i = 0; i < o; i++) { + for (let s = 0; s < a; s++) { + const r = i * this._tmpCanvas.width * 4 + 4 * s + 3; + if (0 !== e.data[r]) { + t.top = i, h = !0; + break + } + } + if (h) break + } + t.left = 0, h = !1; + for (let i = 0; i < n + a; i++) { + for (let s = 0; s < o; s++) { + const r = s * this._tmpCanvas.width * 4 + 4 * i + 3; + if (0 !== e.data[r]) { + t.left = i, h = !0; + break + } + } + if (h) break + } + t.right = a, h = !1; + for (let i = n + a - 1; i >= n; i--) { + for (let s = 0; s < o; s++) { + const r = s * this._tmpCanvas.width * 4 + 4 * i + 3; + if (0 !== e.data[r]) { + t.right = i, h = !0; + break + } + } + if (h) break + } + t.bottom = o, h = !1; + for (let i = o - 1; i >= 0; i--) { + for (let s = 0; s < a; s++) { + const r = i * this._tmpCanvas.width * 4 + 4 * s + 3; + if (0 !== e.data[r]) { + t.bottom = i, h = !0; + break + } + } + if (h) break + } + return { + texturePage: 0, + texturePosition: { + x: 0, + y: 0 + }, + texturePositionClipSpace: { + x: 0, + y: 0 + }, + size: { + x: t.right - t.left + 1, + y: t.bottom - t.top + 1 + }, + sizeClipSpace: { + x: t.right - t.left + 1, + y: t.bottom - t.top + 1 + }, + offset: { + x: -t.left + n + (s || r ? Math.floor((this._config.deviceCellWidth - this._config.deviceCharWidth) / 2) : 0), + y: -t.top + n + (s || r ? 1 === this._config.lineHeight ? 0 : Math.round((this._config.deviceCellHeight - this._config.deviceCharHeight) / 2) : 0) + } + } + } + } + t.TextureAtlas = f; + class v { + get percentageUsed() { + return this._usedPixels / (this.canvas.width * this.canvas.height) + } + get glyphs() { + return this._glyphs + } + addGlyph(e) { + this._glyphs.push(e), this._usedPixels += e.size.x * e.size.y + } + constructor(e, t, i) { + if (this._usedPixels = 0, this._glyphs = [], this.version = 0, this.currentRow = { + x: 0, + y: 0, + height: 0 + }, this.fixedRows = [], i) + for (const e of i) this._glyphs.push(...e.glyphs), this._usedPixels += e._usedPixels; + this.canvas = p(e, t, t), this.ctx = (0, n.throwIfFalsy)(this.canvas.getContext("2d", { + alpha: !0 + })) + } + clear() { + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.currentRow.x = 0, this.currentRow.y = 0, this.currentRow.height = 0, this.fixedRows.length = 0, this.version++ + } + } + + function g(e, t, i, s) { + const r = t.rgba >>> 24, + n = t.rgba >>> 16 & 255, + o = t.rgba >>> 8 & 255, + a = i.rgba >>> 24, + h = i.rgba >>> 16 & 255, + c = i.rgba >>> 8 & 255, + l = Math.floor((Math.abs(r - a) + Math.abs(n - h) + Math.abs(o - c)) / 12); + let d = !0; + for (let t = 0; t < e.data.length; t += 4) e.data[t] === r && e.data[t + 1] === n && e.data[t + 2] === o || s && Math.abs(e.data[t] - r) + Math.abs(e.data[t + 1] - n) + Math.abs(e.data[t + 2] - o) < l ? e.data[t + 3] = 0 : d = !1; + return d + } + + function p(e, t, i) { + const s = e.createElement("canvas"); + return s.width = t, s.height = i, s + } + }, + 160: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.contrastRatio = t.toPaddedHex = t.rgba = t.rgb = t.css = t.color = t.channels = t.NULL_COLOR = void 0; + let i = 0, + s = 0, + r = 0, + n = 0; + var o, a, h, c, l; + + function d(e) { + const t = e.toString(16); + return t.length < 2 ? "0" + t : t + } + + function _(e, t) { + return e < t ? (t + .05) / (e + .05) : (e + .05) / (t + .05) + } + t.NULL_COLOR = { + css: "#00000000", + rgba: 0 + }, + function(e) { + e.toCss = function(e, t, i, s) { + return void 0 !== s ? `#${d(e)}${d(t)}${d(i)}${d(s)}` : `#${d(e)}${d(t)}${d(i)}` + }, e.toRgba = function(e, t, i, s = 255) { + return (e << 24 | t << 16 | i << 8 | s) >>> 0 + }, e.toColor = function(t, i, s, r) { + return { + css: e.toCss(t, i, s, r), + rgba: e.toRgba(t, i, s, r) + } + } + }(o || (t.channels = o = {})), + function(e) { + function t(e, t) { + return n = Math.round(255 * t), [i, s, r] = l.toChannels(e.rgba), { + css: o.toCss(i, s, r, n), + rgba: o.toRgba(i, s, r, n) + } + } + e.blend = function(e, t) { + if (n = (255 & t.rgba) / 255, 1 === n) return { + css: t.css, + rgba: t.rgba + }; + const a = t.rgba >> 24 & 255, + h = t.rgba >> 16 & 255, + c = t.rgba >> 8 & 255, + l = e.rgba >> 24 & 255, + d = e.rgba >> 16 & 255, + _ = e.rgba >> 8 & 255; + return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), { + css: o.toCss(i, s, r), + rgba: o.toRgba(i, s, r) + } + }, e.isOpaque = function(e) { + return !(255 & ~e.rgba) + }, e.ensureContrastRatio = function(e, t, i) { + const s = l.ensureContrastRatio(e.rgba, t.rgba, i); + if (s) return o.toColor(s >> 24 & 255, s >> 16 & 255, s >> 8 & 255) + }, e.opaque = function(e) { + const t = (255 | e.rgba) >>> 0; + return [i, s, r] = l.toChannels(t), { + css: o.toCss(i, s, r), + rgba: t + } + }, e.opacity = t, e.multiplyOpacity = function(e, i) { + return n = 255 & e.rgba, t(e, n * i / 255) + }, e.toColorRGB = function(e) { + return [e.rgba >> 24 & 255, e.rgba >> 16 & 255, e.rgba >> 8 & 255] + } + }(a || (t.color = a = {})), + function(e) { + let t, a; + try { + const e = document.createElement("canvas"); + e.width = 1, e.height = 1; + const i = e.getContext("2d", { + willReadFrequently: !0 + }); + i && (t = i, t.globalCompositeOperation = "copy", a = t.createLinearGradient(0, 0, 1, 1)) + } catch {} + e.toColor = function(e) { + if (e.match(/#[\da-f]{3,8}/i)) switch (e.length) { + case 4: + return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), o.toColor(i, s, r); + case 5: + return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), n = parseInt(e.slice(4, 5).repeat(2), 16), o.toColor(i, s, r, n); + case 7: + return { + css: e, rgba: (parseInt(e.slice(1), 16) << 8 | 255) >>> 0 + }; + case 9: + return { + css: e, rgba: parseInt(e.slice(1), 16) >>> 0 + } + } + const h = e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/); + if (h) return i = parseInt(h[1]), s = parseInt(h[2]), r = parseInt(h[3]), n = Math.round(255 * (void 0 === h[5] ? 1 : parseFloat(h[5]))), o.toColor(i, s, r, n); + if (!t || !a) throw new Error("css.toColor: Unsupported css format"); + if (t.fillStyle = a, t.fillStyle = e, "string" != typeof t.fillStyle) throw new Error("css.toColor: Unsupported css format"); + if (t.fillRect(0, 0, 1, 1), [i, s, r, n] = t.getImageData(0, 0, 1, 1).data, 255 !== n) throw new Error("css.toColor: Unsupported css format"); + return { + rgba: o.toRgba(i, s, r, n), + css: e + } + } + }(h || (t.css = h = {})), + function(e) { + function t(e, t, i) { + const s = e / 255, + r = t / 255, + n = i / 255; + return .2126 * (s <= .03928 ? s / 12.92 : Math.pow((s + .055) / 1.055, 2.4)) + .7152 * (r <= .03928 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4)) + .0722 * (n <= .03928 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4)) + } + e.relativeLuminance = function(e) { + return t(e >> 16 & 255, e >> 8 & 255, 255 & e) + }, e.relativeLuminance2 = t + }(c || (t.rgb = c = {})), + function(e) { + function t(e, t, i) { + const s = e >> 24 & 255, + r = e >> 16 & 255, + n = e >> 8 & 255; + let o = t >> 24 & 255, + a = t >> 16 & 255, + h = t >> 8 & 255, + l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + for (; l < i && (o > 0 || a > 0 || h > 0);) o -= Math.max(0, Math.ceil(.1 * o)), a -= Math.max(0, Math.ceil(.1 * a)), h -= Math.max(0, Math.ceil(.1 * h)), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + return (o << 24 | a << 16 | h << 8 | 255) >>> 0 + } + + function a(e, t, i) { + const s = e >> 24 & 255, + r = e >> 16 & 255, + n = e >> 8 & 255; + let o = t >> 24 & 255, + a = t >> 16 & 255, + h = t >> 8 & 255, + l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + for (; l < i && (o < 255 || a < 255 || h < 255);) o = Math.min(255, o + Math.ceil(.1 * (255 - o))), a = Math.min(255, a + Math.ceil(.1 * (255 - a))), h = Math.min(255, h + Math.ceil(.1 * (255 - h))), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + return (o << 24 | a << 16 | h << 8 | 255) >>> 0 + } + e.blend = function(e, t) { + if (n = (255 & t) / 255, 1 === n) return t; + const a = t >> 24 & 255, + h = t >> 16 & 255, + c = t >> 8 & 255, + l = e >> 24 & 255, + d = e >> 16 & 255, + _ = e >> 8 & 255; + return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), o.toRgba(i, s, r) + }, e.ensureContrastRatio = function(e, i, s) { + const r = c.relativeLuminance(e >> 8), + n = c.relativeLuminance(i >> 8); + if (_(r, n) < s) { + if (n < r) { + const n = t(e, i, s), + o = _(r, c.relativeLuminance(n >> 8)); + if (o < s) { + const t = a(e, i, s); + return o > _(r, c.relativeLuminance(t >> 8)) ? n : t + } + return n + } + const o = a(e, i, s), + h = _(r, c.relativeLuminance(o >> 8)); + if (h < s) { + const n = t(e, i, s); + return h > _(r, c.relativeLuminance(n >> 8)) ? o : n + } + return o + } + }, e.reduceLuminance = t, e.increaseLuminance = a, e.toChannels = function(e) { + return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e] + } + }(l || (t.rgba = l = {})), t.toPaddedHex = d, t.contrastRatio = _ + }, + 345: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class { + constructor() { + this._listeners = [], this._disposed = !1 + } + get event() { + return this._event || (this._event = e => (this._listeners.push(e), { + dispose: () => { + if (!this._disposed) + for (let t = 0; t < this._listeners.length; t++) + if (this._listeners[t] === e) return void this._listeners.splice(t, 1) + } + })), this._event + } + fire(e, t) { + const i = []; + for (let e = 0; e < this._listeners.length; e++) i.push(this._listeners[e]); + for (let s = 0; s < i.length; s++) i[s].call(void 0, e, t) + } + dispose() { + this.clearListeners(), this._disposed = !0 + } + clearListeners() { + this._listeners && (this._listeners.length = 0) + } + }, t.forwardEvent = function(e, t) { + return e((e => t.fire(e))) + }, t.runAndSubscribe = function(e, t) { + return t(void 0), e((e => t(e))) + } + }, + 859: (e, t) => { + function i(e) { + for (const t of e) t.dispose(); + e.length = 0 + } + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.getDisposeArrayDisposable = t.disposeArray = t.toDisposable = t.MutableDisposable = t.Disposable = void 0, t.Disposable = class { + constructor() { + this._disposables = [], this._isDisposed = !1 + } + dispose() { + this._isDisposed = !0; + for (const e of this._disposables) e.dispose(); + this._disposables.length = 0 + } + register(e) { + return this._disposables.push(e), e + } + unregister(e) { + const t = this._disposables.indexOf(e); - 1 !== t && this._disposables.splice(t, 1) + } + }, t.MutableDisposable = class { + constructor() { + this._isDisposed = !1 + } + get value() { + return this._isDisposed ? void 0 : this._value + } + set value(e) { + this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e) + } + clear() { + this.value = void 0 + } + dispose() { + this._isDisposed = !0, this._value?.dispose(), this._value = void 0 + } + }, t.toDisposable = function(e) { + return { + dispose: e + } + }, t.disposeArray = i, t.getDisposeArrayDisposable = function(e) { + return { + dispose: () => i(e) + } + } + }, + 485: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.FourKeyMap = t.TwoKeyMap = void 0; + class i { + constructor() { + this._data = {} + } + set(e, t, i) { + this._data[e] || (this._data[e] = {}), this._data[e][t] = i + } + get(e, t) { + return this._data[e] ? this._data[e][t] : void 0 + } + clear() { + this._data = {} + } + } + t.TwoKeyMap = i, t.FourKeyMap = class { + constructor() { + this._data = new i + } + set(e, t, s, r, n) { + this._data.get(e, t) || this._data.set(e, t, new i), this._data.get(e, t).set(s, r, n) + } + get(e, t, i, s) { + return this._data.get(e, t)?.get(i, s) + } + clear() { + this._data.clear() + } + } + }, + 399: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.isChromeOS = t.isLinux = t.isWindows = t.isIphone = t.isIpad = t.isMac = t.getSafariVersion = t.isSafari = t.isLegacyEdge = t.isFirefox = t.isNode = void 0, t.isNode = "undefined" != typeof process && "title" in process; + const i = t.isNode ? "node" : navigator.userAgent, + s = t.isNode ? "node" : navigator.platform; + t.isFirefox = i.includes("Firefox"), t.isLegacyEdge = i.includes("Edge"), t.isSafari = /^((?!chrome|android).)*safari/i.test(i), t.getSafariVersion = function() { + if (!t.isSafari) return 0; + const e = i.match(/Version\/(\d+)/); + return null === e || e.length < 2 ? 0 : parseInt(e[1]) + }, t.isMac = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(s), t.isIpad = "iPad" === s, t.isIphone = "iPhone" === s, t.isWindows = ["Windows", "Win16", "Win32", "WinCE"].includes(s), t.isLinux = s.indexOf("Linux") >= 0, t.isChromeOS = /\bCrOS\b/.test(i) + }, + 385: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.DebouncedIdleTask = t.IdleTaskQueue = t.PriorityTaskQueue = void 0; + const s = i(399); + class r { + constructor() { + this._tasks = [], this._i = 0 + } + enqueue(e) { + this._tasks.push(e), this._start() + } + flush() { + for (; this._i < this._tasks.length;) this._tasks[this._i]() || this._i++; + this.clear() + } + clear() { + this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0 + } + _start() { + this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this))) + } + _process(e) { + this._idleCallback = void 0; + let t = 0, + i = 0, + s = e.timeRemaining(), + r = 0; + for (; this._i < this._tasks.length;) { + if (t = Date.now(), this._tasks[this._i]() || this._i++, t = Math.max(1, Date.now() - t), i = Math.max(t, i), r = e.timeRemaining(), 1.5 * i > r) return s - t < -20 && console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s - t))}ms`), void this._start(); + s = r + } + this.clear() + } + } + class n extends r { + _requestCallback(e) { + return setTimeout((() => e(this._createDeadline(16)))) + } + _cancelCallback(e) { + clearTimeout(e) + } + _createDeadline(e) { + const t = Date.now() + e; + return { + timeRemaining: () => Math.max(0, t - Date.now()) + } + } + } + t.PriorityTaskQueue = n, t.IdleTaskQueue = !s.isNode && "requestIdleCallback" in window ? class extends r { + _requestCallback(e) { + return requestIdleCallback(e) + } + _cancelCallback(e) { + cancelIdleCallback(e) + } + } : n, t.DebouncedIdleTask = class { + constructor() { + this._queue = new t.IdleTaskQueue + } + set(e) { + this._queue.clear(), this._queue.enqueue(e) + } + flush() { + this._queue.flush() + } + } + }, + 147: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.ExtendedAttrs = t.AttributeData = void 0; + class i { + constructor() { + this.fg = 0, this.bg = 0, this.extended = new s + } + static toColorRGB(e) { + return [e >>> 16 & 255, e >>> 8 & 255, 255 & e] + } + static fromColorRGB(e) { + return (255 & e[0]) << 16 | (255 & e[1]) << 8 | 255 & e[2] + } + clone() { + const e = new i; + return e.fg = this.fg, e.bg = this.bg, e.extended = this.extended.clone(), e + } + isInverse() { + return 67108864 & this.fg + } + isBold() { + return 134217728 & this.fg + } + isUnderline() { + return this.hasExtendedAttrs() && 0 !== this.extended.underlineStyle ? 1 : 268435456 & this.fg + } + isBlink() { + return 536870912 & this.fg + } + isInvisible() { + return 1073741824 & this.fg + } + isItalic() { + return 67108864 & this.bg + } + isDim() { + return 134217728 & this.bg + } + isStrikethrough() { + return 2147483648 & this.fg + } + isProtected() { + return 536870912 & this.bg + } + isOverline() { + return 1073741824 & this.bg + } + getFgColorMode() { + return 50331648 & this.fg + } + getBgColorMode() { + return 50331648 & this.bg + } + isFgRGB() { + return !(50331648 & ~this.fg) + } + isBgRGB() { + return !(50331648 & ~this.bg) + } + isFgPalette() { + return 16777216 == (50331648 & this.fg) || 33554432 == (50331648 & this.fg) + } + isBgPalette() { + return 16777216 == (50331648 & this.bg) || 33554432 == (50331648 & this.bg) + } + isFgDefault() { + return !(50331648 & this.fg) + } + isBgDefault() { + return !(50331648 & this.bg) + } + isAttributeDefault() { + return 0 === this.fg && 0 === this.bg + } + getFgColor() { + switch (50331648 & this.fg) { + case 16777216: + case 33554432: + return 255 & this.fg; + case 50331648: + return 16777215 & this.fg; + default: + return -1 + } + } + getBgColor() { + switch (50331648 & this.bg) { + case 16777216: + case 33554432: + return 255 & this.bg; + case 50331648: + return 16777215 & this.bg; + default: + return -1 + } + } + hasExtendedAttrs() { + return 268435456 & this.bg + } + updateExtended() { + this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456 + } + getUnderlineColor() { + if (268435456 & this.bg && ~this.extended.underlineColor) switch (50331648 & this.extended.underlineColor) { + case 16777216: + case 33554432: + return 255 & this.extended.underlineColor; + case 50331648: + return 16777215 & this.extended.underlineColor; + default: + return this.getFgColor() + } + return this.getFgColor() + } + getUnderlineColorMode() { + return 268435456 & this.bg && ~this.extended.underlineColor ? 50331648 & this.extended.underlineColor : this.getFgColorMode() + } + isUnderlineColorRGB() { + return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & ~this.extended.underlineColor) : this.isFgRGB() + } + isUnderlineColorPalette() { + return 268435456 & this.bg && ~this.extended.underlineColor ? 16777216 == (50331648 & this.extended.underlineColor) || 33554432 == (50331648 & this.extended.underlineColor) : this.isFgPalette() + } + isUnderlineColorDefault() { + return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & this.extended.underlineColor) : this.isFgDefault() + } + getUnderlineStyle() { + return 268435456 & this.fg ? 268435456 & this.bg ? this.extended.underlineStyle : 1 : 0 + } + getUnderlineVariantOffset() { + return this.extended.underlineVariantOffset + } + } + t.AttributeData = i; + class s { + get ext() { + return this._urlId ? -469762049 & this._ext | this.underlineStyle << 26 : this._ext + } + set ext(e) { + this._ext = e + } + get underlineStyle() { + return this._urlId ? 5 : (469762048 & this._ext) >> 26 + } + set underlineStyle(e) { + this._ext &= -469762049, this._ext |= e << 26 & 469762048 + } + get underlineColor() { + return 67108863 & this._ext + } + set underlineColor(e) { + this._ext &= -67108864, this._ext |= 67108863 & e + } + get urlId() { + return this._urlId + } + set urlId(e) { + this._urlId = e + } + get underlineVariantOffset() { + const e = (3758096384 & this._ext) >> 29; + return e < 0 ? 4294967288 ^ e : e + } + set underlineVariantOffset(e) { + this._ext &= 536870911, this._ext |= e << 29 & 3758096384 + } + constructor(e = 0, t = 0) { + this._ext = 0, this._urlId = 0, this._ext = e, this._urlId = t + } + clone() { + return new s(this._ext, this._urlId) + } + isEmpty() { + return 0 === this.underlineStyle && 0 === this._urlId + } + } + t.ExtendedAttrs = s + }, + 782: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CellData = void 0; + const s = i(133), + r = i(855), + n = i(147); + class o extends n.AttributeData { + constructor() { + super(...arguments), this.content = 0, this.fg = 0, this.bg = 0, this.extended = new n.ExtendedAttrs, this.combinedData = "" + } + static fromCharData(e) { + const t = new o; + return t.setFromCharData(e), t + } + isCombined() { + return 2097152 & this.content + } + getWidth() { + return this.content >> 22 + } + getChars() { + return 2097152 & this.content ? this.combinedData : 2097151 & this.content ? (0, s.stringFromCodePoint)(2097151 & this.content) : "" + } + getCode() { + return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : 2097151 & this.content + } + setFromCharData(e) { + this.fg = e[r.CHAR_DATA_ATTR_INDEX], this.bg = 0; + let t = !1; + if (e[r.CHAR_DATA_CHAR_INDEX].length > 2) t = !0; + else if (2 === e[r.CHAR_DATA_CHAR_INDEX].length) { + const i = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0); + if (55296 <= i && i <= 56319) { + const s = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1); + 56320 <= s && s <= 57343 ? this.content = 1024 * (i - 55296) + s - 56320 + 65536 | e[r.CHAR_DATA_WIDTH_INDEX] << 22 : t = !0 + } else t = !0 + } else this.content = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | e[r.CHAR_DATA_WIDTH_INDEX] << 22; + t && (this.combinedData = e[r.CHAR_DATA_CHAR_INDEX], this.content = 2097152 | e[r.CHAR_DATA_WIDTH_INDEX] << 22) + } + getAsCharData() { + return [this.fg, this.getChars(), this.getWidth(), this.getCode()] + } + } + t.CellData = o + }, + 855: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.WHITESPACE_CELL_CODE = t.WHITESPACE_CELL_WIDTH = t.WHITESPACE_CELL_CHAR = t.NULL_CELL_CODE = t.NULL_CELL_WIDTH = t.NULL_CELL_CHAR = t.CHAR_DATA_CODE_INDEX = t.CHAR_DATA_WIDTH_INDEX = t.CHAR_DATA_CHAR_INDEX = t.CHAR_DATA_ATTR_INDEX = t.DEFAULT_EXT = t.DEFAULT_ATTR = t.DEFAULT_COLOR = void 0, t.DEFAULT_COLOR = 0, t.DEFAULT_ATTR = 256 | t.DEFAULT_COLOR << 9, t.DEFAULT_EXT = 0, t.CHAR_DATA_ATTR_INDEX = 0, t.CHAR_DATA_CHAR_INDEX = 1, t.CHAR_DATA_WIDTH_INDEX = 2, t.CHAR_DATA_CODE_INDEX = 3, t.NULL_CELL_CHAR = "", t.NULL_CELL_WIDTH = 1, t.NULL_CELL_CODE = 0, t.WHITESPACE_CELL_CHAR = " ", t.WHITESPACE_CELL_WIDTH = 1, t.WHITESPACE_CELL_CODE = 32 + }, + 133: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.Utf8ToUtf32 = t.StringToUtf32 = t.utf32ToString = t.stringFromCodePoint = void 0, t.stringFromCodePoint = function(e) { + return e > 65535 ? (e -= 65536, String.fromCharCode(55296 + (e >> 10)) + String.fromCharCode(e % 1024 + 56320)) : String.fromCharCode(e) + }, t.utf32ToString = function(e, t = 0, i = e.length) { + let s = ""; + for (let r = t; r < i; ++r) { + let t = e[r]; + t > 65535 ? (t -= 65536, s += String.fromCharCode(55296 + (t >> 10)) + String.fromCharCode(t % 1024 + 56320)) : s += String.fromCharCode(t) + } + return s + }, t.StringToUtf32 = class { + constructor() { + this._interim = 0 + } + clear() { + this._interim = 0 + } + decode(e, t) { + const i = e.length; + if (!i) return 0; + let s = 0, + r = 0; + if (this._interim) { + const i = e.charCodeAt(r++); + 56320 <= i && i <= 57343 ? t[s++] = 1024 * (this._interim - 55296) + i - 56320 + 65536 : (t[s++] = this._interim, t[s++] = i), this._interim = 0 + } + for (let n = r; n < i; ++n) { + const r = e.charCodeAt(n); + if (55296 <= r && r <= 56319) { + if (++n >= i) return this._interim = r, s; + const o = e.charCodeAt(n); + 56320 <= o && o <= 57343 ? t[s++] = 1024 * (r - 55296) + o - 56320 + 65536 : (t[s++] = r, t[s++] = o) + } else 65279 !== r && (t[s++] = r) + } + return s + } + }, t.Utf8ToUtf32 = class { + constructor() { + this.interim = new Uint8Array(3) + } + clear() { + this.interim.fill(0) + } + decode(e, t) { + const i = e.length; + if (!i) return 0; + let s, r, n, o, a = 0, + h = 0, + c = 0; + if (this.interim[0]) { + let s = !1, + r = this.interim[0]; + r &= 192 == (224 & r) ? 31 : 224 == (240 & r) ? 15 : 7; + let n, o = 0; + for (; + (n = 63 & this.interim[++o]) && o < 4;) r <<= 6, r |= n; + const h = 192 == (224 & this.interim[0]) ? 2 : 224 == (240 & this.interim[0]) ? 3 : 4, + l = h - o; + for (; c < l;) { + if (c >= i) return 0; + if (n = e[c++], 128 != (192 & n)) { + c--, s = !0; + break + } + this.interim[o++] = n, r <<= 6, r |= 63 & n + } + s || (2 === h ? r < 128 ? c-- : t[a++] = r : 3 === h ? r < 2048 || r >= 55296 && r <= 57343 || 65279 === r || (t[a++] = r) : r < 65536 || r > 1114111 || (t[a++] = r)), this.interim.fill(0) + } + const l = i - 4; + let d = c; + for (; d < i;) { + for (; !(!(d < l) || 128 & (s = e[d]) || 128 & (r = e[d + 1]) || 128 & (n = e[d + 2]) || 128 & (o = e[d + 3]));) t[a++] = s, t[a++] = r, t[a++] = n, t[a++] = o, d += 4; + if (s = e[d++], s < 128) t[a++] = s; + else if (192 == (224 & s)) { + if (d >= i) return this.interim[0] = s, a; + if (r = e[d++], 128 != (192 & r)) { + d--; + continue + } + if (h = (31 & s) << 6 | 63 & r, h < 128) { + d--; + continue + } + t[a++] = h + } else if (224 == (240 & s)) { + if (d >= i) return this.interim[0] = s, a; + if (r = e[d++], 128 != (192 & r)) { + d--; + continue + } + if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; + if (n = e[d++], 128 != (192 & n)) { + d--; + continue + } + if (h = (15 & s) << 12 | (63 & r) << 6 | 63 & n, h < 2048 || h >= 55296 && h <= 57343 || 65279 === h) continue; + t[a++] = h + } else if (240 == (248 & s)) { + if (d >= i) return this.interim[0] = s, a; + if (r = e[d++], 128 != (192 & r)) { + d--; + continue + } + if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; + if (n = e[d++], 128 != (192 & n)) { + d--; + continue + } + if (d >= i) return this.interim[0] = s, this.interim[1] = r, this.interim[2] = n, a; + if (o = e[d++], 128 != (192 & o)) { + d--; + continue + } + if (h = (7 & s) << 18 | (63 & r) << 12 | (63 & n) << 6 | 63 & o, h < 65536 || h > 1114111) continue; + t[a++] = h + } + } + return a + } + } + }, + 776: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.traceCall = t.setTraceLogger = t.LogService = void 0; + const n = i(859), + o = i(97), + a = { + trace: o.LogLevelEnum.TRACE, + debug: o.LogLevelEnum.DEBUG, + info: o.LogLevelEnum.INFO, + warn: o.LogLevelEnum.WARN, + error: o.LogLevelEnum.ERROR, + off: o.LogLevelEnum.OFF + }; + let h, c = t.LogService = class extends n.Disposable { + get logLevel() { + return this._logLevel + } + constructor(e) { + super(), this._optionsService = e, this._logLevel = o.LogLevelEnum.OFF, this._updateLogLevel(), this.register(this._optionsService.onSpecificOptionChange("logLevel", (() => this._updateLogLevel()))), h = this + } + _updateLogLevel() { + this._logLevel = a[this._optionsService.rawOptions.logLevel] + } + _evalLazyOptionalParams(e) { + for (let t = 0; t < e.length; t++) "function" == typeof e[t] && (e[t] = e[t]()) + } + _log(e, t, i) { + this._evalLazyOptionalParams(i), e.call(console, (this._optionsService.options.logger ? "" : "xterm.js: ") + t, ...i) + } + trace(e, ...t) { + this._logLevel <= o.LogLevelEnum.TRACE && this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger) ?? console.log, e, t) + } + debug(e, ...t) { + this._logLevel <= o.LogLevelEnum.DEBUG && this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger) ?? console.log, e, t) + } + info(e, ...t) { + this._logLevel <= o.LogLevelEnum.INFO && this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger) ?? console.info, e, t) + } + warn(e, ...t) { + this._logLevel <= o.LogLevelEnum.WARN && this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger) ?? console.warn, e, t) + } + error(e, ...t) { + this._logLevel <= o.LogLevelEnum.ERROR && this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger) ?? console.error, e, t) + } + }; + t.LogService = c = s([r(0, o.IOptionsService)], c), t.setTraceLogger = function(e) { + h = e + }, t.traceCall = function(e, t, i) { + if ("function" != typeof i.value) throw new Error("not supported"); + const s = i.value; + i.value = function(...e) { + if (h.logLevel !== o.LogLevelEnum.TRACE) return s.apply(this, e); + h.trace(`GlyphRenderer#${s.name}(${e.map((e => JSON.stringify(e))).join(", ")})`); + const t = s.apply(this, e); + return h.trace(`GlyphRenderer#${s.name} return`, t), t + } + } + }, + 726: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.createDecorator = t.getServiceDependencies = t.serviceRegistry = void 0; + const i = "di$target", + s = "di$dependencies"; + t.serviceRegistry = new Map, t.getServiceDependencies = function(e) { + return e[s] || [] + }, t.createDecorator = function(e) { + if (t.serviceRegistry.has(e)) return t.serviceRegistry.get(e); + const r = function(e, t, n) { + if (3 !== arguments.length) throw new Error("@IServiceName-decorator can only be used to decorate a parameter"); + ! function(e, t, r) { + t[i] === t ? t[s].push({ + id: e, + index: r + }) : (t[s] = [{ + id: e, + index: r + }], t[i] = t) + }(r, e, n) + }; + return r.toString = () => e, t.serviceRegistry.set(e, r), r + } + }, + 97: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.IDecorationService = t.IUnicodeService = t.IOscLinkService = t.IOptionsService = t.ILogService = t.LogLevelEnum = t.IInstantiationService = t.ICharsetService = t.ICoreService = t.ICoreMouseService = t.IBufferService = void 0; + const s = i(726); + var r; + t.IBufferService = (0, s.createDecorator)("BufferService"), t.ICoreMouseService = (0, s.createDecorator)("CoreMouseService"), t.ICoreService = (0, s.createDecorator)("CoreService"), t.ICharsetService = (0, s.createDecorator)("CharsetService"), t.IInstantiationService = (0, s.createDecorator)("InstantiationService"), + function(e) { + e[e.TRACE = 0] = "TRACE", e[e.DEBUG = 1] = "DEBUG", e[e.INFO = 2] = "INFO", e[e.WARN = 3] = "WARN", e[e.ERROR = 4] = "ERROR", e[e.OFF = 5] = "OFF" + }(r || (t.LogLevelEnum = r = {})), t.ILogService = (0, s.createDecorator)("LogService"), t.IOptionsService = (0, s.createDecorator)("OptionsService"), t.IOscLinkService = (0, s.createDecorator)("OscLinkService"), t.IUnicodeService = (0, s.createDecorator)("UnicodeService"), t.IDecorationService = (0, s.createDecorator)("DecorationService") + } + }, + t = {}; + + function i(s) { + var r = t[s]; + if (void 0 !== r) return r.exports; + var n = t[s] = { + exports: {} + }; + return e[s].call(n.exports, n, n.exports, i), n.exports + } + var s = {}; + return (() => { + var e = s; + Object.defineProperty(e, "__esModule", { + value: !0 + }), e.WebglAddon = void 0; + const t = i(345), + r = i(859), + n = i(399), + o = i(666), + a = i(776); + class h extends r.Disposable { + constructor(e) { + if (n.isSafari && (0, n.getSafariVersion)() < 16) { + const e = { + antialias: !1, + depth: !1, + preserveDrawingBuffer: !0 + }; + if (!document.createElement("canvas").getContext("webgl2", e)) throw new Error("Webgl2 is only supported on Safari 16 and above") + } + super(), this._preserveDrawingBuffer = e, this._onChangeTextureAtlas = this.register(new t.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new t.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = this.register(new t.EventEmitter), this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._onContextLoss = this.register(new t.EventEmitter), this.onContextLoss = this._onContextLoss.event + } + activate(e) { + const i = e._core; + if (!e.element) return void this.register(i.onWillOpen((() => this.activate(e)))); + this._terminal = e; + const s = i.coreService, + n = i.optionsService, + h = i, + c = h._renderService, + l = h._characterJoinerService, + d = h._charSizeService, + _ = h._coreBrowserService, + u = h._decorationService, + f = h._logService, + v = h._themeService; + (0, a.setTraceLogger)(f), this._renderer = this.register(new o.WebglRenderer(e, l, d, _, s, u, n, v, this._preserveDrawingBuffer)), this.register((0, t.forwardEvent)(this._renderer.onContextLoss, this._onContextLoss)), this.register((0, t.forwardEvent)(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)), this.register((0, t.forwardEvent)(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)), this.register((0, t.forwardEvent)(this._renderer.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas)), c.setRenderer(this._renderer), this.register((0, r.toDisposable)((() => { + const t = this._terminal._core._renderService; + t.setRenderer(this._terminal._core._createRenderer()), t.handleResize(e.cols, e.rows) + }))) + } + get textureAtlas() { + return this._renderer?.textureAtlas + } + clearTextureAtlas() { + this._renderer?.clearTextureAtlas() + } + } + e.WebglAddon = h + })(), s + })(), e.exports = t() + }, + 314: e => { + "use strict"; + e.exports = function(e) { + var t = []; + return t.toString = function() { + return this.map((function(t) { + var i = "", + s = void 0 !== t[5]; + return t[4] && (i += "@supports (".concat(t[4], ") {")), t[2] && (i += "@media ".concat(t[2], " {")), s && (i += "@layer".concat(t[5].length > 0 ? " ".concat(t[5]) : "", " {")), i += e(t), s && (i += "}"), t[2] && (i += "}"), t[4] && (i += "}"), i + })).join("") + }, t.i = function(e, i, s, r, n) { + "string" == typeof e && (e = [ + [null, e, void 0] + ]); + var o = {}; + if (s) + for (var a = 0; a < this.length; a++) { + var h = this[a][0]; + null != h && (o[h] = !0) + } + for (var c = 0; c < e.length; c++) { + var l = [].concat(e[c]); + s && o[l[0]] || (void 0 !== n && (void 0 === l[5] || (l[1] = "@layer".concat(l[5].length > 0 ? " ".concat(l[5]) : "", " {").concat(l[1], "}")), l[5] = n), i && (l[2] ? (l[1] = "@media ".concat(l[2], " {").concat(l[1], "}"), l[2] = i) : l[2] = i), r && (l[4] ? (l[1] = "@supports (".concat(l[4], ") {").concat(l[1], "}"), l[4] = r) : l[4] = "".concat(r)), t.push(l)) + } + }, t + } + }, + 372: e => { + var t; + self, t = () => (() => { + var e = { + 575: function(e, t, i) { + "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== i.g && i.g, e.exports = function() { + "use strict"; + var e, t = "3.7.7", + i = t, + s = "function" == typeof Buffer, + r = "function" == typeof TextDecoder ? new TextDecoder : void 0, + n = "function" == typeof TextEncoder ? new TextEncoder : void 0, + o = Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="), + a = (e = {}, o.forEach((function(t, i) { + return e[t] = i + })), e), + h = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/, + c = String.fromCharCode.bind(String), + l = "function" == typeof Uint8Array.from ? Uint8Array.from.bind(Uint8Array) : function(e) { + return new Uint8Array(Array.prototype.slice.call(e, 0)) + }, + d = function(e) { + return e.replace(/=/g, "").replace(/[+\/]/g, (function(e) { + return "+" == e ? "-" : "_" + })) + }, + _ = function(e) { + return e.replace(/[^A-Za-z0-9\+\/]/g, "") + }, + u = function(e) { + for (var t, i, s, r, n = "", a = e.length % 3, h = 0; h < e.length;) { + if ((i = e.charCodeAt(h++)) > 255 || (s = e.charCodeAt(h++)) > 255 || (r = e.charCodeAt(h++)) > 255) throw new TypeError("invalid character found"); + n += o[(t = i << 16 | s << 8 | r) >> 18 & 63] + o[t >> 12 & 63] + o[t >> 6 & 63] + o[63 & t] + } + return a ? n.slice(0, a - 3) + "===".substring(a) : n + }, + f = "function" == typeof btoa ? function(e) { + return btoa(e) + } : s ? function(e) { + return Buffer.from(e, "binary").toString("base64") + } : u, + v = s ? function(e) { + return Buffer.from(e).toString("base64") + } : function(e) { + for (var t = [], i = 0, s = e.length; i < s; i += 4096) t.push(c.apply(null, e.subarray(i, i + 4096))); + return f(t.join("")) + }, + g = function(e, t) { + return void 0 === t && (t = !1), t ? d(v(e)) : v(e) + }, + p = function(e) { + if (e.length < 2) return (t = e.charCodeAt(0)) < 128 ? e : t < 2048 ? c(192 | t >>> 6) + c(128 | 63 & t) : c(224 | t >>> 12 & 15) + c(128 | t >>> 6 & 63) + c(128 | 63 & t); + var t = 65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320); + return c(240 | t >>> 18 & 7) + c(128 | t >>> 12 & 63) + c(128 | t >>> 6 & 63) + c(128 | 63 & t) + }, + m = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g, + C = function(e) { + return e.replace(m, p) + }, + S = s ? function(e) { + return Buffer.from(e, "utf8").toString("base64") + } : n ? function(e) { + return v(n.encode(e)) + } : function(e) { + return f(C(e)) + }, + b = function(e, t) { + return void 0 === t && (t = !1), t ? d(S(e)) : S(e) + }, + w = function(e) { + return b(e, !0) + }, + y = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g, + L = function(e) { + switch (e.length) { + case 4: + var t = ((7 & e.charCodeAt(0)) << 18 | (63 & e.charCodeAt(1)) << 12 | (63 & e.charCodeAt(2)) << 6 | 63 & e.charCodeAt(3)) - 65536; + return c(55296 + (t >>> 10)) + c(56320 + (1023 & t)); + case 3: + return c((15 & e.charCodeAt(0)) << 12 | (63 & e.charCodeAt(1)) << 6 | 63 & e.charCodeAt(2)); + default: + return c((31 & e.charCodeAt(0)) << 6 | 63 & e.charCodeAt(1)) + } + }, + x = function(e) { + return e.replace(y, L) + }, + E = function(e) { + if (e = e.replace(/\s+/g, ""), !h.test(e)) throw new TypeError("malformed base64."); + e += "==".slice(2 - (3 & e.length)); + for (var t, i, s, r = "", n = 0; n < e.length;) t = a[e.charAt(n++)] << 18 | a[e.charAt(n++)] << 12 | (i = a[e.charAt(n++)]) << 6 | (s = a[e.charAt(n++)]), r += 64 === i ? c(t >> 16 & 255) : 64 === s ? c(t >> 16 & 255, t >> 8 & 255) : c(t >> 16 & 255, t >> 8 & 255, 255 & t); + return r + }, + R = "function" == typeof atob ? function(e) { + return atob(_(e)) + } : s ? function(e) { + return Buffer.from(e, "base64").toString("binary") + } : E, + M = s ? function(e) { + return l(Buffer.from(e, "base64")) + } : function(e) { + return l(R(e).split("").map((function(e) { + return e.charCodeAt(0) + }))) + }, + A = function(e) { + return M(k(e)) + }, + D = s ? function(e) { + return Buffer.from(e, "base64").toString("utf8") + } : r ? function(e) { + return r.decode(M(e)) + } : function(e) { + return x(R(e)) + }, + k = function(e) { + return _(e.replace(/[-_]/g, (function(e) { + return "-" == e ? "+" : "/" + }))) + }, + T = function(e) { + return D(k(e)) + }, + B = function(e) { + return { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }, + O = function() { + var e = function(e, t) { + return Object.defineProperty(String.prototype, e, B(t)) + }; + e("fromBase64", (function() { + return T(this) + })), e("toBase64", (function(e) { + return b(this, e) + })), e("toBase64URI", (function() { + return b(this, !0) + })), e("toBase64URL", (function() { + return b(this, !0) + })), e("toUint8Array", (function() { + return A(this) + })) + }, + P = function() { + var e = function(e, t) { + return Object.defineProperty(Uint8Array.prototype, e, B(t)) + }; + e("toBase64", (function(e) { + return g(this, e) + })), e("toBase64URI", (function() { + return g(this, !0) + })), e("toBase64URL", (function() { + return g(this, !0) + })) + }, + I = { + version: t, + VERSION: i, + atob: R, + atobPolyfill: E, + btoa: f, + btoaPolyfill: u, + fromBase64: T, + toBase64: b, + encode: b, + encodeURI: w, + encodeURL: w, + utob: C, + btou: x, + decode: T, + isValid: function(e) { + if ("string" != typeof e) return !1; + var t = e.replace(/\s+/g, "").replace(/={0,2}$/, ""); + return !/[^\s0-9a-zA-Z\+/]/.test(t) || !/[^\s0-9a-zA-Z\-_]/.test(t) + }, + fromUint8Array: g, + toUint8Array: A, + extendString: O, + extendUint8Array: P, + extendBuiltins: function() { + O(), P() + }, + Base64: {} + }; + return Object.keys(I).forEach((function(e) { + return I.Base64[e] = I[e] + })), I + }() + } + }, + t = {}; + + function i(s) { + var r = t[s]; + if (void 0 !== r) return r.exports; + var n = t[s] = { + exports: {} + }; + return e[s].call(n.exports, n, n.exports, i), n.exports + } + i.g = function() { + if ("object" == typeof globalThis) return globalThis; + try { + return this || new Function("return this")() + } catch (e) { + if ("object" == typeof window) return window + } + }(); + var s = {}; + return (() => { + "use strict"; + var e = s; + Object.defineProperty(e, "__esModule", { + value: !0 + }), e.Base64 = e.BrowserClipboardProvider = e.ClipboardAddon = void 0; + const t = i(575); + e.ClipboardAddon = class { + constructor(e = new n, t = new r) { + this._base64 = e, this._provider = t + } + activate(e) { + this._terminal = e, this._disposable = e.parser.registerOscHandler(52, (e => this._setOrReportClipboard(e))) + } + dispose() { + return this._disposable?.dispose() + } + _readText(e, t) { + const i = this._base64.encodeText(t); + this._terminal?.input(`]52;${e};${i}`, !1) + } + _setOrReportClipboard(e) { + const t = e.split(";"); + if (t.length < 2) return !0; + const i = t[0], + s = t[1]; + if ("?" === s) { + const e = this._provider.readText(i); + return e instanceof Promise ? e.then((e => (this._readText(i, e), !0))) : (this._readText(i, e), !0) + } + let r = ""; + try { + r = this._base64.decodeText(s) + } catch {} + const n = this._provider.writeText(i, r); + return !(n instanceof Promise) || n.then((() => !0)) + } + }; + class r { + async readText(e) { + return "c" !== e ? Promise.resolve("") : navigator.clipboard.readText() + } + async writeText(e, t) { + return "c" !== e ? Promise.resolve() : navigator.clipboard.writeText(t) + } + } + e.BrowserClipboardProvider = r; + class n { + encodeText(e) { + return t.Base64.encode(e) + } + decodeText(e) { + const i = t.Base64.decode(e); + return t.Base64.isValid(e) && t.Base64.encode(i) === e ? i : "" + } + } + e.Base64 = n + })(), s + })(), e.exports = t() + }, + 540: e => { + "use strict"; + e.exports = function(e) { + var t = document.createElement("style"); + return e.setAttributes(t, e.attributes), e.insert(t, e.options), t + } + }, + 544: function(e) { + var t; + t = () => (() => { + "use strict"; + var e = { + 433: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.UnicodeV11 = void 0; + const s = i(938), + r = [ + [768, 879], + [1155, 1161], + [1425, 1469], + [1471, 1471], + [1473, 1474], + [1476, 1477], + [1479, 1479], + [1536, 1541], + [1552, 1562], + [1564, 1564], + [1611, 1631], + [1648, 1648], + [1750, 1757], + [1759, 1764], + [1767, 1768], + [1770, 1773], + [1807, 1807], + [1809, 1809], + [1840, 1866], + [1958, 1968], + [2027, 2035], + [2045, 2045], + [2070, 2073], + [2075, 2083], + [2085, 2087], + [2089, 2093], + [2137, 2139], + [2259, 2306], + [2362, 2362], + [2364, 2364], + [2369, 2376], + [2381, 2381], + [2385, 2391], + [2402, 2403], + [2433, 2433], + [2492, 2492], + [2497, 2500], + [2509, 2509], + [2530, 2531], + [2558, 2558], + [2561, 2562], + [2620, 2620], + [2625, 2626], + [2631, 2632], + [2635, 2637], + [2641, 2641], + [2672, 2673], + [2677, 2677], + [2689, 2690], + [2748, 2748], + [2753, 2757], + [2759, 2760], + [2765, 2765], + [2786, 2787], + [2810, 2815], + [2817, 2817], + [2876, 2876], + [2879, 2879], + [2881, 2884], + [2893, 2893], + [2902, 2902], + [2914, 2915], + [2946, 2946], + [3008, 3008], + [3021, 3021], + [3072, 3072], + [3076, 3076], + [3134, 3136], + [3142, 3144], + [3146, 3149], + [3157, 3158], + [3170, 3171], + [3201, 3201], + [3260, 3260], + [3263, 3263], + [3270, 3270], + [3276, 3277], + [3298, 3299], + [3328, 3329], + [3387, 3388], + [3393, 3396], + [3405, 3405], + [3426, 3427], + [3530, 3530], + [3538, 3540], + [3542, 3542], + [3633, 3633], + [3636, 3642], + [3655, 3662], + [3761, 3761], + [3764, 3772], + [3784, 3789], + [3864, 3865], + [3893, 3893], + [3895, 3895], + [3897, 3897], + [3953, 3966], + [3968, 3972], + [3974, 3975], + [3981, 3991], + [3993, 4028], + [4038, 4038], + [4141, 4144], + [4146, 4151], + [4153, 4154], + [4157, 4158], + [4184, 4185], + [4190, 4192], + [4209, 4212], + [4226, 4226], + [4229, 4230], + [4237, 4237], + [4253, 4253], + [4448, 4607], + [4957, 4959], + [5906, 5908], + [5938, 5940], + [5970, 5971], + [6002, 6003], + [6068, 6069], + [6071, 6077], + [6086, 6086], + [6089, 6099], + [6109, 6109], + [6155, 6158], + [6277, 6278], + [6313, 6313], + [6432, 6434], + [6439, 6440], + [6450, 6450], + [6457, 6459], + [6679, 6680], + [6683, 6683], + [6742, 6742], + [6744, 6750], + [6752, 6752], + [6754, 6754], + [6757, 6764], + [6771, 6780], + [6783, 6783], + [6832, 6846], + [6912, 6915], + [6964, 6964], + [6966, 6970], + [6972, 6972], + [6978, 6978], + [7019, 7027], + [7040, 7041], + [7074, 7077], + [7080, 7081], + [7083, 7085], + [7142, 7142], + [7144, 7145], + [7149, 7149], + [7151, 7153], + [7212, 7219], + [7222, 7223], + [7376, 7378], + [7380, 7392], + [7394, 7400], + [7405, 7405], + [7412, 7412], + [7416, 7417], + [7616, 7673], + [7675, 7679], + [8203, 8207], + [8234, 8238], + [8288, 8292], + [8294, 8303], + [8400, 8432], + [11503, 11505], + [11647, 11647], + [11744, 11775], + [12330, 12333], + [12441, 12442], + [42607, 42610], + [42612, 42621], + [42654, 42655], + [42736, 42737], + [43010, 43010], + [43014, 43014], + [43019, 43019], + [43045, 43046], + [43204, 43205], + [43232, 43249], + [43263, 43263], + [43302, 43309], + [43335, 43345], + [43392, 43394], + [43443, 43443], + [43446, 43449], + [43452, 43453], + [43493, 43493], + [43561, 43566], + [43569, 43570], + [43573, 43574], + [43587, 43587], + [43596, 43596], + [43644, 43644], + [43696, 43696], + [43698, 43700], + [43703, 43704], + [43710, 43711], + [43713, 43713], + [43756, 43757], + [43766, 43766], + [44005, 44005], + [44008, 44008], + [44013, 44013], + [64286, 64286], + [65024, 65039], + [65056, 65071], + [65279, 65279], + [65529, 65531] + ], + n = [ + [66045, 66045], + [66272, 66272], + [66422, 66426], + [68097, 68099], + [68101, 68102], + [68108, 68111], + [68152, 68154], + [68159, 68159], + [68325, 68326], + [68900, 68903], + [69446, 69456], + [69633, 69633], + [69688, 69702], + [69759, 69761], + [69811, 69814], + [69817, 69818], + [69821, 69821], + [69837, 69837], + [69888, 69890], + [69927, 69931], + [69933, 69940], + [70003, 70003], + [70016, 70017], + [70070, 70078], + [70089, 70092], + [70191, 70193], + [70196, 70196], + [70198, 70199], + [70206, 70206], + [70367, 70367], + [70371, 70378], + [70400, 70401], + [70459, 70460], + [70464, 70464], + [70502, 70508], + [70512, 70516], + [70712, 70719], + [70722, 70724], + [70726, 70726], + [70750, 70750], + [70835, 70840], + [70842, 70842], + [70847, 70848], + [70850, 70851], + [71090, 71093], + [71100, 71101], + [71103, 71104], + [71132, 71133], + [71219, 71226], + [71229, 71229], + [71231, 71232], + [71339, 71339], + [71341, 71341], + [71344, 71349], + [71351, 71351], + [71453, 71455], + [71458, 71461], + [71463, 71467], + [71727, 71735], + [71737, 71738], + [72148, 72151], + [72154, 72155], + [72160, 72160], + [72193, 72202], + [72243, 72248], + [72251, 72254], + [72263, 72263], + [72273, 72278], + [72281, 72283], + [72330, 72342], + [72344, 72345], + [72752, 72758], + [72760, 72765], + [72767, 72767], + [72850, 72871], + [72874, 72880], + [72882, 72883], + [72885, 72886], + [73009, 73014], + [73018, 73018], + [73020, 73021], + [73023, 73029], + [73031, 73031], + [73104, 73105], + [73109, 73109], + [73111, 73111], + [73459, 73460], + [78896, 78904], + [92912, 92916], + [92976, 92982], + [94031, 94031], + [94095, 94098], + [113821, 113822], + [113824, 113827], + [119143, 119145], + [119155, 119170], + [119173, 119179], + [119210, 119213], + [119362, 119364], + [121344, 121398], + [121403, 121452], + [121461, 121461], + [121476, 121476], + [121499, 121503], + [121505, 121519], + [122880, 122886], + [122888, 122904], + [122907, 122913], + [122915, 122916], + [122918, 122922], + [123184, 123190], + [123628, 123631], + [125136, 125142], + [125252, 125258], + [917505, 917505], + [917536, 917631], + [917760, 917999] + ], + o = [ + [4352, 4447], + [8986, 8987], + [9001, 9002], + [9193, 9196], + [9200, 9200], + [9203, 9203], + [9725, 9726], + [9748, 9749], + [9800, 9811], + [9855, 9855], + [9875, 9875], + [9889, 9889], + [9898, 9899], + [9917, 9918], + [9924, 9925], + [9934, 9934], + [9940, 9940], + [9962, 9962], + [9970, 9971], + [9973, 9973], + [9978, 9978], + [9981, 9981], + [9989, 9989], + [9994, 9995], + [10024, 10024], + [10060, 10060], + [10062, 10062], + [10067, 10069], + [10071, 10071], + [10133, 10135], + [10160, 10160], + [10175, 10175], + [11035, 11036], + [11088, 11088], + [11093, 11093], + [11904, 11929], + [11931, 12019], + [12032, 12245], + [12272, 12283], + [12288, 12329], + [12334, 12350], + [12353, 12438], + [12443, 12543], + [12549, 12591], + [12593, 12686], + [12688, 12730], + [12736, 12771], + [12784, 12830], + [12832, 12871], + [12880, 19903], + [19968, 42124], + [42128, 42182], + [43360, 43388], + [44032, 55203], + [63744, 64255], + [65040, 65049], + [65072, 65106], + [65108, 65126], + [65128, 65131], + [65281, 65376], + [65504, 65510] + ], + a = [ + [94176, 94179], + [94208, 100343], + [100352, 101106], + [110592, 110878], + [110928, 110930], + [110948, 110951], + [110960, 111355], + [126980, 126980], + [127183, 127183], + [127374, 127374], + [127377, 127386], + [127488, 127490], + [127504, 127547], + [127552, 127560], + [127568, 127569], + [127584, 127589], + [127744, 127776], + [127789, 127797], + [127799, 127868], + [127870, 127891], + [127904, 127946], + [127951, 127955], + [127968, 127984], + [127988, 127988], + [127992, 128062], + [128064, 128064], + [128066, 128252], + [128255, 128317], + [128331, 128334], + [128336, 128359], + [128378, 128378], + [128405, 128406], + [128420, 128420], + [128507, 128591], + [128640, 128709], + [128716, 128716], + [128720, 128722], + [128725, 128725], + [128747, 128748], + [128756, 128762], + [128992, 129003], + [129293, 129393], + [129395, 129398], + [129402, 129442], + [129445, 129450], + [129454, 129482], + [129485, 129535], + [129648, 129651], + [129656, 129658], + [129664, 129666], + [129680, 129685], + [131072, 196605], + [196608, 262141] + ]; + let h; + + function c(e, t) { + let i, s = 0, + r = t.length - 1; + if (e < t[0][0] || e > t[r][1]) return !1; + for (; r >= s;) + if (i = s + r >> 1, e > t[i][1]) s = i + 1; + else { + if (!(e < t[i][0])) return !0; + r = i - 1 + } return !1 + } + t.UnicodeV11 = class { + constructor() { + if (this.version = "11", !h) { + h = new Uint8Array(65536), h.fill(1), h[0] = 0, h.fill(0, 1, 32), h.fill(0, 127, 160); + for (let e = 0; e < r.length; ++e) h.fill(0, r[e][0], r[e][1] + 1); + for (let e = 0; e < o.length; ++e) h.fill(2, o[e][0], o[e][1] + 1) + } + } + wcwidth(e) { + return e < 32 ? 0 : e < 127 ? 1 : e < 65536 ? h[e] : c(e, n) ? 0 : c(e, a) ? 2 : 1 + } + charProperties(e, t) { + let i = this.wcwidth(e), + r = 0 === i && 0 !== t; + if (r) { + const e = s.UnicodeService.extractWidth(t); + 0 === e ? r = !1 : e > i && (i = e) + } + return s.UnicodeService.createPropertyValue(0, i, r) + } + } + }, + 345: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class { + constructor() { + this._listeners = [], this._disposed = !1 + } + get event() { + return this._event || (this._event = e => (this._listeners.push(e), { + dispose: () => { + if (!this._disposed) + for (let t = 0; t < this._listeners.length; t++) + if (this._listeners[t] === e) return void this._listeners.splice(t, 1) + } + })), this._event + } + fire(e, t) { + const i = []; + for (let e = 0; e < this._listeners.length; e++) i.push(this._listeners[e]); + for (let s = 0; s < i.length; s++) i[s].call(void 0, e, t) + } + dispose() { + this.clearListeners(), this._disposed = !0 + } + clearListeners() { + this._listeners && (this._listeners.length = 0) + } + }, t.forwardEvent = function(e, t) { + return e((e => t.fire(e))) + }, t.runAndSubscribe = function(e, t) { + return t(void 0), e((e => t(e))) + } + }, + 490: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.UnicodeV6 = void 0; + const s = i(938), + r = [ + [768, 879], + [1155, 1158], + [1160, 1161], + [1425, 1469], + [1471, 1471], + [1473, 1474], + [1476, 1477], + [1479, 1479], + [1536, 1539], + [1552, 1557], + [1611, 1630], + [1648, 1648], + [1750, 1764], + [1767, 1768], + [1770, 1773], + [1807, 1807], + [1809, 1809], + [1840, 1866], + [1958, 1968], + [2027, 2035], + [2305, 2306], + [2364, 2364], + [2369, 2376], + [2381, 2381], + [2385, 2388], + [2402, 2403], + [2433, 2433], + [2492, 2492], + [2497, 2500], + [2509, 2509], + [2530, 2531], + [2561, 2562], + [2620, 2620], + [2625, 2626], + [2631, 2632], + [2635, 2637], + [2672, 2673], + [2689, 2690], + [2748, 2748], + [2753, 2757], + [2759, 2760], + [2765, 2765], + [2786, 2787], + [2817, 2817], + [2876, 2876], + [2879, 2879], + [2881, 2883], + [2893, 2893], + [2902, 2902], + [2946, 2946], + [3008, 3008], + [3021, 3021], + [3134, 3136], + [3142, 3144], + [3146, 3149], + [3157, 3158], + [3260, 3260], + [3263, 3263], + [3270, 3270], + [3276, 3277], + [3298, 3299], + [3393, 3395], + [3405, 3405], + [3530, 3530], + [3538, 3540], + [3542, 3542], + [3633, 3633], + [3636, 3642], + [3655, 3662], + [3761, 3761], + [3764, 3769], + [3771, 3772], + [3784, 3789], + [3864, 3865], + [3893, 3893], + [3895, 3895], + [3897, 3897], + [3953, 3966], + [3968, 3972], + [3974, 3975], + [3984, 3991], + [3993, 4028], + [4038, 4038], + [4141, 4144], + [4146, 4146], + [4150, 4151], + [4153, 4153], + [4184, 4185], + [4448, 4607], + [4959, 4959], + [5906, 5908], + [5938, 5940], + [5970, 5971], + [6002, 6003], + [6068, 6069], + [6071, 6077], + [6086, 6086], + [6089, 6099], + [6109, 6109], + [6155, 6157], + [6313, 6313], + [6432, 6434], + [6439, 6440], + [6450, 6450], + [6457, 6459], + [6679, 6680], + [6912, 6915], + [6964, 6964], + [6966, 6970], + [6972, 6972], + [6978, 6978], + [7019, 7027], + [7616, 7626], + [7678, 7679], + [8203, 8207], + [8234, 8238], + [8288, 8291], + [8298, 8303], + [8400, 8431], + [12330, 12335], + [12441, 12442], + [43014, 43014], + [43019, 43019], + [43045, 43046], + [64286, 64286], + [65024, 65039], + [65056, 65059], + [65279, 65279], + [65529, 65531] + ], + n = [ + [68097, 68099], + [68101, 68102], + [68108, 68111], + [68152, 68154], + [68159, 68159], + [119143, 119145], + [119155, 119170], + [119173, 119179], + [119210, 119213], + [119362, 119364], + [917505, 917505], + [917536, 917631], + [917760, 917999] + ]; + let o; + t.UnicodeV6 = class { + constructor() { + if (this.version = "6", !o) { + o = new Uint8Array(65536), o.fill(1), o[0] = 0, o.fill(0, 1, 32), o.fill(0, 127, 160), o.fill(2, 4352, 4448), o[9001] = 2, o[9002] = 2, o.fill(2, 11904, 42192), o[12351] = 1, o.fill(2, 44032, 55204), o.fill(2, 63744, 64256), o.fill(2, 65040, 65050), o.fill(2, 65072, 65136), o.fill(2, 65280, 65377), o.fill(2, 65504, 65511); + for (let e = 0; e < r.length; ++e) o.fill(0, r[e][0], r[e][1] + 1) + } + } + wcwidth(e) { + return e < 32 ? 0 : e < 127 ? 1 : e < 65536 ? o[e] : function(e, t) { + let i, s = 0, + r = t.length - 1; + if (e < t[0][0] || e > t[r][1]) return !1; + for (; r >= s;) + if (i = s + r >> 1, e > t[i][1]) s = i + 1; + else { + if (!(e < t[i][0])) return !0; + r = i - 1 + } return !1 + }(e, n) ? 0 : e >= 131072 && e <= 196605 || e >= 196608 && e <= 262141 ? 2 : 1 + } + charProperties(e, t) { + let i = this.wcwidth(e), + r = 0 === i && 0 !== t; + if (r) { + const e = s.UnicodeService.extractWidth(t); + 0 === e ? r = !1 : e > i && (i = e) + } + return s.UnicodeService.createPropertyValue(0, i, r) + } + } + }, + 938: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.UnicodeService = void 0; + const s = i(345), + r = i(490); + class n { + static extractShouldJoin(e) { + return !!(1 & e) + } + static extractWidth(e) { + return e >> 1 & 3 + } + static extractCharKind(e) { + return e >> 3 + } + static createPropertyValue(e, t, i = !1) { + return (16777215 & e) << 3 | (3 & t) << 1 | (i ? 1 : 0) + } + constructor() { + this._providers = Object.create(null), this._active = "", this._onChange = new s.EventEmitter, this.onChange = this._onChange.event; + const e = new r.UnicodeV6; + this.register(e), this._active = e.version, this._activeProvider = e + } + dispose() { + this._onChange.dispose() + } + get versions() { + return Object.keys(this._providers) + } + get activeVersion() { + return this._active + } + set activeVersion(e) { + if (!this._providers[e]) throw new Error(`unknown Unicode version "${e}"`); + this._active = e, this._activeProvider = this._providers[e], this._onChange.fire(e) + } + register(e) { + this._providers[e.version] = e + } + wcwidth(e) { + return this._activeProvider.wcwidth(e) + } + getStringCellWidth(e) { + let t = 0, + i = 0; + const s = e.length; + for (let r = 0; r < s; ++r) { + let o = e.charCodeAt(r); + if (55296 <= o && o <= 56319) { + if (++r >= s) return t + this.wcwidth(o); + const i = e.charCodeAt(r); + 56320 <= i && i <= 57343 ? o = 1024 * (o - 55296) + i - 56320 + 65536 : t += this.wcwidth(i) + } + const a = this.charProperties(o, i); + let h = n.extractWidth(a); + n.extractShouldJoin(a) && (h -= n.extractWidth(i)), t += h, i = a + } + return t + } + charProperties(e, t) { + return this._activeProvider.charProperties(e, t) + } + } + t.UnicodeService = n + } + }, + t = {}; + + function i(s) { + var r = t[s]; + if (void 0 !== r) return r.exports; + var n = t[s] = { + exports: {} + }; + return e[s](n, n.exports, i), n.exports + } + var s = {}; + return (() => { + var e = s; + Object.defineProperty(e, "__esModule", { + value: !0 + }), e.Unicode11Addon = void 0; + const t = i(433); + e.Unicode11Addon = class { + activate(e) { + e.unicode.register(new t.UnicodeV11) + } + dispose() {} + } + })(), s + })(), e.exports = t() + }, + 601: e => { + "use strict"; + e.exports = function(e) { + return e[1] + } + }, + 616: e => { + var t; + self, t = () => (() => { + "use strict"; + var e, t = {}; + return e = t, Object.defineProperty(e, "__esModule", { + value: !0 + }), e.FitAddon = void 0, e.FitAddon = class { + activate(e) { + this._terminal = e + } + dispose() {} + fit() { + const e = this.proposeDimensions(); + if (!e || !this._terminal || isNaN(e.cols) || isNaN(e.rows)) return; + const t = this._terminal._core; + this._terminal.rows === e.rows && this._terminal.cols === e.cols || (t._renderService.clear(), this._terminal.resize(e.cols, e.rows)) + } + proposeDimensions() { + if (!this._terminal) return; + if (!this._terminal.element || !this._terminal.element.parentElement) return; + const e = this._terminal._core, + t = e._renderService.dimensions; + if (0 === t.css.cell.width || 0 === t.css.cell.height) return; + const i = 0 === this._terminal.options.scrollback ? 0 : e.viewport.scrollBarWidth, + s = window.getComputedStyle(this._terminal.element.parentElement), + r = parseInt(s.getPropertyValue("height")), + n = Math.max(0, parseInt(s.getPropertyValue("width"))), + o = window.getComputedStyle(this._terminal.element), + a = r - (parseInt(o.getPropertyValue("padding-top")) + parseInt(o.getPropertyValue("padding-bottom"))), + h = n - (parseInt(o.getPropertyValue("padding-right")) + parseInt(o.getPropertyValue("padding-left"))) - i; + return { + cols: Math.max(2, Math.floor(h / t.css.cell.width)), + rows: Math.max(1, Math.floor(a / t.css.cell.height)) + } + } + }, t + })(), e.exports = t() + }, + 659: e => { + "use strict"; + var t = {}; + e.exports = function(e, i) { + var s = function(e) { + if (void 0 === t[e]) { + var i = document.querySelector(e); + if (window.HTMLIFrameElement && i instanceof window.HTMLIFrameElement) try { + i = i.contentDocument.head + } catch (e) { + i = null + } + t[e] = i + } + return t[e] + }(e); + if (!s) throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); + s.appendChild(i) + } + }, + 825: e => { + "use strict"; + e.exports = function(e) { + if ("undefined" == typeof document) return { + update: function() {}, + remove: function() {} + }; + var t = e.insertStyleElement(e); + return { + update: function(i) { + ! function(e, t, i) { + var s = ""; + i.supports && (s += "@supports (".concat(i.supports, ") {")), i.media && (s += "@media ".concat(i.media, " {")); + var r = void 0 !== i.layer; + r && (s += "@layer".concat(i.layer.length > 0 ? " ".concat(i.layer) : "", " {")), s += i.css, r && (s += "}"), i.media && (s += "}"), i.supports && (s += "}"); + var n = i.sourceMap; + n && "undefined" != typeof btoa && (s += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n)))), " */")), t.styleTagTransform(s, e, t.options) + }(t, e, i) + }, + remove: function() { + ! function(e) { + if (null === e.parentNode) return !1; + e.parentNode.removeChild(e) + }(t) + } + } + } + }, + 832: e => { + var t; + self, t = () => (() => { + "use strict"; + var e = { + 6: (e, t) => { + function i(e) { + try { + const t = new URL(e), + i = t.password && t.username ? `${t.protocol}//${t.username}:${t.password}@${t.host}` : t.username ? `${t.protocol}//${t.username}@${t.host}` : `${t.protocol}//${t.host}`; + return e.toLocaleLowerCase().startsWith(i.toLocaleLowerCase()) + } catch (e) { + return !1 + } + } + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.LinkComputer = t.WebLinkProvider = void 0, t.WebLinkProvider = class { + constructor(e, t, i, s = {}) { + this._terminal = e, this._regex = t, this._handler = i, this._options = s + } + provideLinks(e, t) { + const i = s.computeLink(e, this._regex, this._terminal, this._handler); + t(this._addCallbacks(i)) + } + _addCallbacks(e) { + return e.map((e => (e.leave = this._options.leave, e.hover = (t, i) => { + if (this._options.hover) { + const { + range: s + } = e; + this._options.hover(t, i, s) + } + }, e))) + } + }; + class s { + static computeLink(e, t, r, n) { + const o = new RegExp(t.source, (t.flags || "") + "g"), + [a, h] = s._getWindowedLineStrings(e - 1, r), + c = a.join(""); + let l; + const d = []; + for (; l = o.exec(c);) { + const e = l[0]; + if (!i(e)) continue; + const [t, o] = s._mapStrIdx(r, h, 0, l.index), [a, c] = s._mapStrIdx(r, t, o, e.length); + if (-1 === t || -1 === o || -1 === a || -1 === c) continue; + const _ = { + start: { + x: o + 1, + y: t + 1 + }, + end: { + x: c, + y: a + 1 + } + }; + d.push({ + range: _, + text: e, + activate: n + }) + } + return d + } + static _getWindowedLineStrings(e, t) { + let i, s = e, + r = e, + n = 0, + o = ""; + const a = []; + if (i = t.buffer.active.getLine(e)) { + const e = i.translateToString(!0); + if (i.isWrapped && " " !== e[0]) { + for (n = 0; + (i = t.buffer.active.getLine(--s)) && n < 2048 && (o = i.translateToString(!0), n += o.length, a.push(o), i.isWrapped && -1 === o.indexOf(" "));); + a.reverse() + } + for (a.push(e), n = 0; + (i = t.buffer.active.getLine(++r)) && i.isWrapped && n < 2048 && (o = i.translateToString(!0), n += o.length, a.push(o), -1 === o.indexOf(" "));); + } + return [a, s] + } + static _mapStrIdx(e, t, i, s) { + const r = e.buffer.active, + n = r.getNullCell(); + let o = i; + for (; s;) { + const e = r.getLine(t); + if (!e) return [-1, -1]; + for (let i = o; i < e.length; ++i) { + e.getCell(i, n); + const o = n.getChars(); + if (n.getWidth() && (s -= o.length || 1, i === e.length - 1 && "" === o)) { + const e = r.getLine(t + 1); + e && e.isWrapped && (e.getCell(0, n), 2 === n.getWidth() && (s += 1)) + } + if (s < 0) return [t, i] + } + t++, o = 0 + } + return [t, o] + } + } + t.LinkComputer = s + } + }, + t = {}; + + function i(s) { + var r = t[s]; + if (void 0 !== r) return r.exports; + var n = t[s] = { + exports: {} + }; + return e[s](n, n.exports, i), n.exports + } + var s = {}; + return (() => { + var e = s; + Object.defineProperty(e, "__esModule", { + value: !0 + }), e.WebLinksAddon = void 0; + const t = i(6), + r = /(https?|HTTPS?):[/]{2}[^\s"'!*(){}|\\\^<>`]*[^\s"':,.!?{}|\\\^~\[\]`()<>]/; + + function n(e, t) { + const i = window.open(); + if (i) { + try { + i.opener = null + } catch {} + i.location.href = t + } else console.warn("Opening link blocked as opener could not be cleared") + } + e.WebLinksAddon = class { + constructor(e = n, t = {}) { + this._handler = e, this._options = t + } + activate(e) { + this._terminal = e; + const i = this._options, + s = i.urlRegex || r; + this._linkProvider = this._terminal.registerLinkProvider(new t.WebLinkProvider(this._terminal, s, this._handler, i)) + } + dispose() { + this._linkProvider?.dispose() + } + } + })(), s + })(), e.exports = t() + }, + 856: e => { + var t; + globalThis, t = () => (() => { + "use strict"; + var e = { + 4567: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.AccessibilityManager = void 0; + const n = i(9042), + o = i(9924), + a = i(844), + h = i(4725), + c = i(2585), + l = i(3656); + let d = t.AccessibilityManager = class extends a.Disposable { + constructor(e, t, i, s) { + super(), this._terminal = e, this._coreBrowserService = i, this._renderService = s, this._rowColumns = new WeakMap, this._liveRegionLineCount = 0, this._charsToConsume = [], this._charsToAnnounce = "", this._accessibilityContainer = this._coreBrowserService.mainDocument.createElement("div"), this._accessibilityContainer.classList.add("xterm-accessibility"), this._rowContainer = this._coreBrowserService.mainDocument.createElement("div"), this._rowContainer.setAttribute("role", "list"), this._rowContainer.classList.add("xterm-accessibility-tree"), this._rowElements = []; + for (let e = 0; e < this._terminal.rows; e++) this._rowElements[e] = this._createAccessibilityTreeNode(), this._rowContainer.appendChild(this._rowElements[e]); + if (this._topBoundaryFocusListener = e => this._handleBoundaryFocus(e, 0), this._bottomBoundaryFocusListener = e => this._handleBoundaryFocus(e, 1), this._rowElements[0].addEventListener("focus", this._topBoundaryFocusListener), this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._refreshRowsDimensions(), this._accessibilityContainer.appendChild(this._rowContainer), this._liveRegion = this._coreBrowserService.mainDocument.createElement("div"), this._liveRegion.classList.add("live-region"), this._liveRegion.setAttribute("aria-live", "assertive"), this._accessibilityContainer.appendChild(this._liveRegion), this._liveRegionDebouncer = this.register(new o.TimeBasedDebouncer(this._renderRows.bind(this))), !this._terminal.element) throw new Error("Cannot enable accessibility before Terminal.open"); + this._terminal.element.insertAdjacentElement("afterbegin", this._accessibilityContainer), this.register(this._terminal.onResize((e => this._handleResize(e.rows)))), this.register(this._terminal.onRender((e => this._refreshRows(e.start, e.end)))), this.register(this._terminal.onScroll((() => this._refreshRows()))), this.register(this._terminal.onA11yChar((e => this._handleChar(e)))), this.register(this._terminal.onLineFeed((() => this._handleChar("\n")))), this.register(this._terminal.onA11yTab((e => this._handleTab(e)))), this.register(this._terminal.onKey((e => this._handleKey(e.key)))), this.register(this._terminal.onBlur((() => this._clearLiveRegion()))), this.register(this._renderService.onDimensionsChange((() => this._refreshRowsDimensions()))), this.register((0, l.addDisposableDomListener)(document, "selectionchange", (() => this._handleSelectionChange()))), this.register(this._coreBrowserService.onDprChange((() => this._refreshRowsDimensions()))), this._refreshRows(), this.register((0, a.toDisposable)((() => { + this._accessibilityContainer.remove(), this._rowElements.length = 0 + }))) + } + _handleTab(e) { + for (let t = 0; t < e; t++) this._handleChar(" ") + } + _handleChar(e) { + this._liveRegionLineCount < 21 && (this._charsToConsume.length > 0 ? this._charsToConsume.shift() !== e && (this._charsToAnnounce += e) : this._charsToAnnounce += e, "\n" === e && (this._liveRegionLineCount++, 21 === this._liveRegionLineCount && (this._liveRegion.textContent += n.tooMuchOutput))) + } + _clearLiveRegion() { + this._liveRegion.textContent = "", this._liveRegionLineCount = 0 + } + _handleKey(e) { + this._clearLiveRegion(), /\p{Control}/u.test(e) || this._charsToConsume.push(e) + } + _refreshRows(e, t) { + this._liveRegionDebouncer.refresh(e, t, this._terminal.rows) + } + _renderRows(e, t) { + const i = this._terminal.buffer, + s = i.lines.length.toString(); + for (let r = e; r <= t; r++) { + const e = i.lines.get(i.ydisp + r), + t = [], + n = e?.translateToString(!0, void 0, void 0, t) || "", + o = (i.ydisp + r + 1).toString(), + a = this._rowElements[r]; + a && (0 === n.length ? (a.innerText = " ", this._rowColumns.set(a, [0, 1])) : (a.textContent = n, this._rowColumns.set(a, t)), a.setAttribute("aria-posinset", o), a.setAttribute("aria-setsize", s)) + } + this._announceCharacters() + } + _announceCharacters() { + 0 !== this._charsToAnnounce.length && (this._liveRegion.textContent += this._charsToAnnounce, this._charsToAnnounce = "") + } + _handleBoundaryFocus(e, t) { + const i = e.target, + s = this._rowElements[0 === t ? 1 : this._rowElements.length - 2]; + if (i.getAttribute("aria-posinset") === (0 === t ? "1" : `${this._terminal.buffer.lines.length}`)) return; + if (e.relatedTarget !== s) return; + let r, n; + if (0 === t ? (r = i, n = this._rowElements.pop(), this._rowContainer.removeChild(n)) : (r = this._rowElements.shift(), n = i, this._rowContainer.removeChild(r)), r.removeEventListener("focus", this._topBoundaryFocusListener), n.removeEventListener("focus", this._bottomBoundaryFocusListener), 0 === t) { + const e = this._createAccessibilityTreeNode(); + this._rowElements.unshift(e), this._rowContainer.insertAdjacentElement("afterbegin", e) + } else { + const e = this._createAccessibilityTreeNode(); + this._rowElements.push(e), this._rowContainer.appendChild(e) + } + this._rowElements[0].addEventListener("focus", this._topBoundaryFocusListener), this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._terminal.scrollLines(0 === t ? -1 : 1), this._rowElements[0 === t ? 1 : this._rowElements.length - 2].focus(), e.preventDefault(), e.stopImmediatePropagation() + } + _handleSelectionChange() { + if (0 === this._rowElements.length) return; + const e = document.getSelection(); + if (!e) return; + if (e.isCollapsed) return void(this._rowContainer.contains(e.anchorNode) && this._terminal.clearSelection()); + if (!e.anchorNode || !e.focusNode) return void console.error("anchorNode and/or focusNode are null"); + let t = { + node: e.anchorNode, + offset: e.anchorOffset + }, + i = { + node: e.focusNode, + offset: e.focusOffset + }; + if ((t.node.compareDocumentPosition(i.node) & Node.DOCUMENT_POSITION_PRECEDING || t.node === i.node && t.offset > i.offset) && ([t, i] = [i, t]), t.node.compareDocumentPosition(this._rowElements[0]) & (Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_FOLLOWING) && (t = { + node: this._rowElements[0].childNodes[0], + offset: 0 + }), !this._rowContainer.contains(t.node)) return; + const s = this._rowElements.slice(-1)[0]; + if (i.node.compareDocumentPosition(s) & (Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_PRECEDING) && (i = { + node: s, + offset: s.textContent?.length ?? 0 + }), !this._rowContainer.contains(i.node)) return; + const r = ({ + node: e, + offset: t + }) => { + const i = e instanceof Text ? e.parentNode : e; + let s = parseInt(i?.getAttribute("aria-posinset"), 10) - 1; + if (isNaN(s)) return console.warn("row is invalid. Race condition?"), null; + const r = this._rowColumns.get(i); + if (!r) return console.warn("columns is null. Race condition?"), null; + let n = t < r.length ? r[t] : r.slice(-1)[0] + 1; + return n >= this._terminal.cols && (++s, n = 0), { + row: s, + column: n + } + }, + n = r(t), + o = r(i); + if (n && o) { + if (n.row > o.row || n.row === o.row && n.column >= o.column) throw new Error("invalid range"); + this._terminal.select(n.column, n.row, (o.row - n.row) * this._terminal.cols - n.column + o.column) + } + } + _handleResize(e) { + this._rowElements[this._rowElements.length - 1].removeEventListener("focus", this._bottomBoundaryFocusListener); + for (let e = this._rowContainer.children.length; e < this._terminal.rows; e++) this._rowElements[e] = this._createAccessibilityTreeNode(), this._rowContainer.appendChild(this._rowElements[e]); + for (; this._rowElements.length > e;) this._rowContainer.removeChild(this._rowElements.pop()); + this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._refreshRowsDimensions() + } + _createAccessibilityTreeNode() { + const e = this._coreBrowserService.mainDocument.createElement("div"); + return e.setAttribute("role", "listitem"), e.tabIndex = -1, this._refreshRowDimensions(e), e + } + _refreshRowsDimensions() { + if (this._renderService.dimensions.css.cell.height) { + this._accessibilityContainer.style.width = `${this._renderService.dimensions.css.canvas.width}px`, this._rowElements.length !== this._terminal.rows && this._handleResize(this._terminal.rows); + for (let e = 0; e < this._terminal.rows; e++) this._refreshRowDimensions(this._rowElements[e]) + } + } + _refreshRowDimensions(e) { + e.style.height = `${this._renderService.dimensions.css.cell.height}px` + } + }; + t.AccessibilityManager = d = s([r(1, c.IInstantiationService), r(2, h.ICoreBrowserService), r(3, h.IRenderService)], d) + }, + 3614: (e, t) => { + function i(e) { + return e.replace(/\r?\n/g, "\r") + } + + function s(e, t) { + return t ? "[200~" + e + "[201~" : e + } + + function r(e, t, r, n) { + e = s(e = i(e), r.decPrivateModes.bracketedPasteMode && !0 !== n.rawOptions.ignoreBracketedPasteMode), r.triggerDataEvent(e, !0), t.value = "" + } + + function n(e, t, i) { + const s = i.getBoundingClientRect(), + r = e.clientX - s.left - 10, + n = e.clientY - s.top - 10; + t.style.width = "20px", t.style.height = "20px", t.style.left = `${r}px`, t.style.top = `${n}px`, t.style.zIndex = "1000", t.focus() + } + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.rightClickHandler = t.moveTextAreaUnderMouseCursor = t.paste = t.handlePasteEvent = t.copyHandler = t.bracketTextForPaste = t.prepareTextForTerminal = void 0, t.prepareTextForTerminal = i, t.bracketTextForPaste = s, t.copyHandler = function(e, t) { + e.clipboardData && e.clipboardData.setData("text/plain", t.selectionText), e.preventDefault() + }, t.handlePasteEvent = function(e, t, i, s) { + e.stopPropagation(), e.clipboardData && r(e.clipboardData.getData("text/plain"), t, i, s) + }, t.paste = r, t.moveTextAreaUnderMouseCursor = n, t.rightClickHandler = function(e, t, i, s, r) { + n(e, t, i), r && s.rightClickSelect(e), t.value = s.selectionText, t.select() + } + }, + 7239: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.ColorContrastCache = void 0; + const s = i(1505); + t.ColorContrastCache = class { + constructor() { + this._color = new s.TwoKeyMap, this._css = new s.TwoKeyMap + } + setCss(e, t, i) { + this._css.set(e, t, i) + } + getCss(e, t) { + return this._css.get(e, t) + } + setColor(e, t, i) { + this._color.set(e, t, i) + } + getColor(e, t) { + return this._color.get(e, t) + } + clear() { + this._color.clear(), this._css.clear() + } + } + }, + 3656: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.addDisposableDomListener = void 0, t.addDisposableDomListener = function(e, t, i, s) { + e.addEventListener(t, i, s); + let r = !1; + return { + dispose: () => { + r || (r = !0, e.removeEventListener(t, i, s)) + } + } + } + }, + 3551: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.Linkifier = void 0; + const n = i(3656), + o = i(8460), + a = i(844), + h = i(2585), + c = i(4725); + let l = t.Linkifier = class extends a.Disposable { + get currentLink() { + return this._currentLink + } + constructor(e, t, i, s, r) { + super(), this._element = e, this._mouseService = t, this._renderService = i, this._bufferService = s, this._linkProviderService = r, this._linkCacheDisposables = [], this._isMouseOut = !0, this._wasResized = !1, this._activeLine = -1, this._onShowLinkUnderline = this.register(new o.EventEmitter), this.onShowLinkUnderline = this._onShowLinkUnderline.event, this._onHideLinkUnderline = this.register(new o.EventEmitter), this.onHideLinkUnderline = this._onHideLinkUnderline.event, this.register((0, a.getDisposeArrayDisposable)(this._linkCacheDisposables)), this.register((0, a.toDisposable)((() => { + this._lastMouseEvent = void 0, this._activeProviderReplies?.clear() + }))), this.register(this._bufferService.onResize((() => { + this._clearCurrentLink(), this._wasResized = !0 + }))), this.register((0, n.addDisposableDomListener)(this._element, "mouseleave", (() => { + this._isMouseOut = !0, this._clearCurrentLink() + }))), this.register((0, n.addDisposableDomListener)(this._element, "mousemove", this._handleMouseMove.bind(this))), this.register((0, n.addDisposableDomListener)(this._element, "mousedown", this._handleMouseDown.bind(this))), this.register((0, n.addDisposableDomListener)(this._element, "mouseup", this._handleMouseUp.bind(this))) + } + _handleMouseMove(e) { + this._lastMouseEvent = e; + const t = this._positionFromMouseEvent(e, this._element, this._mouseService); + if (!t) return; + this._isMouseOut = !1; + const i = e.composedPath(); + for (let e = 0; e < i.length; e++) { + const t = i[e]; + if (t.classList.contains("xterm")) break; + if (t.classList.contains("xterm-hover")) return + } + this._lastBufferCell && t.x === this._lastBufferCell.x && t.y === this._lastBufferCell.y || (this._handleHover(t), this._lastBufferCell = t) + } + _handleHover(e) { + if (this._activeLine !== e.y || this._wasResized) return this._clearCurrentLink(), this._askForLink(e, !1), void(this._wasResized = !1); + this._currentLink && this._linkAtPosition(this._currentLink.link, e) || (this._clearCurrentLink(), this._askForLink(e, !0)) + } + _askForLink(e, t) { + this._activeProviderReplies && t || (this._activeProviderReplies?.forEach((e => { + e?.forEach((e => { + e.link.dispose && e.link.dispose() + })) + })), this._activeProviderReplies = new Map, this._activeLine = e.y); + let i = !1; + for (const [s, r] of this._linkProviderService.linkProviders.entries()) + if (t) { + const t = this._activeProviderReplies?.get(s); + t && (i = this._checkLinkProviderResult(s, e, i)) + } else r.provideLinks(e.y, (t => { + if (this._isMouseOut) return; + const r = t?.map((e => ({ + link: e + }))); + this._activeProviderReplies?.set(s, r), i = this._checkLinkProviderResult(s, e, i), this._activeProviderReplies?.size === this._linkProviderService.linkProviders.length && this._removeIntersectingLinks(e.y, this._activeProviderReplies) + })) + } + _removeIntersectingLinks(e, t) { + const i = new Set; + for (let s = 0; s < t.size; s++) { + const r = t.get(s); + if (r) + for (let t = 0; t < r.length; t++) { + const s = r[t], + n = s.link.range.start.y < e ? 0 : s.link.range.start.x, + o = s.link.range.end.y > e ? this._bufferService.cols : s.link.range.end.x; + for (let e = n; e <= o; e++) { + if (i.has(e)) { + r.splice(t--, 1); + break + } + i.add(e) + } + } + } + } + _checkLinkProviderResult(e, t, i) { + if (!this._activeProviderReplies) return i; + const s = this._activeProviderReplies.get(e); + let r = !1; + for (let t = 0; t < e; t++) this._activeProviderReplies.has(t) && !this._activeProviderReplies.get(t) || (r = !0); + if (!r && s) { + const e = s.find((e => this._linkAtPosition(e.link, t))); + e && (i = !0, this._handleNewLink(e)) + } + if (this._activeProviderReplies.size === this._linkProviderService.linkProviders.length && !i) + for (let e = 0; e < this._activeProviderReplies.size; e++) { + const s = this._activeProviderReplies.get(e)?.find((e => this._linkAtPosition(e.link, t))); + if (s) { + i = !0, this._handleNewLink(s); + break + } + } + return i + } + _handleMouseDown() { + this._mouseDownLink = this._currentLink + } + _handleMouseUp(e) { + if (!this._currentLink) return; + const t = this._positionFromMouseEvent(e, this._element, this._mouseService); + t && this._mouseDownLink === this._currentLink && this._linkAtPosition(this._currentLink.link, t) && this._currentLink.link.activate(e, this._currentLink.link.text) + } + _clearCurrentLink(e, t) { + this._currentLink && this._lastMouseEvent && (!e || !t || this._currentLink.link.range.start.y >= e && this._currentLink.link.range.end.y <= t) && (this._linkLeave(this._element, this._currentLink.link, this._lastMouseEvent), this._currentLink = void 0, (0, a.disposeArray)(this._linkCacheDisposables)) + } + _handleNewLink(e) { + if (!this._lastMouseEvent) return; + const t = this._positionFromMouseEvent(this._lastMouseEvent, this._element, this._mouseService); + t && this._linkAtPosition(e.link, t) && (this._currentLink = e, this._currentLink.state = { + decorations: { + underline: void 0 === e.link.decorations || e.link.decorations.underline, + pointerCursor: void 0 === e.link.decorations || e.link.decorations.pointerCursor + }, + isHovered: !0 + }, this._linkHover(this._element, e.link, this._lastMouseEvent), e.link.decorations = {}, Object.defineProperties(e.link.decorations, { + pointerCursor: { + get: () => this._currentLink?.state?.decorations.pointerCursor, + set: e => { + this._currentLink?.state && this._currentLink.state.decorations.pointerCursor !== e && (this._currentLink.state.decorations.pointerCursor = e, this._currentLink.state.isHovered && this._element.classList.toggle("xterm-cursor-pointer", e)) + } + }, + underline: { + get: () => this._currentLink?.state?.decorations.underline, + set: t => { + this._currentLink?.state && this._currentLink?.state?.decorations.underline !== t && (this._currentLink.state.decorations.underline = t, this._currentLink.state.isHovered && this._fireUnderlineEvent(e.link, t)) + } + } + }), this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange((e => { + if (!this._currentLink) return; + const t = 0 === e.start ? 0 : e.start + 1 + this._bufferService.buffer.ydisp, + i = this._bufferService.buffer.ydisp + 1 + e.end; + if (this._currentLink.link.range.start.y >= t && this._currentLink.link.range.end.y <= i && (this._clearCurrentLink(t, i), this._lastMouseEvent)) { + const e = this._positionFromMouseEvent(this._lastMouseEvent, this._element, this._mouseService); + e && this._askForLink(e, !1) + } + })))) + } + _linkHover(e, t, i) { + this._currentLink?.state && (this._currentLink.state.isHovered = !0, this._currentLink.state.decorations.underline && this._fireUnderlineEvent(t, !0), this._currentLink.state.decorations.pointerCursor && e.classList.add("xterm-cursor-pointer")), t.hover && t.hover(i, t.text) + } + _fireUnderlineEvent(e, t) { + const i = e.range, + s = this._bufferService.buffer.ydisp, + r = this._createLinkUnderlineEvent(i.start.x - 1, i.start.y - s - 1, i.end.x, i.end.y - s - 1, void 0); + (t ? this._onShowLinkUnderline : this._onHideLinkUnderline).fire(r) + } + _linkLeave(e, t, i) { + this._currentLink?.state && (this._currentLink.state.isHovered = !1, this._currentLink.state.decorations.underline && this._fireUnderlineEvent(t, !1), this._currentLink.state.decorations.pointerCursor && e.classList.remove("xterm-cursor-pointer")), t.leave && t.leave(i, t.text) + } + _linkAtPosition(e, t) { + const i = e.range.start.y * this._bufferService.cols + e.range.start.x, + s = e.range.end.y * this._bufferService.cols + e.range.end.x, + r = t.y * this._bufferService.cols + t.x; + return i <= r && r <= s + } + _positionFromMouseEvent(e, t, i) { + const s = i.getCoords(e, t, this._bufferService.cols, this._bufferService.rows); + if (s) return { + x: s[0], + y: s[1] + this._bufferService.buffer.ydisp + } + } + _createLinkUnderlineEvent(e, t, i, s, r) { + return { + x1: e, + y1: t, + x2: i, + y2: s, + cols: this._bufferService.cols, + fg: r + } + } + }; + t.Linkifier = l = s([r(1, c.IMouseService), r(2, c.IRenderService), r(3, h.IBufferService), r(4, c.ILinkProviderService)], l) + }, + 9042: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.tooMuchOutput = t.promptLabel = void 0, t.promptLabel = "Terminal input", t.tooMuchOutput = "Too much output to announce, navigate to rows manually to read" + }, + 3730: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.OscLinkProvider = void 0; + const n = i(511), + o = i(2585); + let a = t.OscLinkProvider = class { + constructor(e, t, i) { + this._bufferService = e, this._optionsService = t, this._oscLinkService = i + } + provideLinks(e, t) { + const i = this._bufferService.buffer.lines.get(e - 1); + if (!i) return void t(void 0); + const s = [], + r = this._optionsService.rawOptions.linkHandler, + o = new n.CellData, + a = i.getTrimmedLength(); + let c = -1, + l = -1, + d = !1; + for (let t = 0; t < a; t++) + if (-1 !== l || i.hasContent(t)) { + if (i.loadCell(t, o), o.hasExtendedAttrs() && o.extended.urlId) { + if (-1 === l) { + l = t, c = o.extended.urlId; + continue + } + d = o.extended.urlId !== c + } else - 1 !== l && (d = !0); + if (d || -1 !== l && t === a - 1) { + const i = this._oscLinkService.getLinkData(c)?.uri; + if (i) { + const n = { + start: { + x: l + 1, + y: e + }, + end: { + x: t + (d || t !== a - 1 ? 0 : 1), + y: e + } + }; + let o = !1; + if (!r?.allowNonHttpProtocols) try { + const e = new URL(i); + ["http:", "https:"].includes(e.protocol) || (o = !0) + } catch (e) { + o = !0 + } + o || s.push({ + text: i, + range: n, + activate: (e, t) => r ? r.activate(e, t, n) : h(0, t), + hover: (e, t) => r?.hover?.(e, t, n), + leave: (e, t) => r?.leave?.(e, t, n) + }) + } + d = !1, o.hasExtendedAttrs() && o.extended.urlId ? (l = t, c = o.extended.urlId) : (l = -1, c = -1) + } + } t(s) + } + }; + + function h(e, t) { + if (confirm(`Do you want to navigate to ${t}?\n\nWARNING: This link could potentially be dangerous`)) { + const e = window.open(); + if (e) { + try { + e.opener = null + } catch {} + e.location.href = t + } else console.warn("Opening link blocked as opener could not be cleared") + } + } + t.OscLinkProvider = a = s([r(0, o.IBufferService), r(1, o.IOptionsService), r(2, o.IOscLinkService)], a) + }, + 6193: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.RenderDebouncer = void 0, t.RenderDebouncer = class { + constructor(e, t) { + this._renderCallback = e, this._coreBrowserService = t, this._refreshCallbacks = [] + } + dispose() { + this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0) + } + addRefreshCallback(e) { + return this._refreshCallbacks.push(e), this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._innerRefresh()))), this._animationFrame + } + refresh(e, t, i) { + this._rowCount = i, e = void 0 !== e ? e : 0, t = void 0 !== t ? t : this._rowCount - 1, this._rowStart = void 0 !== this._rowStart ? Math.min(this._rowStart, e) : e, this._rowEnd = void 0 !== this._rowEnd ? Math.max(this._rowEnd, t) : t, this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._innerRefresh()))) + } + _innerRefresh() { + if (this._animationFrame = void 0, void 0 === this._rowStart || void 0 === this._rowEnd || void 0 === this._rowCount) return void this._runRefreshCallbacks(); + const e = Math.max(this._rowStart, 0), + t = Math.min(this._rowEnd, this._rowCount - 1); + this._rowStart = void 0, this._rowEnd = void 0, this._renderCallback(e, t), this._runRefreshCallbacks() + } + _runRefreshCallbacks() { + for (const e of this._refreshCallbacks) e(0); + this._refreshCallbacks = [] + } + } + }, + 3236: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.Terminal = void 0; + const s = i(3614), + r = i(3656), + n = i(3551), + o = i(9042), + a = i(3730), + h = i(1680), + c = i(3107), + l = i(5744), + d = i(2950), + _ = i(1296), + u = i(428), + f = i(4269), + v = i(5114), + g = i(8934), + p = i(3230), + m = i(9312), + C = i(4725), + S = i(6731), + b = i(8055), + w = i(8969), + y = i(8460), + L = i(844), + x = i(6114), + E = i(8437), + R = i(2584), + M = i(7399), + A = i(5941), + D = i(9074), + k = i(2585), + T = i(5435), + B = i(4567), + O = i(779); + class P extends w.CoreTerminal { + get onFocus() { + return this._onFocus.event + } + get onBlur() { + return this._onBlur.event + } + get onA11yChar() { + return this._onA11yCharEmitter.event + } + get onA11yTab() { + return this._onA11yTabEmitter.event + } + get onWillOpen() { + return this._onWillOpen.event + } + constructor(e = {}) { + super(e), this.browser = x, this._keyDownHandled = !1, this._keyDownSeen = !1, this._keyPressHandled = !1, this._unprocessedDeadKey = !1, this._accessibilityManager = this.register(new L.MutableDisposable), this._onCursorMove = this.register(new y.EventEmitter), this.onCursorMove = this._onCursorMove.event, this._onKey = this.register(new y.EventEmitter), this.onKey = this._onKey.event, this._onRender = this.register(new y.EventEmitter), this.onRender = this._onRender.event, this._onSelectionChange = this.register(new y.EventEmitter), this.onSelectionChange = this._onSelectionChange.event, this._onTitleChange = this.register(new y.EventEmitter), this.onTitleChange = this._onTitleChange.event, this._onBell = this.register(new y.EventEmitter), this.onBell = this._onBell.event, this._onFocus = this.register(new y.EventEmitter), this._onBlur = this.register(new y.EventEmitter), this._onA11yCharEmitter = this.register(new y.EventEmitter), this._onA11yTabEmitter = this.register(new y.EventEmitter), this._onWillOpen = this.register(new y.EventEmitter), this._setup(), this._decorationService = this._instantiationService.createInstance(D.DecorationService), this._instantiationService.setService(k.IDecorationService, this._decorationService), this._linkProviderService = this._instantiationService.createInstance(O.LinkProviderService), this._instantiationService.setService(C.ILinkProviderService, this._linkProviderService), this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(a.OscLinkProvider)), this.register(this._inputHandler.onRequestBell((() => this._onBell.fire()))), this.register(this._inputHandler.onRequestRefreshRows(((e, t) => this.refresh(e, t)))), this.register(this._inputHandler.onRequestSendFocus((() => this._reportFocus()))), this.register(this._inputHandler.onRequestReset((() => this.reset()))), this.register(this._inputHandler.onRequestWindowsOptionsReport((e => this._reportWindowsOptions(e)))), this.register(this._inputHandler.onColor((e => this._handleColorEvent(e)))), this.register((0, y.forwardEvent)(this._inputHandler.onCursorMove, this._onCursorMove)), this.register((0, y.forwardEvent)(this._inputHandler.onTitleChange, this._onTitleChange)), this.register((0, y.forwardEvent)(this._inputHandler.onA11yChar, this._onA11yCharEmitter)), this.register((0, y.forwardEvent)(this._inputHandler.onA11yTab, this._onA11yTabEmitter)), this.register(this._bufferService.onResize((e => this._afterResize(e.cols, e.rows)))), this.register((0, L.toDisposable)((() => { + this._customKeyEventHandler = void 0, this.element?.parentNode?.removeChild(this.element) + }))) + } + _handleColorEvent(e) { + if (this._themeService) + for (const t of e) { + let e, i = ""; + switch (t.index) { + case 256: + e = "foreground", i = "10"; + break; + case 257: + e = "background", i = "11"; + break; + case 258: + e = "cursor", i = "12"; + break; + default: + e = "ansi", i = "4;" + t.index + } + switch (t.type) { + case 0: + const s = b.color.toColorRGB("ansi" === e ? this._themeService.colors.ansi[t.index] : this._themeService.colors[e]); + this.coreService.triggerDataEvent(`${R.C0.ESC}]${i};${(0, A.toRgbString)(s)}${R.C1_ESCAPED.ST}`); + break; + case 1: + if ("ansi" === e) this._themeService.modifyColors((e => e.ansi[t.index] = b.channels.toColor(...t.color))); + else { + const i = e; + this._themeService.modifyColors((e => e[i] = b.channels.toColor(...t.color))) + } + break; + case 2: + this._themeService.restoreColor(t.index) + } + } + } + _setup() { + super._setup(), this._customKeyEventHandler = void 0 + } + get buffer() { + return this.buffers.active + } + focus() { + this.textarea && this.textarea.focus({ + preventScroll: !0 + }) + } + _handleScreenReaderModeOptionChange(e) { + e ? !this._accessibilityManager.value && this._renderService && (this._accessibilityManager.value = this._instantiationService.createInstance(B.AccessibilityManager, this)) : this._accessibilityManager.clear() + } + _handleTextAreaFocus(e) { + this.coreService.decPrivateModes.sendFocus && this.coreService.triggerDataEvent(R.C0.ESC + "[I"), this.element.classList.add("focus"), this._showCursor(), this._onFocus.fire() + } + blur() { + return this.textarea?.blur() + } + _handleTextAreaBlur() { + this.textarea.value = "", this.refresh(this.buffer.y, this.buffer.y), this.coreService.decPrivateModes.sendFocus && this.coreService.triggerDataEvent(R.C0.ESC + "[O"), this.element.classList.remove("focus"), this._onBlur.fire() + } + _syncTextArea() { + if (!this.textarea || !this.buffer.isCursorInViewport || this._compositionHelper.isComposing || !this._renderService) return; + const e = this.buffer.ybase + this.buffer.y, + t = this.buffer.lines.get(e); + if (!t) return; + const i = Math.min(this.buffer.x, this.cols - 1), + s = this._renderService.dimensions.css.cell.height, + r = t.getWidth(i), + n = this._renderService.dimensions.css.cell.width * r, + o = this.buffer.y * this._renderService.dimensions.css.cell.height, + a = i * this._renderService.dimensions.css.cell.width; + this.textarea.style.left = a + "px", this.textarea.style.top = o + "px", this.textarea.style.width = n + "px", this.textarea.style.height = s + "px", this.textarea.style.lineHeight = s + "px", this.textarea.style.zIndex = "-5" + } + _initGlobal() { + this._bindKeys(), this.register((0, r.addDisposableDomListener)(this.element, "copy", (e => { + this.hasSelection() && (0, s.copyHandler)(e, this._selectionService) + }))); + const e = e => (0, s.handlePasteEvent)(e, this.textarea, this.coreService, this.optionsService); + this.register((0, r.addDisposableDomListener)(this.textarea, "paste", e)), this.register((0, r.addDisposableDomListener)(this.element, "paste", e)), x.isFirefox ? this.register((0, r.addDisposableDomListener)(this.element, "mousedown", (e => { + 2 === e.button && (0, s.rightClickHandler)(e, this.textarea, this.screenElement, this._selectionService, this.options.rightClickSelectsWord) + }))) : this.register((0, r.addDisposableDomListener)(this.element, "contextmenu", (e => { + (0, s.rightClickHandler)(e, this.textarea, this.screenElement, this._selectionService, this.options.rightClickSelectsWord) + }))), x.isLinux && this.register((0, r.addDisposableDomListener)(this.element, "auxclick", (e => { + 1 === e.button && (0, s.moveTextAreaUnderMouseCursor)(e, this.textarea, this.screenElement) + }))) + } + _bindKeys() { + this.register((0, r.addDisposableDomListener)(this.textarea, "keyup", (e => this._keyUp(e)), !0)), this.register((0, r.addDisposableDomListener)(this.textarea, "keydown", (e => this._keyDown(e)), !0)), this.register((0, r.addDisposableDomListener)(this.textarea, "keypress", (e => this._keyPress(e)), !0)), this.register((0, r.addDisposableDomListener)(this.textarea, "compositionstart", (() => this._compositionHelper.compositionstart()))), this.register((0, r.addDisposableDomListener)(this.textarea, "compositionupdate", (e => this._compositionHelper.compositionupdate(e)))), this.register((0, r.addDisposableDomListener)(this.textarea, "compositionend", (() => this._compositionHelper.compositionend()))), this.register((0, r.addDisposableDomListener)(this.textarea, "input", (e => this._inputEvent(e)), !0)), this.register(this.onRender((() => this._compositionHelper.updateCompositionElements()))) + } + open(e) { + if (!e) throw new Error("Terminal requires a parent element."); + if (e.isConnected || this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"), this.element?.ownerDocument.defaultView && this._coreBrowserService) return void(this.element.ownerDocument.defaultView !== this._coreBrowserService.window && (this._coreBrowserService.window = this.element.ownerDocument.defaultView)); + this._document = e.ownerDocument, this.options.documentOverride && this.options.documentOverride instanceof Document && (this._document = this.optionsService.rawOptions.documentOverride), this.element = this._document.createElement("div"), this.element.dir = "ltr", this.element.classList.add("terminal"), this.element.classList.add("xterm"), e.appendChild(this.element); + const t = this._document.createDocumentFragment(); + this._viewportElement = this._document.createElement("div"), this._viewportElement.classList.add("xterm-viewport"), t.appendChild(this._viewportElement), this._viewportScrollArea = this._document.createElement("div"), this._viewportScrollArea.classList.add("xterm-scroll-area"), this._viewportElement.appendChild(this._viewportScrollArea), this.screenElement = this._document.createElement("div"), this.screenElement.classList.add("xterm-screen"), this.register((0, r.addDisposableDomListener)(this.screenElement, "mousemove", (e => this.updateCursorStyle(e)))), this._helperContainer = this._document.createElement("div"), this._helperContainer.classList.add("xterm-helpers"), this.screenElement.appendChild(this._helperContainer), t.appendChild(this.screenElement), this.textarea = this._document.createElement("textarea"), this.textarea.classList.add("xterm-helper-textarea"), this.textarea.setAttribute("aria-label", o.promptLabel), x.isChromeOS || this.textarea.setAttribute("aria-multiline", "false"), this.textarea.setAttribute("autocorrect", "off"), this.textarea.setAttribute("autocapitalize", "off"), this.textarea.setAttribute("spellcheck", "false"), this.textarea.tabIndex = 0, this._coreBrowserService = this.register(this._instantiationService.createInstance(v.CoreBrowserService, this.textarea, e.ownerDocument.defaultView ?? window, this._document ?? "undefined" != typeof window ? window.document : null)), this._instantiationService.setService(C.ICoreBrowserService, this._coreBrowserService), this.register((0, r.addDisposableDomListener)(this.textarea, "focus", (e => this._handleTextAreaFocus(e)))), this.register((0, r.addDisposableDomListener)(this.textarea, "blur", (() => this._handleTextAreaBlur()))), this._helperContainer.appendChild(this.textarea), this._charSizeService = this._instantiationService.createInstance(u.CharSizeService, this._document, this._helperContainer), this._instantiationService.setService(C.ICharSizeService, this._charSizeService), this._themeService = this._instantiationService.createInstance(S.ThemeService), this._instantiationService.setService(C.IThemeService, this._themeService), this._characterJoinerService = this._instantiationService.createInstance(f.CharacterJoinerService), this._instantiationService.setService(C.ICharacterJoinerService, this._characterJoinerService), this._renderService = this.register(this._instantiationService.createInstance(p.RenderService, this.rows, this.screenElement)), this._instantiationService.setService(C.IRenderService, this._renderService), this.register(this._renderService.onRenderedViewportChange((e => this._onRender.fire(e)))), this.onResize((e => this._renderService.resize(e.cols, e.rows))), this._compositionView = this._document.createElement("div"), this._compositionView.classList.add("composition-view"), this._compositionHelper = this._instantiationService.createInstance(d.CompositionHelper, this.textarea, this._compositionView), this._helperContainer.appendChild(this._compositionView), this._mouseService = this._instantiationService.createInstance(g.MouseService), this._instantiationService.setService(C.IMouseService, this._mouseService), this.linkifier = this.register(this._instantiationService.createInstance(n.Linkifier, this.screenElement)), this.element.appendChild(t); + try { + this._onWillOpen.fire(this.element) + } catch {} + this._renderService.hasRenderer() || this._renderService.setRenderer(this._createRenderer()), this.viewport = this._instantiationService.createInstance(h.Viewport, this._viewportElement, this._viewportScrollArea), this.viewport.onRequestScrollLines((e => this.scrollLines(e.amount, e.suppressScrollEvent, 1))), this.register(this._inputHandler.onRequestSyncScrollBar((() => this.viewport.syncScrollArea()))), this.register(this.viewport), this.register(this.onCursorMove((() => { + this._renderService.handleCursorMove(), this._syncTextArea() + }))), this.register(this.onResize((() => this._renderService.handleResize(this.cols, this.rows)))), this.register(this.onBlur((() => this._renderService.handleBlur()))), this.register(this.onFocus((() => this._renderService.handleFocus()))), this.register(this._renderService.onDimensionsChange((() => this.viewport.syncScrollArea()))), this._selectionService = this.register(this._instantiationService.createInstance(m.SelectionService, this.element, this.screenElement, this.linkifier)), this._instantiationService.setService(C.ISelectionService, this._selectionService), this.register(this._selectionService.onRequestScrollLines((e => this.scrollLines(e.amount, e.suppressScrollEvent)))), this.register(this._selectionService.onSelectionChange((() => this._onSelectionChange.fire()))), this.register(this._selectionService.onRequestRedraw((e => this._renderService.handleSelectionChanged(e.start, e.end, e.columnSelectMode)))), this.register(this._selectionService.onLinuxMouseSelection((e => { + this.textarea.value = e, this.textarea.focus(), this.textarea.select() + }))), this.register(this._onScroll.event((e => { + this.viewport.syncScrollArea(), this._selectionService.refresh() + }))), this.register((0, r.addDisposableDomListener)(this._viewportElement, "scroll", (() => this._selectionService.refresh()))), this.register(this._instantiationService.createInstance(c.BufferDecorationRenderer, this.screenElement)), this.register((0, r.addDisposableDomListener)(this.element, "mousedown", (e => this._selectionService.handleMouseDown(e)))), this.coreMouseService.areMouseEventsActive ? (this._selectionService.disable(), this.element.classList.add("enable-mouse-events")) : this._selectionService.enable(), this.options.screenReaderMode && (this._accessibilityManager.value = this._instantiationService.createInstance(B.AccessibilityManager, this)), this.register(this.optionsService.onSpecificOptionChange("screenReaderMode", (e => this._handleScreenReaderModeOptionChange(e)))), this.options.overviewRulerWidth && (this._overviewRulerRenderer = this.register(this._instantiationService.createInstance(l.OverviewRulerRenderer, this._viewportElement, this.screenElement))), this.optionsService.onSpecificOptionChange("overviewRulerWidth", (e => { + !this._overviewRulerRenderer && e && this._viewportElement && this.screenElement && (this._overviewRulerRenderer = this.register(this._instantiationService.createInstance(l.OverviewRulerRenderer, this._viewportElement, this.screenElement))) + })), this._charSizeService.measure(), this.refresh(0, this.rows - 1), this._initGlobal(), this.bindMouse() + } + _createRenderer() { + return this._instantiationService.createInstance(_.DomRenderer, this, this._document, this.element, this.screenElement, this._viewportElement, this._helperContainer, this.linkifier) + } + bindMouse() { + const e = this, + t = this.element; + + function i(t) { + const i = e._mouseService.getMouseReportCoords(t, e.screenElement); + if (!i) return !1; + let s, r; + switch (t.overrideType || t.type) { + case "mousemove": + r = 32, void 0 === t.buttons ? (s = 3, void 0 !== t.button && (s = t.button < 3 ? t.button : 3)) : s = 1 & t.buttons ? 0 : 4 & t.buttons ? 1 : 2 & t.buttons ? 2 : 3; + break; + case "mouseup": + r = 0, s = t.button < 3 ? t.button : 3; + break; + case "mousedown": + r = 1, s = t.button < 3 ? t.button : 3; + break; + case "wheel": + if (e._customWheelEventHandler && !1 === e._customWheelEventHandler(t)) return !1; + if (0 === e.viewport.getLinesScrolled(t)) return !1; + r = t.deltaY < 0 ? 0 : 1, s = 4; + break; + default: + return !1 + } + return !(void 0 === r || void 0 === s || s > 4) && e.coreMouseService.triggerMouseEvent({ + col: i.col, + row: i.row, + x: i.x, + y: i.y, + button: s, + action: r, + ctrl: t.ctrlKey, + alt: t.altKey, + shift: t.shiftKey + }) + } + const s = { + mouseup: null, + wheel: null, + mousedrag: null, + mousemove: null + }, + n = { + mouseup: e => (i(e), e.buttons || (this._document.removeEventListener("mouseup", s.mouseup), s.mousedrag && this._document.removeEventListener("mousemove", s.mousedrag)), this.cancel(e)), + wheel: e => (i(e), this.cancel(e, !0)), + mousedrag: e => { + e.buttons && i(e) + }, + mousemove: e => { + e.buttons || i(e) + } + }; + this.register(this.coreMouseService.onProtocolChange((e => { + e ? ("debug" === this.optionsService.rawOptions.logLevel && this._logService.debug("Binding to mouse events:", this.coreMouseService.explainEvents(e)), this.element.classList.add("enable-mouse-events"), this._selectionService.disable()) : (this._logService.debug("Unbinding from mouse events."), this.element.classList.remove("enable-mouse-events"), this._selectionService.enable()), 8 & e ? s.mousemove || (t.addEventListener("mousemove", n.mousemove), s.mousemove = n.mousemove) : (t.removeEventListener("mousemove", s.mousemove), s.mousemove = null), 16 & e ? s.wheel || (t.addEventListener("wheel", n.wheel, { + passive: !1 + }), s.wheel = n.wheel) : (t.removeEventListener("wheel", s.wheel), s.wheel = null), 2 & e ? s.mouseup || (s.mouseup = n.mouseup) : (this._document.removeEventListener("mouseup", s.mouseup), s.mouseup = null), 4 & e ? s.mousedrag || (s.mousedrag = n.mousedrag) : (this._document.removeEventListener("mousemove", s.mousedrag), s.mousedrag = null) + }))), this.coreMouseService.activeProtocol = this.coreMouseService.activeProtocol, this.register((0, r.addDisposableDomListener)(t, "mousedown", (e => { + if (e.preventDefault(), this.focus(), this.coreMouseService.areMouseEventsActive && !this._selectionService.shouldForceSelection(e)) return i(e), s.mouseup && this._document.addEventListener("mouseup", s.mouseup), s.mousedrag && this._document.addEventListener("mousemove", s.mousedrag), this.cancel(e) + }))), this.register((0, r.addDisposableDomListener)(t, "wheel", (e => { + if (!s.wheel) { + if (this._customWheelEventHandler && !1 === this._customWheelEventHandler(e)) return !1; + if (!this.buffer.hasScrollback) { + const t = this.viewport.getLinesScrolled(e); + if (0 === t) return; + const i = R.C0.ESC + (this.coreService.decPrivateModes.applicationCursorKeys ? "O" : "[") + (e.deltaY < 0 ? "A" : "B"); + let s = ""; + for (let e = 0; e < Math.abs(t); e++) s += i; + return this.coreService.triggerDataEvent(s, !0), this.cancel(e, !0) + } + return this.viewport.handleWheel(e) ? this.cancel(e) : void 0 + } + }), { + passive: !1 + })), this.register((0, r.addDisposableDomListener)(t, "touchstart", (e => { + if (!this.coreMouseService.areMouseEventsActive) return this.viewport.handleTouchStart(e), this.cancel(e) + }), { + passive: !0 + })), this.register((0, r.addDisposableDomListener)(t, "touchmove", (e => { + if (!this.coreMouseService.areMouseEventsActive) return this.viewport.handleTouchMove(e) ? void 0 : this.cancel(e) + }), { + passive: !1 + })) + } + refresh(e, t) { + this._renderService?.refreshRows(e, t) + } + updateCursorStyle(e) { + this._selectionService?.shouldColumnSelect(e) ? this.element.classList.add("column-select") : this.element.classList.remove("column-select") + } + _showCursor() { + this.coreService.isCursorInitialized || (this.coreService.isCursorInitialized = !0, this.refresh(this.buffer.y, this.buffer.y)) + } + scrollLines(e, t, i = 0) { + 1 === i ? (super.scrollLines(e, t, i), this.refresh(0, this.rows - 1)) : this.viewport?.scrollLines(e) + } + paste(e) { + (0, s.paste)(e, this.textarea, this.coreService, this.optionsService) + } + attachCustomKeyEventHandler(e) { + this._customKeyEventHandler = e + } + attachCustomWheelEventHandler(e) { + this._customWheelEventHandler = e + } + registerLinkProvider(e) { + return this._linkProviderService.registerLinkProvider(e) + } + registerCharacterJoiner(e) { + if (!this._characterJoinerService) throw new Error("Terminal must be opened first"); + const t = this._characterJoinerService.register(e); + return this.refresh(0, this.rows - 1), t + } + deregisterCharacterJoiner(e) { + if (!this._characterJoinerService) throw new Error("Terminal must be opened first"); + this._characterJoinerService.deregister(e) && this.refresh(0, this.rows - 1) + } + get markers() { + return this.buffer.markers + } + registerMarker(e) { + return this.buffer.addMarker(this.buffer.ybase + this.buffer.y + e) + } + registerDecoration(e) { + return this._decorationService.registerDecoration(e) + } + hasSelection() { + return !!this._selectionService && this._selectionService.hasSelection + } + select(e, t, i) { + this._selectionService.setSelection(e, t, i) + } + getSelection() { + return this._selectionService ? this._selectionService.selectionText : "" + } + getSelectionPosition() { + if (this._selectionService && this._selectionService.hasSelection) return { + start: { + x: this._selectionService.selectionStart[0], + y: this._selectionService.selectionStart[1] + }, + end: { + x: this._selectionService.selectionEnd[0], + y: this._selectionService.selectionEnd[1] + } + } + } + clearSelection() { + this._selectionService?.clearSelection() + } + selectAll() { + this._selectionService?.selectAll() + } + selectLines(e, t) { + this._selectionService?.selectLines(e, t) + } + _keyDown(e) { + if (this._keyDownHandled = !1, this._keyDownSeen = !0, this._customKeyEventHandler && !1 === this._customKeyEventHandler(e)) return !1; + const t = this.browser.isMac && this.options.macOptionIsMeta && e.altKey; + if (!t && !this._compositionHelper.keydown(e)) return this.options.scrollOnUserInput && this.buffer.ybase !== this.buffer.ydisp && this.scrollToBottom(), !1; + t || "Dead" !== e.key && "AltGraph" !== e.key || (this._unprocessedDeadKey = !0); + const i = (0, M.evaluateKeyboardEvent)(e, this.coreService.decPrivateModes.applicationCursorKeys, this.browser.isMac, this.options.macOptionIsMeta); + if (this.updateCursorStyle(e), 3 === i.type || 2 === i.type) { + const t = this.rows - 1; + return this.scrollLines(2 === i.type ? -t : t), this.cancel(e, !0) + } + return 1 === i.type && this.selectAll(), !!this._isThirdLevelShift(this.browser, e) || (i.cancel && this.cancel(e, !0), !i.key || !!(e.key && !e.ctrlKey && !e.altKey && !e.metaKey && 1 === e.key.length && e.key.charCodeAt(0) >= 65 && e.key.charCodeAt(0) <= 90) || (this._unprocessedDeadKey ? (this._unprocessedDeadKey = !1, !0) : (i.key !== R.C0.ETX && i.key !== R.C0.CR || (this.textarea.value = ""), this._onKey.fire({ + key: i.key, + domEvent: e + }), this._showCursor(), this.coreService.triggerDataEvent(i.key, !0), !this.optionsService.rawOptions.screenReaderMode || e.altKey || e.ctrlKey ? this.cancel(e, !0) : void(this._keyDownHandled = !0)))) + } + _isThirdLevelShift(e, t) { + const i = e.isMac && !this.options.macOptionIsMeta && t.altKey && !t.ctrlKey && !t.metaKey || e.isWindows && t.altKey && t.ctrlKey && !t.metaKey || e.isWindows && t.getModifierState("AltGraph"); + return "keypress" === t.type ? i : i && (!t.keyCode || t.keyCode > 47) + } + _keyUp(e) { + this._keyDownSeen = !1, this._customKeyEventHandler && !1 === this._customKeyEventHandler(e) || (function(e) { + return 16 === e.keyCode || 17 === e.keyCode || 18 === e.keyCode + }(e) || this.focus(), this.updateCursorStyle(e), this._keyPressHandled = !1) + } + _keyPress(e) { + let t; + if (this._keyPressHandled = !1, this._keyDownHandled) return !1; + if (this._customKeyEventHandler && !1 === this._customKeyEventHandler(e)) return !1; + if (this.cancel(e), e.charCode) t = e.charCode; + else if (null === e.which || void 0 === e.which) t = e.keyCode; + else { + if (0 === e.which || 0 === e.charCode) return !1; + t = e.which + } + return !(!t || (e.altKey || e.ctrlKey || e.metaKey) && !this._isThirdLevelShift(this.browser, e) || (t = String.fromCharCode(t), this._onKey.fire({ + key: t, + domEvent: e + }), this._showCursor(), this.coreService.triggerDataEvent(t, !0), this._keyPressHandled = !0, this._unprocessedDeadKey = !1, 0)) + } + _inputEvent(e) { + if (e.data && "insertText" === e.inputType && (!e.composed || !this._keyDownSeen) && !this.optionsService.rawOptions.screenReaderMode) { + if (this._keyPressHandled) return !1; + this._unprocessedDeadKey = !1; + const t = e.data; + return this.coreService.triggerDataEvent(t, !0), this.cancel(e), !0 + } + return !1 + } + resize(e, t) { + e !== this.cols || t !== this.rows ? super.resize(e, t) : this._charSizeService && !this._charSizeService.hasValidSize && this._charSizeService.measure() + } + _afterResize(e, t) { + this._charSizeService?.measure(), this.viewport?.syncScrollArea(!0) + } + clear() { + if (0 !== this.buffer.ybase || 0 !== this.buffer.y) { + this.buffer.clearAllMarkers(), this.buffer.lines.set(0, this.buffer.lines.get(this.buffer.ybase + this.buffer.y)), this.buffer.lines.length = 1, this.buffer.ydisp = 0, this.buffer.ybase = 0, this.buffer.y = 0; + for (let e = 1; e < this.rows; e++) this.buffer.lines.push(this.buffer.getBlankLine(E.DEFAULT_ATTR_DATA)); + this._onScroll.fire({ + position: this.buffer.ydisp, + source: 0 + }), this.viewport?.reset(), this.refresh(0, this.rows - 1) + } + } + reset() { + this.options.rows = this.rows, this.options.cols = this.cols; + const e = this._customKeyEventHandler; + this._setup(), super.reset(), this._selectionService?.reset(), this._decorationService.reset(), this.viewport?.reset(), this._customKeyEventHandler = e, this.refresh(0, this.rows - 1) + } + clearTextureAtlas() { + this._renderService?.clearTextureAtlas() + } + _reportFocus() { + this.element?.classList.contains("focus") ? this.coreService.triggerDataEvent(R.C0.ESC + "[I") : this.coreService.triggerDataEvent(R.C0.ESC + "[O") + } + _reportWindowsOptions(e) { + if (this._renderService) switch (e) { + case T.WindowsOptionsReportType.GET_WIN_SIZE_PIXELS: + const e = this._renderService.dimensions.css.canvas.width.toFixed(0), + t = this._renderService.dimensions.css.canvas.height.toFixed(0); + this.coreService.triggerDataEvent(`${R.C0.ESC}[4;${t};${e}t`); + break; + case T.WindowsOptionsReportType.GET_CELL_SIZE_PIXELS: + const i = this._renderService.dimensions.css.cell.width.toFixed(0), + s = this._renderService.dimensions.css.cell.height.toFixed(0); + this.coreService.triggerDataEvent(`${R.C0.ESC}[6;${s};${i}t`) + } + } + cancel(e, t) { + if (this.options.cancelEvents || t) return e.preventDefault(), e.stopPropagation(), !1 + } + } + t.Terminal = P + }, + 9924: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.TimeBasedDebouncer = void 0, t.TimeBasedDebouncer = class { + constructor(e, t = 1e3) { + this._renderCallback = e, this._debounceThresholdMS = t, this._lastRefreshMs = 0, this._additionalRefreshRequested = !1 + } + dispose() { + this._refreshTimeoutID && clearTimeout(this._refreshTimeoutID) + } + refresh(e, t, i) { + this._rowCount = i, e = void 0 !== e ? e : 0, t = void 0 !== t ? t : this._rowCount - 1, this._rowStart = void 0 !== this._rowStart ? Math.min(this._rowStart, e) : e, this._rowEnd = void 0 !== this._rowEnd ? Math.max(this._rowEnd, t) : t; + const s = Date.now(); + if (s - this._lastRefreshMs >= this._debounceThresholdMS) this._lastRefreshMs = s, this._innerRefresh(); + else if (!this._additionalRefreshRequested) { + const e = s - this._lastRefreshMs, + t = this._debounceThresholdMS - e; + this._additionalRefreshRequested = !0, this._refreshTimeoutID = window.setTimeout((() => { + this._lastRefreshMs = Date.now(), this._innerRefresh(), this._additionalRefreshRequested = !1, this._refreshTimeoutID = void 0 + }), t) + } + } + _innerRefresh() { + if (void 0 === this._rowStart || void 0 === this._rowEnd || void 0 === this._rowCount) return; + const e = Math.max(this._rowStart, 0), + t = Math.min(this._rowEnd, this._rowCount - 1); + this._rowStart = void 0, this._rowEnd = void 0, this._renderCallback(e, t) + } + } + }, + 1680: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.Viewport = void 0; + const n = i(3656), + o = i(4725), + a = i(8460), + h = i(844), + c = i(2585); + let l = t.Viewport = class extends h.Disposable { + constructor(e, t, i, s, r, o, h, c) { + super(), this._viewportElement = e, this._scrollArea = t, this._bufferService = i, this._optionsService = s, this._charSizeService = r, this._renderService = o, this._coreBrowserService = h, this.scrollBarWidth = 0, this._currentRowHeight = 0, this._currentDeviceCellHeight = 0, this._lastRecordedBufferLength = 0, this._lastRecordedViewportHeight = 0, this._lastRecordedBufferHeight = 0, this._lastTouchY = 0, this._lastScrollTop = 0, this._wheelPartialScroll = 0, this._refreshAnimationFrame = null, this._ignoreNextScrollEvent = !1, this._smoothScrollState = { + startTime: 0, + origin: -1, + target: -1 + }, this._onRequestScrollLines = this.register(new a.EventEmitter), this.onRequestScrollLines = this._onRequestScrollLines.event, this.scrollBarWidth = this._viewportElement.offsetWidth - this._scrollArea.offsetWidth || 15, this.register((0, n.addDisposableDomListener)(this._viewportElement, "scroll", this._handleScroll.bind(this))), this._activeBuffer = this._bufferService.buffer, this.register(this._bufferService.buffers.onBufferActivate((e => this._activeBuffer = e.activeBuffer))), this._renderDimensions = this._renderService.dimensions, this.register(this._renderService.onDimensionsChange((e => this._renderDimensions = e))), this._handleThemeChange(c.colors), this.register(c.onChangeColors((e => this._handleThemeChange(e)))), this.register(this._optionsService.onSpecificOptionChange("scrollback", (() => this.syncScrollArea()))), setTimeout((() => this.syncScrollArea())) + } + _handleThemeChange(e) { + this._viewportElement.style.backgroundColor = e.background.css + } + reset() { + this._currentRowHeight = 0, this._currentDeviceCellHeight = 0, this._lastRecordedBufferLength = 0, this._lastRecordedViewportHeight = 0, this._lastRecordedBufferHeight = 0, this._lastTouchY = 0, this._lastScrollTop = 0, this._coreBrowserService.window.requestAnimationFrame((() => this.syncScrollArea())) + } + _refresh(e) { + if (e) return this._innerRefresh(), void(null !== this._refreshAnimationFrame && this._coreBrowserService.window.cancelAnimationFrame(this._refreshAnimationFrame)); + null === this._refreshAnimationFrame && (this._refreshAnimationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._innerRefresh()))) + } + _innerRefresh() { + if (this._charSizeService.height > 0) { + this._currentRowHeight = this._renderDimensions.device.cell.height / this._coreBrowserService.dpr, this._currentDeviceCellHeight = this._renderDimensions.device.cell.height, this._lastRecordedViewportHeight = this._viewportElement.offsetHeight; + const e = Math.round(this._currentRowHeight * this._lastRecordedBufferLength) + (this._lastRecordedViewportHeight - this._renderDimensions.css.canvas.height); + this._lastRecordedBufferHeight !== e && (this._lastRecordedBufferHeight = e, this._scrollArea.style.height = this._lastRecordedBufferHeight + "px") + } + const e = this._bufferService.buffer.ydisp * this._currentRowHeight; + this._viewportElement.scrollTop !== e && (this._ignoreNextScrollEvent = !0, this._viewportElement.scrollTop = e), this._refreshAnimationFrame = null + } + syncScrollArea(e = !1) { + if (this._lastRecordedBufferLength !== this._bufferService.buffer.lines.length) return this._lastRecordedBufferLength = this._bufferService.buffer.lines.length, void this._refresh(e); + this._lastRecordedViewportHeight === this._renderService.dimensions.css.canvas.height && this._lastScrollTop === this._activeBuffer.ydisp * this._currentRowHeight && this._renderDimensions.device.cell.height === this._currentDeviceCellHeight || this._refresh(e) + } + _handleScroll(e) { + if (this._lastScrollTop = this._viewportElement.scrollTop, !this._viewportElement.offsetParent) return; + if (this._ignoreNextScrollEvent) return this._ignoreNextScrollEvent = !1, void this._onRequestScrollLines.fire({ + amount: 0, + suppressScrollEvent: !0 + }); + const t = Math.round(this._lastScrollTop / this._currentRowHeight) - this._bufferService.buffer.ydisp; + this._onRequestScrollLines.fire({ + amount: t, + suppressScrollEvent: !0 + }) + } + _smoothScroll() { + if (this._isDisposed || -1 === this._smoothScrollState.origin || -1 === this._smoothScrollState.target) return; + const e = this._smoothScrollPercent(); + this._viewportElement.scrollTop = this._smoothScrollState.origin + Math.round(e * (this._smoothScrollState.target - this._smoothScrollState.origin)), e < 1 ? this._coreBrowserService.window.requestAnimationFrame((() => this._smoothScroll())) : this._clearSmoothScrollState() + } + _smoothScrollPercent() { + return this._optionsService.rawOptions.smoothScrollDuration && this._smoothScrollState.startTime ? Math.max(Math.min((Date.now() - this._smoothScrollState.startTime) / this._optionsService.rawOptions.smoothScrollDuration, 1), 0) : 1 + } + _clearSmoothScrollState() { + this._smoothScrollState.startTime = 0, this._smoothScrollState.origin = -1, this._smoothScrollState.target = -1 + } + _bubbleScroll(e, t) { + const i = this._viewportElement.scrollTop + this._lastRecordedViewportHeight; + return !(t < 0 && 0 !== this._viewportElement.scrollTop || t > 0 && i < this._lastRecordedBufferHeight) || (e.cancelable && e.preventDefault(), !1) + } + handleWheel(e) { + const t = this._getPixelsScrolled(e); + return 0 !== t && (this._optionsService.rawOptions.smoothScrollDuration ? (this._smoothScrollState.startTime = Date.now(), this._smoothScrollPercent() < 1 ? (this._smoothScrollState.origin = this._viewportElement.scrollTop, -1 === this._smoothScrollState.target ? this._smoothScrollState.target = this._viewportElement.scrollTop + t : this._smoothScrollState.target += t, this._smoothScrollState.target = Math.max(Math.min(this._smoothScrollState.target, this._viewportElement.scrollHeight), 0), this._smoothScroll()) : this._clearSmoothScrollState()) : this._viewportElement.scrollTop += t, this._bubbleScroll(e, t)) + } + scrollLines(e) { + if (0 !== e) + if (this._optionsService.rawOptions.smoothScrollDuration) { + const t = e * this._currentRowHeight; + this._smoothScrollState.startTime = Date.now(), this._smoothScrollPercent() < 1 ? (this._smoothScrollState.origin = this._viewportElement.scrollTop, this._smoothScrollState.target = this._smoothScrollState.origin + t, this._smoothScrollState.target = Math.max(Math.min(this._smoothScrollState.target, this._viewportElement.scrollHeight), 0), this._smoothScroll()) : this._clearSmoothScrollState() + } else this._onRequestScrollLines.fire({ + amount: e, + suppressScrollEvent: !1 + }) + } + _getPixelsScrolled(e) { + if (0 === e.deltaY || e.shiftKey) return 0; + let t = this._applyScrollModifier(e.deltaY, e); + return e.deltaMode === WheelEvent.DOM_DELTA_LINE ? t *= this._currentRowHeight : e.deltaMode === WheelEvent.DOM_DELTA_PAGE && (t *= this._currentRowHeight * this._bufferService.rows), t + } + getBufferElements(e, t) { + let i, s = ""; + const r = [], + n = t ?? this._bufferService.buffer.lines.length, + o = this._bufferService.buffer.lines; + for (let t = e; t < n; t++) { + const e = o.get(t); + if (!e) continue; + const n = o.get(t + 1)?.isWrapped; + if (s += e.translateToString(!n), !n || t === o.length - 1) { + const e = document.createElement("div"); + e.textContent = s, r.push(e), s.length > 0 && (i = e), s = "" + } + } + return { + bufferElements: r, + cursorElement: i + } + } + getLinesScrolled(e) { + if (0 === e.deltaY || e.shiftKey) return 0; + let t = this._applyScrollModifier(e.deltaY, e); + return e.deltaMode === WheelEvent.DOM_DELTA_PIXEL ? (t /= this._currentRowHeight + 0, this._wheelPartialScroll += t, t = Math.floor(Math.abs(this._wheelPartialScroll)) * (this._wheelPartialScroll > 0 ? 1 : -1), this._wheelPartialScroll %= 1) : e.deltaMode === WheelEvent.DOM_DELTA_PAGE && (t *= this._bufferService.rows), t + } + _applyScrollModifier(e, t) { + const i = this._optionsService.rawOptions.fastScrollModifier; + return "alt" === i && t.altKey || "ctrl" === i && t.ctrlKey || "shift" === i && t.shiftKey ? e * this._optionsService.rawOptions.fastScrollSensitivity * this._optionsService.rawOptions.scrollSensitivity : e * this._optionsService.rawOptions.scrollSensitivity + } + handleTouchStart(e) { + this._lastTouchY = e.touches[0].pageY + } + handleTouchMove(e) { + const t = this._lastTouchY - e.touches[0].pageY; + return this._lastTouchY = e.touches[0].pageY, 0 !== t && (this._viewportElement.scrollTop += t, this._bubbleScroll(e, t)) + } + }; + t.Viewport = l = s([r(2, c.IBufferService), r(3, c.IOptionsService), r(4, o.ICharSizeService), r(5, o.IRenderService), r(6, o.ICoreBrowserService), r(7, o.IThemeService)], l) + }, + 3107: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.BufferDecorationRenderer = void 0; + const n = i(4725), + o = i(844), + a = i(2585); + let h = t.BufferDecorationRenderer = class extends o.Disposable { + constructor(e, t, i, s, r) { + super(), this._screenElement = e, this._bufferService = t, this._coreBrowserService = i, this._decorationService = s, this._renderService = r, this._decorationElements = new Map, this._altBufferIsActive = !1, this._dimensionsChanged = !1, this._container = document.createElement("div"), this._container.classList.add("xterm-decoration-container"), this._screenElement.appendChild(this._container), this.register(this._renderService.onRenderedViewportChange((() => this._doRefreshDecorations()))), this.register(this._renderService.onDimensionsChange((() => { + this._dimensionsChanged = !0, this._queueRefresh() + }))), this.register(this._coreBrowserService.onDprChange((() => this._queueRefresh()))), this.register(this._bufferService.buffers.onBufferActivate((() => { + this._altBufferIsActive = this._bufferService.buffer === this._bufferService.buffers.alt + }))), this.register(this._decorationService.onDecorationRegistered((() => this._queueRefresh()))), this.register(this._decorationService.onDecorationRemoved((e => this._removeDecoration(e)))), this.register((0, o.toDisposable)((() => { + this._container.remove(), this._decorationElements.clear() + }))) + } + _queueRefresh() { + void 0 === this._animationFrame && (this._animationFrame = this._renderService.addRefreshCallback((() => { + this._doRefreshDecorations(), this._animationFrame = void 0 + }))) + } + _doRefreshDecorations() { + for (const e of this._decorationService.decorations) this._renderDecoration(e); + this._dimensionsChanged = !1 + } + _renderDecoration(e) { + this._refreshStyle(e), this._dimensionsChanged && this._refreshXPosition(e) + } + _createElement(e) { + const t = this._coreBrowserService.mainDocument.createElement("div"); + t.classList.add("xterm-decoration"), t.classList.toggle("xterm-decoration-top-layer", "top" === e?.options?.layer), t.style.width = `${Math.round((e.options.width || 1) * this._renderService.dimensions.css.cell.width)}px`, t.style.height = (e.options.height || 1) * this._renderService.dimensions.css.cell.height + "px", t.style.top = (e.marker.line - this._bufferService.buffers.active.ydisp) * this._renderService.dimensions.css.cell.height + "px", t.style.lineHeight = `${this._renderService.dimensions.css.cell.height}px`; + const i = e.options.x ?? 0; + return i && i > this._bufferService.cols && (t.style.display = "none"), this._refreshXPosition(e, t), t + } + _refreshStyle(e) { + const t = e.marker.line - this._bufferService.buffers.active.ydisp; + if (t < 0 || t >= this._bufferService.rows) e.element && (e.element.style.display = "none", e.onRenderEmitter.fire(e.element)); + else { + let i = this._decorationElements.get(e); + i || (i = this._createElement(e), e.element = i, this._decorationElements.set(e, i), this._container.appendChild(i), e.onDispose((() => { + this._decorationElements.delete(e), i.remove() + }))), i.style.top = t * this._renderService.dimensions.css.cell.height + "px", i.style.display = this._altBufferIsActive ? "none" : "block", e.onRenderEmitter.fire(i) + } + } + _refreshXPosition(e, t = e.element) { + if (!t) return; + const i = e.options.x ?? 0; + "right" === (e.options.anchor || "left") ? t.style.right = i ? i * this._renderService.dimensions.css.cell.width + "px" : "": t.style.left = i ? i * this._renderService.dimensions.css.cell.width + "px" : "" + } + _removeDecoration(e) { + this._decorationElements.get(e)?.remove(), this._decorationElements.delete(e), e.dispose() + } + }; + t.BufferDecorationRenderer = h = s([r(1, a.IBufferService), r(2, n.ICoreBrowserService), r(3, a.IDecorationService), r(4, n.IRenderService)], h) + }, + 5871: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.ColorZoneStore = void 0, t.ColorZoneStore = class { + constructor() { + this._zones = [], this._zonePool = [], this._zonePoolIndex = 0, this._linePadding = { + full: 0, + left: 0, + center: 0, + right: 0 + } + } + get zones() { + return this._zonePool.length = Math.min(this._zonePool.length, this._zones.length), this._zones + } + clear() { + this._zones.length = 0, this._zonePoolIndex = 0 + } + addDecoration(e) { + if (e.options.overviewRulerOptions) { + for (const t of this._zones) + if (t.color === e.options.overviewRulerOptions.color && t.position === e.options.overviewRulerOptions.position) { + if (this._lineIntersectsZone(t, e.marker.line)) return; + if (this._lineAdjacentToZone(t, e.marker.line, e.options.overviewRulerOptions.position)) return void this._addLineToZone(t, e.marker.line) + } if (this._zonePoolIndex < this._zonePool.length) return this._zonePool[this._zonePoolIndex].color = e.options.overviewRulerOptions.color, this._zonePool[this._zonePoolIndex].position = e.options.overviewRulerOptions.position, this._zonePool[this._zonePoolIndex].startBufferLine = e.marker.line, this._zonePool[this._zonePoolIndex].endBufferLine = e.marker.line, void this._zones.push(this._zonePool[this._zonePoolIndex++]); + this._zones.push({ + color: e.options.overviewRulerOptions.color, + position: e.options.overviewRulerOptions.position, + startBufferLine: e.marker.line, + endBufferLine: e.marker.line + }), this._zonePool.push(this._zones[this._zones.length - 1]), this._zonePoolIndex++ + } + } + setPadding(e) { + this._linePadding = e + } + _lineIntersectsZone(e, t) { + return t >= e.startBufferLine && t <= e.endBufferLine + } + _lineAdjacentToZone(e, t, i) { + return t >= e.startBufferLine - this._linePadding[i || "full"] && t <= e.endBufferLine + this._linePadding[i || "full"] + } + _addLineToZone(e, t) { + e.startBufferLine = Math.min(e.startBufferLine, t), e.endBufferLine = Math.max(e.endBufferLine, t) + } + } + }, + 5744: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.OverviewRulerRenderer = void 0; + const n = i(5871), + o = i(4725), + a = i(844), + h = i(2585), + c = { + full: 0, + left: 0, + center: 0, + right: 0 + }, + l = { + full: 0, + left: 0, + center: 0, + right: 0 + }, + d = { + full: 0, + left: 0, + center: 0, + right: 0 + }; + let _ = t.OverviewRulerRenderer = class extends a.Disposable { + get _width() { + return this._optionsService.options.overviewRulerWidth || 0 + } + constructor(e, t, i, s, r, o, h) { + super(), this._viewportElement = e, this._screenElement = t, this._bufferService = i, this._decorationService = s, this._renderService = r, this._optionsService = o, this._coreBrowserService = h, this._colorZoneStore = new n.ColorZoneStore, this._shouldUpdateDimensions = !0, this._shouldUpdateAnchor = !0, this._lastKnownBufferLength = 0, this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add("xterm-decoration-overview-ruler"), this._refreshCanvasDimensions(), this._viewportElement.parentElement?.insertBefore(this._canvas, this._viewportElement); + const c = this._canvas.getContext("2d"); + if (!c) throw new Error("Ctx cannot be null"); + this._ctx = c, this._registerDecorationListeners(), this._registerBufferChangeListeners(), this._registerDimensionChangeListeners(), this.register((0, a.toDisposable)((() => { + this._canvas?.remove() + }))) + } + _registerDecorationListeners() { + this.register(this._decorationService.onDecorationRegistered((() => this._queueRefresh(void 0, !0)))), this.register(this._decorationService.onDecorationRemoved((() => this._queueRefresh(void 0, !0)))) + } + _registerBufferChangeListeners() { + this.register(this._renderService.onRenderedViewportChange((() => this._queueRefresh()))), this.register(this._bufferService.buffers.onBufferActivate((() => { + this._canvas.style.display = this._bufferService.buffer === this._bufferService.buffers.alt ? "none" : "block" + }))), this.register(this._bufferService.onScroll((() => { + this._lastKnownBufferLength !== this._bufferService.buffers.normal.lines.length && (this._refreshDrawHeightConstants(), this._refreshColorZonePadding()) + }))) + } + _registerDimensionChangeListeners() { + this.register(this._renderService.onRender((() => { + this._containerHeight && this._containerHeight === this._screenElement.clientHeight || (this._queueRefresh(!0), this._containerHeight = this._screenElement.clientHeight) + }))), this.register(this._optionsService.onSpecificOptionChange("overviewRulerWidth", (() => this._queueRefresh(!0)))), this.register(this._coreBrowserService.onDprChange((() => this._queueRefresh(!0)))), this._queueRefresh(!0) + } + _refreshDrawConstants() { + const e = Math.floor(this._canvas.width / 3), + t = Math.ceil(this._canvas.width / 3); + l.full = this._canvas.width, l.left = e, l.center = t, l.right = e, this._refreshDrawHeightConstants(), d.full = 0, d.left = 0, d.center = l.left, d.right = l.left + l.center + } + _refreshDrawHeightConstants() { + c.full = Math.round(2 * this._coreBrowserService.dpr); + const e = this._canvas.height / this._bufferService.buffer.lines.length, + t = Math.round(Math.max(Math.min(e, 12), 6) * this._coreBrowserService.dpr); + c.left = t, c.center = t, c.right = t + } + _refreshColorZonePadding() { + this._colorZoneStore.setPadding({ + full: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.full), + left: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.left), + center: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.center), + right: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.right) + }), this._lastKnownBufferLength = this._bufferService.buffers.normal.lines.length + } + _refreshCanvasDimensions() { + this._canvas.style.width = `${this._width}px`, this._canvas.width = Math.round(this._width * this._coreBrowserService.dpr), this._canvas.style.height = `${this._screenElement.clientHeight}px`, this._canvas.height = Math.round(this._screenElement.clientHeight * this._coreBrowserService.dpr), this._refreshDrawConstants(), this._refreshColorZonePadding() + } + _refreshDecorations() { + this._shouldUpdateDimensions && this._refreshCanvasDimensions(), this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height), this._colorZoneStore.clear(); + for (const e of this._decorationService.decorations) this._colorZoneStore.addDecoration(e); + this._ctx.lineWidth = 1; + const e = this._colorZoneStore.zones; + for (const t of e) "full" !== t.position && this._renderColorZone(t); + for (const t of e) "full" === t.position && this._renderColorZone(t); + this._shouldUpdateDimensions = !1, this._shouldUpdateAnchor = !1 + } + _renderColorZone(e) { + this._ctx.fillStyle = e.color, this._ctx.fillRect(d[e.position || "full"], Math.round((this._canvas.height - 1) * (e.startBufferLine / this._bufferService.buffers.active.lines.length) - c[e.position || "full"] / 2), l[e.position || "full"], Math.round((this._canvas.height - 1) * ((e.endBufferLine - e.startBufferLine) / this._bufferService.buffers.active.lines.length) + c[e.position || "full"])) + } + _queueRefresh(e, t) { + this._shouldUpdateDimensions = e || this._shouldUpdateDimensions, this._shouldUpdateAnchor = t || this._shouldUpdateAnchor, void 0 === this._animationFrame && (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { + this._refreshDecorations(), this._animationFrame = void 0 + }))) + } + }; + t.OverviewRulerRenderer = _ = s([r(2, h.IBufferService), r(3, h.IDecorationService), r(4, o.IRenderService), r(5, h.IOptionsService), r(6, o.ICoreBrowserService)], _) + }, + 2950: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CompositionHelper = void 0; + const n = i(4725), + o = i(2585), + a = i(2584); + let h = t.CompositionHelper = class { + get isComposing() { + return this._isComposing + } + constructor(e, t, i, s, r, n) { + this._textarea = e, this._compositionView = t, this._bufferService = i, this._optionsService = s, this._coreService = r, this._renderService = n, this._isComposing = !1, this._isSendingComposition = !1, this._compositionPosition = { + start: 0, + end: 0 + }, this._dataAlreadySent = "" + } + compositionstart() { + this._isComposing = !0, this._compositionPosition.start = this._textarea.value.length, this._compositionView.textContent = "", this._dataAlreadySent = "", this._compositionView.classList.add("active") + } + compositionupdate(e) { + this._compositionView.textContent = e.data, this.updateCompositionElements(), setTimeout((() => { + this._compositionPosition.end = this._textarea.value.length + }), 0) + } + compositionend() { + this._finalizeComposition(!0) + } + keydown(e) { + if (this._isComposing || this._isSendingComposition) { + if (229 === e.keyCode) return !1; + if (16 === e.keyCode || 17 === e.keyCode || 18 === e.keyCode) return !1; + this._finalizeComposition(!1) + } + return 229 !== e.keyCode || (this._handleAnyTextareaChanges(), !1) + } + _finalizeComposition(e) { + if (this._compositionView.classList.remove("active"), this._isComposing = !1, e) { + const e = { + start: this._compositionPosition.start, + end: this._compositionPosition.end + }; + this._isSendingComposition = !0, setTimeout((() => { + if (this._isSendingComposition) { + let t; + this._isSendingComposition = !1, e.start += this._dataAlreadySent.length, t = this._isComposing ? this._textarea.value.substring(e.start, e.end) : this._textarea.value.substring(e.start), t.length > 0 && this._coreService.triggerDataEvent(t, !0) + } + }), 0) + } else { + this._isSendingComposition = !1; + const e = this._textarea.value.substring(this._compositionPosition.start, this._compositionPosition.end); + this._coreService.triggerDataEvent(e, !0) + } + } + _handleAnyTextareaChanges() { + const e = this._textarea.value; + setTimeout((() => { + if (!this._isComposing) { + const t = this._textarea.value, + i = t.replace(e, ""); + this._dataAlreadySent = i, t.length > e.length ? this._coreService.triggerDataEvent(i, !0) : t.length < e.length ? this._coreService.triggerDataEvent(`${a.C0.DEL}`, !0) : t.length === e.length && t !== e && this._coreService.triggerDataEvent(t, !0) + } + }), 0) + } + updateCompositionElements(e) { + if (this._isComposing) { + if (this._bufferService.buffer.isCursorInViewport) { + const e = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1), + t = this._renderService.dimensions.css.cell.height, + i = this._bufferService.buffer.y * this._renderService.dimensions.css.cell.height, + s = e * this._renderService.dimensions.css.cell.width; + this._compositionView.style.left = s + "px", this._compositionView.style.top = i + "px", this._compositionView.style.height = t + "px", this._compositionView.style.lineHeight = t + "px", this._compositionView.style.fontFamily = this._optionsService.rawOptions.fontFamily, this._compositionView.style.fontSize = this._optionsService.rawOptions.fontSize + "px"; + const r = this._compositionView.getBoundingClientRect(); + this._textarea.style.left = s + "px", this._textarea.style.top = i + "px", this._textarea.style.width = Math.max(r.width, 1) + "px", this._textarea.style.height = Math.max(r.height, 1) + "px", this._textarea.style.lineHeight = r.height + "px" + } + e || setTimeout((() => this.updateCompositionElements(!0)), 0) + } + } + }; + t.CompositionHelper = h = s([r(2, o.IBufferService), r(3, o.IOptionsService), r(4, o.ICoreService), r(5, n.IRenderService)], h) + }, + 9806: (e, t) => { + function i(e, t, i) { + const s = i.getBoundingClientRect(), + r = e.getComputedStyle(i), + n = parseInt(r.getPropertyValue("padding-left")), + o = parseInt(r.getPropertyValue("padding-top")); + return [t.clientX - s.left - n, t.clientY - s.top - o] + } + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.getCoords = t.getCoordsRelativeToElement = void 0, t.getCoordsRelativeToElement = i, t.getCoords = function(e, t, s, r, n, o, a, h, c) { + if (!o) return; + const l = i(e, t, s); + return l ? (l[0] = Math.ceil((l[0] + (c ? a / 2 : 0)) / a), l[1] = Math.ceil(l[1] / h), l[0] = Math.min(Math.max(l[0], 1), r + (c ? 1 : 0)), l[1] = Math.min(Math.max(l[1], 1), n), l) : void 0 + } + }, + 9504: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.moveToCellSequence = void 0; + const s = i(2584); + + function r(e, t, i, s) { + const r = e - n(e, i), + a = t - n(t, i), + l = Math.abs(r - a) - function(e, t, i) { + let s = 0; + const r = e - n(e, i), + a = t - n(t, i); + for (let n = 0; n < Math.abs(r - a); n++) { + const a = "A" === o(e, t) ? -1 : 1, + h = i.buffer.lines.get(r + a * n); + h?.isWrapped && s++ + } + return s + }(e, t, i); + return c(l, h(o(e, t), s)) + } + + function n(e, t) { + let i = 0, + s = t.buffer.lines.get(e), + r = s?.isWrapped; + for (; r && e >= 0 && e < t.rows;) i++, s = t.buffer.lines.get(--e), r = s?.isWrapped; + return i + } + + function o(e, t) { + return e > t ? "A" : "B" + } + + function a(e, t, i, s, r, n) { + let o = e, + a = t, + h = ""; + for (; o !== i || a !== s;) o += r ? 1 : -1, r && o > n.cols - 1 ? (h += n.buffer.translateBufferLineToString(a, !1, e, o), o = 0, e = 0, a++) : !r && o < 0 && (h += n.buffer.translateBufferLineToString(a, !1, 0, e + 1), o = n.cols - 1, e = o, a--); + return h + n.buffer.translateBufferLineToString(a, !1, e, o) + } + + function h(e, t) { + const i = t ? "O" : "["; + return s.C0.ESC + i + e + } + + function c(e, t) { + e = Math.floor(e); + let i = ""; + for (let s = 0; s < e; s++) i += t; + return i + } + t.moveToCellSequence = function(e, t, i, s) { + const o = i.buffer.x, + l = i.buffer.y; + if (!i.buffer.hasScrollback) return function(e, t, i, s, o, l) { + return 0 === r(t, s, o, l).length ? "" : c(a(e, t, e, t - n(t, o), !1, o).length, h("D", l)) + }(o, l, 0, t, i, s) + r(l, t, i, s) + function(e, t, i, s, o, l) { + let d; + d = r(t, s, o, l).length > 0 ? s - n(s, o) : t; + const _ = s, + u = function(e, t, i, s, o, a) { + let h; + return h = r(i, s, o, a).length > 0 ? s - n(s, o) : t, e < i && h <= s || e >= i && h < s ? "C" : "D" + }(e, t, i, s, o, l); + return c(a(e, d, i, _, "C" === u, o).length, h(u, l)) + }(o, l, e, t, i, s); + let d; + if (l === t) return d = o > e ? "D" : "C", c(Math.abs(o - e), h(d, s)); + d = l > t ? "D" : "C"; + const _ = Math.abs(l - t); + return c(function(e, t) { + return t.cols - e + }(l > t ? e : o, i) + (_ - 1) * i.cols + 1 + ((l > t ? o : e) - 1), h(d, s)) + } + }, + 1296: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.DomRenderer = void 0; + const n = i(3787), + o = i(2550), + a = i(2223), + h = i(6171), + c = i(6052), + l = i(4725), + d = i(8055), + _ = i(8460), + u = i(844), + f = i(2585), + v = "xterm-dom-renderer-owner-", + g = "xterm-rows", + p = "xterm-fg-", + m = "xterm-bg-", + C = "xterm-focus", + S = "xterm-selection"; + let b = 1, + w = t.DomRenderer = class extends u.Disposable { + constructor(e, t, i, s, r, a, l, d, f, p, m, C, w) { + super(), this._terminal = e, this._document = t, this._element = i, this._screenElement = s, this._viewportElement = r, this._helperContainer = a, this._linkifier2 = l, this._charSizeService = f, this._optionsService = p, this._bufferService = m, this._coreBrowserService = C, this._themeService = w, this._terminalClass = b++, this._rowElements = [], this._selectionRenderModel = (0, c.createSelectionRenderModel)(), this.onRequestRedraw = this.register(new _.EventEmitter).event, this._rowContainer = this._document.createElement("div"), this._rowContainer.classList.add(g), this._rowContainer.style.lineHeight = "normal", this._rowContainer.setAttribute("aria-hidden", "true"), this._refreshRowElements(this._bufferService.cols, this._bufferService.rows), this._selectionContainer = this._document.createElement("div"), this._selectionContainer.classList.add(S), this._selectionContainer.setAttribute("aria-hidden", "true"), this.dimensions = (0, h.createRenderDimensions)(), this._updateDimensions(), this.register(this._optionsService.onOptionChange((() => this._handleOptionsChanged()))), this.register(this._themeService.onChangeColors((e => this._injectCss(e)))), this._injectCss(this._themeService.colors), this._rowFactory = d.createInstance(n.DomRendererRowFactory, document), this._element.classList.add(v + this._terminalClass), this._screenElement.appendChild(this._rowContainer), this._screenElement.appendChild(this._selectionContainer), this.register(this._linkifier2.onShowLinkUnderline((e => this._handleLinkHover(e)))), this.register(this._linkifier2.onHideLinkUnderline((e => this._handleLinkLeave(e)))), this.register((0, u.toDisposable)((() => { + this._element.classList.remove(v + this._terminalClass), this._rowContainer.remove(), this._selectionContainer.remove(), this._widthCache.dispose(), this._themeStyleElement.remove(), this._dimensionsStyleElement.remove() + }))), this._widthCache = new o.WidthCache(this._document, this._helperContainer), this._widthCache.setFont(this._optionsService.rawOptions.fontFamily, this._optionsService.rawOptions.fontSize, this._optionsService.rawOptions.fontWeight, this._optionsService.rawOptions.fontWeightBold), this._setDefaultSpacing() + } + _updateDimensions() { + const e = this._coreBrowserService.dpr; + this.dimensions.device.char.width = this._charSizeService.width * e, this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * e), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.left = 0, this.dimensions.device.char.top = 0, this.dimensions.device.canvas.width = this.dimensions.device.cell.width * this._bufferService.cols, this.dimensions.device.canvas.height = this.dimensions.device.cell.height * this._bufferService.rows, this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / e), this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / e), this.dimensions.css.cell.width = this.dimensions.css.canvas.width / this._bufferService.cols, this.dimensions.css.cell.height = this.dimensions.css.canvas.height / this._bufferService.rows; + for (const e of this._rowElements) e.style.width = `${this.dimensions.css.canvas.width}px`, e.style.height = `${this.dimensions.css.cell.height}px`, e.style.lineHeight = `${this.dimensions.css.cell.height}px`, e.style.overflow = "hidden"; + this._dimensionsStyleElement || (this._dimensionsStyleElement = this._document.createElement("style"), this._screenElement.appendChild(this._dimensionsStyleElement)); + const t = `${this._terminalSelector} .${g} span { display: inline-block; height: 100%; vertical-align: top;}`; + this._dimensionsStyleElement.textContent = t, this._selectionContainer.style.height = this._viewportElement.style.height, this._screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._screenElement.style.height = `${this.dimensions.css.canvas.height}px` + } + _injectCss(e) { + this._themeStyleElement || (this._themeStyleElement = this._document.createElement("style"), this._screenElement.appendChild(this._themeStyleElement)); + let t = `${this._terminalSelector} .${g} { color: ${e.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px; font-kerning: none; white-space: pre}`; + t += `${this._terminalSelector} .${g} .xterm-dim { color: ${d.color.multiplyOpacity(e.foreground, .5).css};}`, t += `${this._terminalSelector} span:not(.xterm-bold) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.xterm-bold { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.xterm-italic { font-style: italic;}`; + const i = `blink_underline_${this._terminalClass}`, + s = `blink_bar_${this._terminalClass}`, + r = `blink_block_${this._terminalClass}`; + t += `@keyframes ${i} { 50% { border-bottom-style: hidden; }}`, t += `@keyframes ${s} { 50% { box-shadow: none; }}`, t += `@keyframes ${r} { 0% { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css}; } 50% { background-color: inherit; color: ${e.cursor.css}; }}`, t += `${this._terminalSelector} .${g}.${C} .xterm-cursor.xterm-cursor-blink.xterm-cursor-underline { animation: ${i} 1s step-end infinite;}${this._terminalSelector} .${g}.${C} .xterm-cursor.xterm-cursor-blink.xterm-cursor-bar { animation: ${s} 1s step-end infinite;}${this._terminalSelector} .${g}.${C} .xterm-cursor.xterm-cursor-blink.xterm-cursor-block { animation: ${r} 1s step-end infinite;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-block { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css};}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-block:not(.xterm-cursor-blink) { background-color: ${e.cursor.css} !important; color: ${e.cursorAccent.css} !important;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-outline { outline: 1px solid ${e.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-bar { box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${e.cursor.css} inset;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-underline { border-bottom: 1px ${e.cursor.css}; border-bottom-style: solid; height: calc(100% - 1px);}`, t += `${this._terminalSelector} .${S} { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .${S} div { position: absolute; background-color: ${e.selectionBackgroundOpaque.css};}${this._terminalSelector} .${S} div { position: absolute; background-color: ${e.selectionInactiveBackgroundOpaque.css};}`; + for (const [i, s] of e.ansi.entries()) t += `${this._terminalSelector} .${p}${i} { color: ${s.css}; }${this._terminalSelector} .${p}${i}.xterm-dim { color: ${d.color.multiplyOpacity(s, .5).css}; }${this._terminalSelector} .${m}${i} { background-color: ${s.css}; }`; + t += `${this._terminalSelector} .${p}${a.INVERTED_DEFAULT_COLOR} { color: ${d.color.opaque(e.background).css}; }${this._terminalSelector} .${p}${a.INVERTED_DEFAULT_COLOR}.xterm-dim { color: ${d.color.multiplyOpacity(d.color.opaque(e.background), .5).css}; }${this._terminalSelector} .${m}${a.INVERTED_DEFAULT_COLOR} { background-color: ${e.foreground.css}; }`, this._themeStyleElement.textContent = t + } + _setDefaultSpacing() { + const e = this.dimensions.css.cell.width - this._widthCache.get("W", !1, !1); + this._rowContainer.style.letterSpacing = `${e}px`, this._rowFactory.defaultSpacing = e + } + handleDevicePixelRatioChange() { + this._updateDimensions(), this._widthCache.clear(), this._setDefaultSpacing() + } + _refreshRowElements(e, t) { + for (let e = this._rowElements.length; e <= t; e++) { + const e = this._document.createElement("div"); + this._rowContainer.appendChild(e), this._rowElements.push(e) + } + for (; this._rowElements.length > t;) this._rowContainer.removeChild(this._rowElements.pop()) + } + handleResize(e, t) { + this._refreshRowElements(e, t), this._updateDimensions(), this.handleSelectionChanged(this._selectionRenderModel.selectionStart, this._selectionRenderModel.selectionEnd, this._selectionRenderModel.columnSelectMode) + } + handleCharSizeChanged() { + this._updateDimensions(), this._widthCache.clear(), this._setDefaultSpacing() + } + handleBlur() { + this._rowContainer.classList.remove(C), this.renderRows(0, this._bufferService.rows - 1) + } + handleFocus() { + this._rowContainer.classList.add(C), this.renderRows(this._bufferService.buffer.y, this._bufferService.buffer.y) + } + handleSelectionChanged(e, t, i) { + if (this._selectionContainer.replaceChildren(), this._rowFactory.handleSelectionChanged(e, t, i), this.renderRows(0, this._bufferService.rows - 1), !e || !t) return; + this._selectionRenderModel.update(this._terminal, e, t, i); + const s = this._selectionRenderModel.viewportStartRow, + r = this._selectionRenderModel.viewportEndRow, + n = this._selectionRenderModel.viewportCappedStartRow, + o = this._selectionRenderModel.viewportCappedEndRow; + if (n >= this._bufferService.rows || o < 0) return; + const a = this._document.createDocumentFragment(); + if (i) { + const i = e[0] > t[0]; + a.appendChild(this._createSelectionElement(n, i ? t[0] : e[0], i ? e[0] : t[0], o - n + 1)) + } else { + const i = s === n ? e[0] : 0, + h = n === r ? t[0] : this._bufferService.cols; + a.appendChild(this._createSelectionElement(n, i, h)); + const c = o - n - 1; + if (a.appendChild(this._createSelectionElement(n + 1, 0, this._bufferService.cols, c)), n !== o) { + const e = r === o ? t[0] : this._bufferService.cols; + a.appendChild(this._createSelectionElement(o, 0, e)) + } + } + this._selectionContainer.appendChild(a) + } + _createSelectionElement(e, t, i, s = 1) { + const r = this._document.createElement("div"), + n = t * this.dimensions.css.cell.width; + let o = this.dimensions.css.cell.width * (i - t); + return n + o > this.dimensions.css.canvas.width && (o = this.dimensions.css.canvas.width - n), r.style.height = s * this.dimensions.css.cell.height + "px", r.style.top = e * this.dimensions.css.cell.height + "px", r.style.left = `${n}px`, r.style.width = `${o}px`, r + } + handleCursorMove() {} + _handleOptionsChanged() { + this._updateDimensions(), this._injectCss(this._themeService.colors), this._widthCache.setFont(this._optionsService.rawOptions.fontFamily, this._optionsService.rawOptions.fontSize, this._optionsService.rawOptions.fontWeight, this._optionsService.rawOptions.fontWeightBold), this._setDefaultSpacing() + } + clear() { + for (const e of this._rowElements) e.replaceChildren() + } + renderRows(e, t) { + const i = this._bufferService.buffer, + s = i.ybase + i.y, + r = Math.min(i.x, this._bufferService.cols - 1), + n = this._optionsService.rawOptions.cursorBlink, + o = this._optionsService.rawOptions.cursorStyle, + a = this._optionsService.rawOptions.cursorInactiveStyle; + for (let h = e; h <= t; h++) { + const e = h + i.ydisp, + t = this._rowElements[h], + c = i.lines.get(e); + if (!t || !c) break; + t.replaceChildren(...this._rowFactory.createRow(c, e, e === s, o, a, r, n, this.dimensions.css.cell.width, this._widthCache, -1, -1)) + } + } + get _terminalSelector() { + return `.${v}${this._terminalClass}` + } + _handleLinkHover(e) { + this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, !0) + } + _handleLinkLeave(e) { + this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, !1) + } + _setCellUnderline(e, t, i, s, r, n) { + i < 0 && (e = 0), s < 0 && (t = 0); + const o = this._bufferService.rows - 1; + i = Math.max(Math.min(i, o), 0), s = Math.max(Math.min(s, o), 0), r = Math.min(r, this._bufferService.cols); + const a = this._bufferService.buffer, + h = a.ybase + a.y, + c = Math.min(a.x, r - 1), + l = this._optionsService.rawOptions.cursorBlink, + d = this._optionsService.rawOptions.cursorStyle, + _ = this._optionsService.rawOptions.cursorInactiveStyle; + for (let o = i; o <= s; ++o) { + const u = o + a.ydisp, + f = this._rowElements[o], + v = a.lines.get(u); + if (!f || !v) break; + f.replaceChildren(...this._rowFactory.createRow(v, u, u === h, d, _, c, l, this.dimensions.css.cell.width, this._widthCache, n ? o === i ? e : 0 : -1, n ? (o === s ? t : r) - 1 : -1)) + } + } + }; + t.DomRenderer = w = s([r(7, f.IInstantiationService), r(8, l.ICharSizeService), r(9, f.IOptionsService), r(10, f.IBufferService), r(11, l.ICoreBrowserService), r(12, l.IThemeService)], w) + }, + 3787: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.DomRendererRowFactory = void 0; + const n = i(2223), + o = i(643), + a = i(511), + h = i(2585), + c = i(8055), + l = i(4725), + d = i(4269), + _ = i(6171), + u = i(3734); + let f = t.DomRendererRowFactory = class { + constructor(e, t, i, s, r, n, o) { + this._document = e, this._characterJoinerService = t, this._optionsService = i, this._coreBrowserService = s, this._coreService = r, this._decorationService = n, this._themeService = o, this._workCell = new a.CellData, this._columnSelectMode = !1, this.defaultSpacing = 0 + } + handleSelectionChanged(e, t, i) { + this._selectionStart = e, this._selectionEnd = t, this._columnSelectMode = i + } + createRow(e, t, i, s, r, a, h, l, _, f, g) { + const p = [], + m = this._characterJoinerService.getJoinedCharacters(t), + C = this._themeService.colors; + let S, b = e.getNoBgTrimmedLength(); + i && b < a + 1 && (b = a + 1); + let w = 0, + y = "", + L = 0, + x = 0, + E = 0, + R = !1, + M = 0, + A = !1, + D = 0; + const k = [], + T = -1 !== f && -1 !== g; + for (let B = 0; B < b; B++) { + e.loadCell(B, this._workCell); + let b = this._workCell.getWidth(); + if (0 === b) continue; + let O = !1, + P = B, + I = this._workCell; + if (m.length > 0 && B === m[0][0]) { + O = !0; + const t = m.shift(); + I = new d.JoinedCellData(this._workCell, e.translateToString(!0, t[0], t[1]), t[1] - t[0]), P = t[1] - 1, b = I.getWidth() + } + const F = this._isCellInSelection(B, t), + H = i && B === a, + $ = T && B >= f && B <= g; + let W = !1; + this._decorationService.forEachDecorationAtCell(B, t, void 0, (e => { + W = !0 + })); + let U = I.getChars() || o.WHITESPACE_CELL_CHAR; + if (" " === U && (I.isUnderline() || I.isOverline()) && (U = " "), D = b * l - _.get(U, I.isBold(), I.isItalic()), S) { + if (w && (F && A || !F && !A && I.bg === L) && (F && A && C.selectionForeground || I.fg === x) && I.extended.ext === E && $ === R && D === M && !H && !O && !W) { + I.isInvisible() ? y += o.WHITESPACE_CELL_CHAR : y += U, w++; + continue + } + w && (S.textContent = y), S = this._document.createElement("span"), w = 0, y = "" + } else S = this._document.createElement("span"); + if (L = I.bg, x = I.fg, E = I.extended.ext, R = $, M = D, A = F, O && a >= B && a <= P && (a = B), !this._coreService.isCursorHidden && H && this._coreService.isCursorInitialized) + if (k.push("xterm-cursor"), this._coreBrowserService.isFocused) h && k.push("xterm-cursor-blink"), k.push("bar" === s ? "xterm-cursor-bar" : "underline" === s ? "xterm-cursor-underline" : "xterm-cursor-block"); + else if (r) switch (r) { + case "outline": + k.push("xterm-cursor-outline"); + break; + case "block": + k.push("xterm-cursor-block"); + break; + case "bar": + k.push("xterm-cursor-bar"); + break; + case "underline": + k.push("xterm-cursor-underline") + } + if (I.isBold() && k.push("xterm-bold"), I.isItalic() && k.push("xterm-italic"), I.isDim() && k.push("xterm-dim"), y = I.isInvisible() ? o.WHITESPACE_CELL_CHAR : I.getChars() || o.WHITESPACE_CELL_CHAR, I.isUnderline() && (k.push(`xterm-underline-${I.extended.underlineStyle}`), " " === y && (y = " "), !I.isUnderlineColorDefault())) + if (I.isUnderlineColorRGB()) S.style.textDecorationColor = `rgb(${u.AttributeData.toColorRGB(I.getUnderlineColor()).join(",")})`; + else { + let e = I.getUnderlineColor(); + this._optionsService.rawOptions.drawBoldTextInBrightColors && I.isBold() && e < 8 && (e += 8), S.style.textDecorationColor = C.ansi[e].css + } I.isOverline() && (k.push("xterm-overline"), " " === y && (y = " ")), I.isStrikethrough() && k.push("xterm-strikethrough"), $ && (S.style.textDecoration = "underline"); + let N = I.getFgColor(), + z = I.getFgColorMode(), + j = I.getBgColor(), + q = I.getBgColorMode(); + const G = !!I.isInverse(); + if (G) { + const e = N; + N = j, j = e; + const t = z; + z = q, q = t + } + let V, K, X, J = !1; + switch (this._decorationService.forEachDecorationAtCell(B, t, void 0, (e => { + "top" !== e.options.layer && J || (e.backgroundColorRGB && (q = 50331648, j = e.backgroundColorRGB.rgba >> 8 & 16777215, V = e.backgroundColorRGB), e.foregroundColorRGB && (z = 50331648, N = e.foregroundColorRGB.rgba >> 8 & 16777215, K = e.foregroundColorRGB), J = "top" === e.options.layer) + })), !J && F && (V = this._coreBrowserService.isFocused ? C.selectionBackgroundOpaque : C.selectionInactiveBackgroundOpaque, j = V.rgba >> 8 & 16777215, q = 50331648, J = !0, C.selectionForeground && (z = 50331648, N = C.selectionForeground.rgba >> 8 & 16777215, K = C.selectionForeground)), J && k.push("xterm-decoration-top"), q) { + case 16777216: + case 33554432: + X = C.ansi[j], k.push(`xterm-bg-${j}`); + break; + case 50331648: + X = c.channels.toColor(j >> 16, j >> 8 & 255, 255 & j), this._addStyle(S, `background-color:#${v((j >>> 0).toString(16), "0", 6)}`); + break; + default: + G ? (X = C.foreground, k.push(`xterm-bg-${n.INVERTED_DEFAULT_COLOR}`)) : X = C.background + } + switch (V || I.isDim() && (V = c.color.multiplyOpacity(X, .5)), z) { + case 16777216: + case 33554432: + I.isBold() && N < 8 && this._optionsService.rawOptions.drawBoldTextInBrightColors && (N += 8), this._applyMinimumContrast(S, X, C.ansi[N], I, V, void 0) || k.push(`xterm-fg-${N}`); + break; + case 50331648: + const e = c.channels.toColor(N >> 16 & 255, N >> 8 & 255, 255 & N); + this._applyMinimumContrast(S, X, e, I, V, K) || this._addStyle(S, `color:#${v(N.toString(16), "0", 6)}`); + break; + default: + this._applyMinimumContrast(S, X, C.foreground, I, V, K) || G && k.push(`xterm-fg-${n.INVERTED_DEFAULT_COLOR}`) + } + k.length && (S.className = k.join(" "), k.length = 0), H || O || W ? S.textContent = y : w++, D !== this.defaultSpacing && (S.style.letterSpacing = `${D}px`), p.push(S), B = P + } + return S && w && (S.textContent = y), p + } + _applyMinimumContrast(e, t, i, s, r, n) { + if (1 === this._optionsService.rawOptions.minimumContrastRatio || (0, _.treatGlyphAsBackgroundColor)(s.getCode())) return !1; + const o = this._getContrastCache(s); + let a; + if (r || n || (a = o.getColor(t.rgba, i.rgba)), void 0 === a) { + const e = this._optionsService.rawOptions.minimumContrastRatio / (s.isDim() ? 2 : 1); + a = c.color.ensureContrastRatio(r || t, n || i, e), o.setColor((r || t).rgba, (n || i).rgba, a ?? null) + } + return !!a && (this._addStyle(e, `color:${a.css}`), !0) + } + _getContrastCache(e) { + return e.isDim() ? this._themeService.colors.halfContrastCache : this._themeService.colors.contrastCache + } + _addStyle(e, t) { + e.setAttribute("style", `${e.getAttribute("style") || ""}${t};`) + } + _isCellInSelection(e, t) { + const i = this._selectionStart, + s = this._selectionEnd; + return !(!i || !s) && (this._columnSelectMode ? i[0] <= s[0] ? e >= i[0] && t >= i[1] && e < s[0] && t <= s[1] : e < i[0] && t >= i[1] && e >= s[0] && t <= s[1] : t > i[1] && t < s[1] || i[1] === s[1] && t === i[1] && e >= i[0] && e < s[0] || i[1] < s[1] && t === s[1] && e < s[0] || i[1] < s[1] && t === i[1] && e >= i[0]) + } + }; + + function v(e, t, i) { + for (; e.length < i;) e = t + e; + return e + } + t.DomRendererRowFactory = f = s([r(1, l.ICharacterJoinerService), r(2, h.IOptionsService), r(3, l.ICoreBrowserService), r(4, h.ICoreService), r(5, h.IDecorationService), r(6, l.IThemeService)], f) + }, + 2550: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.WidthCache = void 0, t.WidthCache = class { + constructor(e, t) { + this._flat = new Float32Array(256), this._font = "", this._fontSize = 0, this._weight = "normal", this._weightBold = "bold", this._measureElements = [], this._container = e.createElement("div"), this._container.classList.add("xterm-width-cache-measure-container"), this._container.setAttribute("aria-hidden", "true"), this._container.style.whiteSpace = "pre", this._container.style.fontKerning = "none"; + const i = e.createElement("span"); + i.classList.add("xterm-char-measure-element"); + const s = e.createElement("span"); + s.classList.add("xterm-char-measure-element"), s.style.fontWeight = "bold"; + const r = e.createElement("span"); + r.classList.add("xterm-char-measure-element"), r.style.fontStyle = "italic"; + const n = e.createElement("span"); + n.classList.add("xterm-char-measure-element"), n.style.fontWeight = "bold", n.style.fontStyle = "italic", this._measureElements = [i, s, r, n], this._container.appendChild(i), this._container.appendChild(s), this._container.appendChild(r), this._container.appendChild(n), t.appendChild(this._container), this.clear() + } + dispose() { + this._container.remove(), this._measureElements.length = 0, this._holey = void 0 + } + clear() { + this._flat.fill(-9999), this._holey = new Map + } + setFont(e, t, i, s) { + e === this._font && t === this._fontSize && i === this._weight && s === this._weightBold || (this._font = e, this._fontSize = t, this._weight = i, this._weightBold = s, this._container.style.fontFamily = this._font, this._container.style.fontSize = `${this._fontSize}px`, this._measureElements[0].style.fontWeight = `${i}`, this._measureElements[1].style.fontWeight = `${s}`, this._measureElements[2].style.fontWeight = `${i}`, this._measureElements[3].style.fontWeight = `${s}`, this.clear()) + } + get(e, t, i) { + let s = 0; + if (!t && !i && 1 === e.length && (s = e.charCodeAt(0)) < 256) { + if (-9999 !== this._flat[s]) return this._flat[s]; + const t = this._measure(e, 0); + return t > 0 && (this._flat[s] = t), t + } + let r = e; + t && (r += "B"), i && (r += "I"); + let n = this._holey.get(r); + if (void 0 === n) { + let s = 0; + t && (s |= 1), i && (s |= 2), n = this._measure(e, s), n > 0 && this._holey.set(r, n) + } + return n + } + _measure(e, t) { + const i = this._measureElements[t]; + return i.textContent = e.repeat(32), i.offsetWidth / 32 + } + } + }, + 2223: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.TEXT_BASELINE = t.DIM_OPACITY = t.INVERTED_DEFAULT_COLOR = void 0; + const s = i(6114); + t.INVERTED_DEFAULT_COLOR = 257, t.DIM_OPACITY = .5, t.TEXT_BASELINE = s.isFirefox || s.isLegacyEdge ? "bottom" : "ideographic" + }, + 6171: (e, t) => { + function i(e) { + return 57508 <= e && e <= 57558 + } + + function s(e) { + return e >= 128512 && e <= 128591 || e >= 127744 && e <= 128511 || e >= 128640 && e <= 128767 || e >= 9728 && e <= 9983 || e >= 9984 && e <= 10175 || e >= 65024 && e <= 65039 || e >= 129280 && e <= 129535 || e >= 127462 && e <= 127487 + } + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.computeNextVariantOffset = t.createRenderDimensions = t.treatGlyphAsBackgroundColor = t.allowRescaling = t.isEmoji = t.isRestrictedPowerlineGlyph = t.isPowerlineGlyph = t.throwIfFalsy = void 0, t.throwIfFalsy = function(e) { + if (!e) throw new Error("value must not be falsy"); + return e + }, t.isPowerlineGlyph = i, t.isRestrictedPowerlineGlyph = function(e) { + return 57520 <= e && e <= 57527 + }, t.isEmoji = s, t.allowRescaling = function(e, t, r, n) { + return 1 === t && r > Math.ceil(1.5 * n) && void 0 !== e && e > 255 && !s(e) && !i(e) && ! function(e) { + return 57344 <= e && e <= 63743 + }(e) + }, t.treatGlyphAsBackgroundColor = function(e) { + return i(e) || function(e) { + return 9472 <= e && e <= 9631 + }(e) + }, t.createRenderDimensions = function() { + return { + css: { + canvas: { + width: 0, + height: 0 + }, + cell: { + width: 0, + height: 0 + } + }, + device: { + canvas: { + width: 0, + height: 0 + }, + cell: { + width: 0, + height: 0 + }, + char: { + width: 0, + height: 0, + left: 0, + top: 0 + } + } + } + }, t.computeNextVariantOffset = function(e, t, i = 0) { + return (e - (2 * Math.round(t) - i)) % (2 * Math.round(t)) + } + }, + 6052: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.createSelectionRenderModel = void 0; + class i { + constructor() { + this.clear() + } + clear() { + this.hasSelection = !1, this.columnSelectMode = !1, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0 + } + update(e, t, i, s = !1) { + if (this.selectionStart = t, this.selectionEnd = i, !t || !i || t[0] === i[0] && t[1] === i[1]) return void this.clear(); + const r = e.buffers.active.ydisp, + n = t[1] - r, + o = i[1] - r, + a = Math.max(n, 0), + h = Math.min(o, e.rows - 1); + a >= e.rows || h < 0 ? this.clear() : (this.hasSelection = !0, this.columnSelectMode = s, this.viewportStartRow = n, this.viewportEndRow = o, this.viewportCappedStartRow = a, this.viewportCappedEndRow = h, this.startCol = t[0], this.endCol = i[0]) + } + isCellSelected(e, t, i) { + return !!this.hasSelection && (i -= e.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? t >= this.startCol && i >= this.viewportCappedStartRow && t < this.endCol && i <= this.viewportCappedEndRow : t < this.startCol && i >= this.viewportCappedStartRow && t >= this.endCol && i <= this.viewportCappedEndRow : i > this.viewportStartRow && i < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportEndRow && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol) + } + } + t.createSelectionRenderModel = function() { + return new i + } + }, + 456: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.SelectionModel = void 0, t.SelectionModel = class { + constructor(e) { + this._bufferService = e, this.isSelectAllActive = !1, this.selectionStartLength = 0 + } + clearSelection() { + this.selectionStart = void 0, this.selectionEnd = void 0, this.isSelectAllActive = !1, this.selectionStartLength = 0 + } + get finalSelectionStart() { + return this.isSelectAllActive ? [0, 0] : this.selectionEnd && this.selectionStart && this.areSelectionValuesReversed() ? this.selectionEnd : this.selectionStart + } + get finalSelectionEnd() { + if (this.isSelectAllActive) return [this._bufferService.cols, this._bufferService.buffer.ybase + this._bufferService.rows - 1]; + if (this.selectionStart) { + if (!this.selectionEnd || this.areSelectionValuesReversed()) { + const e = this.selectionStart[0] + this.selectionStartLength; + return e > this._bufferService.cols ? e % this._bufferService.cols == 0 ? [this._bufferService.cols, this.selectionStart[1] + Math.floor(e / this._bufferService.cols) - 1] : [e % this._bufferService.cols, this.selectionStart[1] + Math.floor(e / this._bufferService.cols)] : [e, this.selectionStart[1]] + } + if (this.selectionStartLength && this.selectionEnd[1] === this.selectionStart[1]) { + const e = this.selectionStart[0] + this.selectionStartLength; + return e > this._bufferService.cols ? [e % this._bufferService.cols, this.selectionStart[1] + Math.floor(e / this._bufferService.cols)] : [Math.max(e, this.selectionEnd[0]), this.selectionEnd[1]] + } + return this.selectionEnd + } + } + areSelectionValuesReversed() { + const e = this.selectionStart, + t = this.selectionEnd; + return !(!e || !t) && (e[1] > t[1] || e[1] === t[1] && e[0] > t[0]) + } + handleTrim(e) { + return this.selectionStart && (this.selectionStart[1] -= e), this.selectionEnd && (this.selectionEnd[1] -= e), this.selectionEnd && this.selectionEnd[1] < 0 ? (this.clearSelection(), !0) : (this.selectionStart && this.selectionStart[1] < 0 && (this.selectionStart[1] = 0), !1) + } + } + }, + 428: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CharSizeService = void 0; + const n = i(2585), + o = i(8460), + a = i(844); + let h = t.CharSizeService = class extends a.Disposable { + get hasValidSize() { + return this.width > 0 && this.height > 0 + } + constructor(e, t, i) { + super(), this._optionsService = i, this.width = 0, this.height = 0, this._onCharSizeChange = this.register(new o.EventEmitter), this.onCharSizeChange = this._onCharSizeChange.event; + try { + this._measureStrategy = this.register(new d(this._optionsService)) + } catch { + this._measureStrategy = this.register(new l(e, t, this._optionsService)) + } + this.register(this._optionsService.onMultipleOptionChange(["fontFamily", "fontSize"], (() => this.measure()))) + } + measure() { + const e = this._measureStrategy.measure(); + e.width === this.width && e.height === this.height || (this.width = e.width, this.height = e.height, this._onCharSizeChange.fire()) + } + }; + t.CharSizeService = h = s([r(2, n.IOptionsService)], h); + class c extends a.Disposable { + constructor() { + super(...arguments), this._result = { + width: 0, + height: 0 + } + } + _validateAndSet(e, t) { + void 0 !== e && e > 0 && void 0 !== t && t > 0 && (this._result.width = e, this._result.height = t) + } + } + class l extends c { + constructor(e, t, i) { + super(), this._document = e, this._parentElement = t, this._optionsService = i, this._measureElement = this._document.createElement("span"), this._measureElement.classList.add("xterm-char-measure-element"), this._measureElement.textContent = "W".repeat(32), this._measureElement.setAttribute("aria-hidden", "true"), this._measureElement.style.whiteSpace = "pre", this._measureElement.style.fontKerning = "none", this._parentElement.appendChild(this._measureElement) + } + measure() { + return this._measureElement.style.fontFamily = this._optionsService.rawOptions.fontFamily, this._measureElement.style.fontSize = `${this._optionsService.rawOptions.fontSize}px`, this._validateAndSet(Number(this._measureElement.offsetWidth) / 32, Number(this._measureElement.offsetHeight)), this._result + } + } + class d extends c { + constructor(e) { + super(), this._optionsService = e, this._canvas = new OffscreenCanvas(100, 100), this._ctx = this._canvas.getContext("2d"); + const t = this._ctx.measureText("W"); + if (!("width" in t && "fontBoundingBoxAscent" in t && "fontBoundingBoxDescent" in t)) throw new Error("Required font metrics not supported") + } + measure() { + this._ctx.font = `${this._optionsService.rawOptions.fontSize}px ${this._optionsService.rawOptions.fontFamily}`; + const e = this._ctx.measureText("W"); + return this._validateAndSet(e.width, e.fontBoundingBoxAscent + e.fontBoundingBoxDescent), this._result + } + } + }, + 4269: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CharacterJoinerService = t.JoinedCellData = void 0; + const n = i(3734), + o = i(643), + a = i(511), + h = i(2585); + class c extends n.AttributeData { + constructor(e, t, i) { + super(), this.content = 0, this.combinedData = "", this.fg = e.fg, this.bg = e.bg, this.combinedData = t, this._width = i + } + isCombined() { + return 2097152 + } + getWidth() { + return this._width + } + getChars() { + return this.combinedData + } + getCode() { + return 2097151 + } + setFromCharData(e) { + throw new Error("not implemented") + } + getAsCharData() { + return [this.fg, this.getChars(), this.getWidth(), this.getCode()] + } + } + t.JoinedCellData = c; + let l = t.CharacterJoinerService = class e { + constructor(e) { + this._bufferService = e, this._characterJoiners = [], this._nextCharacterJoinerId = 0, this._workCell = new a.CellData + } + register(e) { + const t = { + id: this._nextCharacterJoinerId++, + handler: e + }; + return this._characterJoiners.push(t), t.id + } + deregister(e) { + for (let t = 0; t < this._characterJoiners.length; t++) + if (this._characterJoiners[t].id === e) return this._characterJoiners.splice(t, 1), !0; + return !1 + } + getJoinedCharacters(e) { + if (0 === this._characterJoiners.length) return []; + const t = this._bufferService.buffer.lines.get(e); + if (!t || 0 === t.length) return []; + const i = [], + s = t.translateToString(!0); + let r = 0, + n = 0, + a = 0, + h = t.getFg(0), + c = t.getBg(0); + for (let e = 0; e < t.getTrimmedLength(); e++) + if (t.loadCell(e, this._workCell), 0 !== this._workCell.getWidth()) { + if (this._workCell.fg !== h || this._workCell.bg !== c) { + if (e - r > 1) { + const e = this._getJoinedRanges(s, a, n, t, r); + for (let t = 0; t < e.length; t++) i.push(e[t]) + } + r = e, a = n, h = this._workCell.fg, c = this._workCell.bg + } + n += this._workCell.getChars().length || o.WHITESPACE_CELL_CHAR.length + } if (this._bufferService.cols - r > 1) { + const e = this._getJoinedRanges(s, a, n, t, r); + for (let t = 0; t < e.length; t++) i.push(e[t]) + } + return i + } + _getJoinedRanges(t, i, s, r, n) { + const o = t.substring(i, s); + let a = []; + try { + a = this._characterJoiners[0].handler(o) + } catch (e) { + console.error(e) + } + for (let t = 1; t < this._characterJoiners.length; t++) try { + const i = this._characterJoiners[t].handler(o); + for (let t = 0; t < i.length; t++) e._mergeRanges(a, i[t]) + } catch (e) { + console.error(e) + } + return this._stringRangesToCellRanges(a, r, n), a + } + _stringRangesToCellRanges(e, t, i) { + let s = 0, + r = !1, + n = 0, + a = e[s]; + if (a) { + for (let h = i; h < this._bufferService.cols; h++) { + const i = t.getWidth(h), + c = t.getString(h).length || o.WHITESPACE_CELL_CHAR.length; + if (0 !== i) { + if (!r && a[0] <= n && (a[0] = h, r = !0), a[1] <= n) { + if (a[1] = h, a = e[++s], !a) break; + a[0] <= n ? (a[0] = h, r = !0) : r = !1 + } + n += c + } + } + a && (a[1] = this._bufferService.cols) + } + } + static _mergeRanges(e, t) { + let i = !1; + for (let s = 0; s < e.length; s++) { + const r = e[s]; + if (i) { + if (t[1] <= r[0]) return e[s - 1][1] = t[1], e; + if (t[1] <= r[1]) return e[s - 1][1] = Math.max(t[1], r[1]), e.splice(s, 1), e; + e.splice(s, 1), s-- + } else { + if (t[1] <= r[0]) return e.splice(s, 0, t), e; + if (t[1] <= r[1]) return r[0] = Math.min(t[0], r[0]), e; + t[0] < r[1] && (r[0] = Math.min(t[0], r[0]), i = !0) + } + } + return i ? e[e.length - 1][1] = t[1] : e.push(t), e + } + }; + t.CharacterJoinerService = l = s([r(0, h.IBufferService)], l) + }, + 5114: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CoreBrowserService = void 0; + const s = i(844), + r = i(8460), + n = i(3656); + class o extends s.Disposable { + constructor(e, t, i) { + super(), this._textarea = e, this._window = t, this.mainDocument = i, this._isFocused = !1, this._cachedIsFocused = void 0, this._screenDprMonitor = new a(this._window), this._onDprChange = this.register(new r.EventEmitter), this.onDprChange = this._onDprChange.event, this._onWindowChange = this.register(new r.EventEmitter), this.onWindowChange = this._onWindowChange.event, this.register(this.onWindowChange((e => this._screenDprMonitor.setWindow(e)))), this.register((0, r.forwardEvent)(this._screenDprMonitor.onDprChange, this._onDprChange)), this._textarea.addEventListener("focus", (() => this._isFocused = !0)), this._textarea.addEventListener("blur", (() => this._isFocused = !1)) + } + get window() { + return this._window + } + set window(e) { + this._window !== e && (this._window = e, this._onWindowChange.fire(this._window)) + } + get dpr() { + return this.window.devicePixelRatio + } + get isFocused() { + return void 0 === this._cachedIsFocused && (this._cachedIsFocused = this._isFocused && this._textarea.ownerDocument.hasFocus(), queueMicrotask((() => this._cachedIsFocused = void 0))), this._cachedIsFocused + } + } + t.CoreBrowserService = o; + class a extends s.Disposable { + constructor(e) { + super(), this._parentWindow = e, this._windowResizeListener = this.register(new s.MutableDisposable), this._onDprChange = this.register(new r.EventEmitter), this.onDprChange = this._onDprChange.event, this._outerListener = () => this._setDprAndFireIfDiffers(), this._currentDevicePixelRatio = this._parentWindow.devicePixelRatio, this._updateDpr(), this._setWindowResizeListener(), this.register((0, s.toDisposable)((() => this.clearListener()))) + } + setWindow(e) { + this._parentWindow = e, this._setWindowResizeListener(), this._setDprAndFireIfDiffers() + } + _setWindowResizeListener() { + this._windowResizeListener.value = (0, n.addDisposableDomListener)(this._parentWindow, "resize", (() => this._setDprAndFireIfDiffers())) + } + _setDprAndFireIfDiffers() { + this._parentWindow.devicePixelRatio !== this._currentDevicePixelRatio && this._onDprChange.fire(this._parentWindow.devicePixelRatio), this._updateDpr() + } + _updateDpr() { + this._outerListener && (this._resolutionMediaMatchList?.removeListener(this._outerListener), this._currentDevicePixelRatio = this._parentWindow.devicePixelRatio, this._resolutionMediaMatchList = this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`), this._resolutionMediaMatchList.addListener(this._outerListener)) + } + clearListener() { + this._resolutionMediaMatchList && this._outerListener && (this._resolutionMediaMatchList.removeListener(this._outerListener), this._resolutionMediaMatchList = void 0, this._outerListener = void 0) + } + } + }, + 779: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.LinkProviderService = void 0; + const s = i(844); + class r extends s.Disposable { + constructor() { + super(), this.linkProviders = [], this.register((0, s.toDisposable)((() => this.linkProviders.length = 0))) + } + registerLinkProvider(e) { + return this.linkProviders.push(e), { + dispose: () => { + const t = this.linkProviders.indexOf(e); - 1 !== t && this.linkProviders.splice(t, 1) + } + } + } + } + t.LinkProviderService = r + }, + 8934: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.MouseService = void 0; + const n = i(4725), + o = i(9806); + let a = t.MouseService = class { + constructor(e, t) { + this._renderService = e, this._charSizeService = t + } + getCoords(e, t, i, s, r) { + return (0, o.getCoords)(window, e, t, i, s, this._charSizeService.hasValidSize, this._renderService.dimensions.css.cell.width, this._renderService.dimensions.css.cell.height, r) + } + getMouseReportCoords(e, t) { + const i = (0, o.getCoordsRelativeToElement)(window, e, t); + if (this._charSizeService.hasValidSize) return i[0] = Math.min(Math.max(i[0], 0), this._renderService.dimensions.css.canvas.width - 1), i[1] = Math.min(Math.max(i[1], 0), this._renderService.dimensions.css.canvas.height - 1), { + col: Math.floor(i[0] / this._renderService.dimensions.css.cell.width), + row: Math.floor(i[1] / this._renderService.dimensions.css.cell.height), + x: Math.floor(i[0]), + y: Math.floor(i[1]) + } + } + }; + t.MouseService = a = s([r(0, n.IRenderService), r(1, n.ICharSizeService)], a) + }, + 3230: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.RenderService = void 0; + const n = i(6193), + o = i(4725), + a = i(8460), + h = i(844), + c = i(7226), + l = i(2585); + let d = t.RenderService = class extends h.Disposable { + get dimensions() { + return this._renderer.value.dimensions + } + constructor(e, t, i, s, r, o, l, d) { + super(), this._rowCount = e, this._charSizeService = s, this._renderer = this.register(new h.MutableDisposable), this._pausedResizeTask = new c.DebouncedIdleTask, this._observerDisposable = this.register(new h.MutableDisposable), this._isPaused = !1, this._needsFullRefresh = !1, this._isNextRenderRedrawOnly = !0, this._needsSelectionRefresh = !1, this._canvasWidth = 0, this._canvasHeight = 0, this._selectionState = { + start: void 0, + end: void 0, + columnSelectMode: !1 + }, this._onDimensionsChange = this.register(new a.EventEmitter), this.onDimensionsChange = this._onDimensionsChange.event, this._onRenderedViewportChange = this.register(new a.EventEmitter), this.onRenderedViewportChange = this._onRenderedViewportChange.event, this._onRender = this.register(new a.EventEmitter), this.onRender = this._onRender.event, this._onRefreshRequest = this.register(new a.EventEmitter), this.onRefreshRequest = this._onRefreshRequest.event, this._renderDebouncer = new n.RenderDebouncer(((e, t) => this._renderRows(e, t)), l), this.register(this._renderDebouncer), this.register(l.onDprChange((() => this.handleDevicePixelRatioChange()))), this.register(o.onResize((() => this._fullRefresh()))), this.register(o.buffers.onBufferActivate((() => this._renderer.value?.clear()))), this.register(i.onOptionChange((() => this._handleOptionsChanged()))), this.register(this._charSizeService.onCharSizeChange((() => this.handleCharSizeChanged()))), this.register(r.onDecorationRegistered((() => this._fullRefresh()))), this.register(r.onDecorationRemoved((() => this._fullRefresh()))), this.register(i.onMultipleOptionChange(["customGlyphs", "drawBoldTextInBrightColors", "letterSpacing", "lineHeight", "fontFamily", "fontSize", "fontWeight", "fontWeightBold", "minimumContrastRatio", "rescaleOverlappingGlyphs"], (() => { + this.clear(), this.handleResize(o.cols, o.rows), this._fullRefresh() + }))), this.register(i.onMultipleOptionChange(["cursorBlink", "cursorStyle"], (() => this.refreshRows(o.buffer.y, o.buffer.y, !0)))), this.register(d.onChangeColors((() => this._fullRefresh()))), this._registerIntersectionObserver(l.window, t), this.register(l.onWindowChange((e => this._registerIntersectionObserver(e, t)))) + } + _registerIntersectionObserver(e, t) { + if ("IntersectionObserver" in e) { + const i = new e.IntersectionObserver((e => this._handleIntersectionChange(e[e.length - 1])), { + threshold: 0 + }); + i.observe(t), this._observerDisposable.value = (0, h.toDisposable)((() => i.disconnect())) + } + } + _handleIntersectionChange(e) { + this._isPaused = void 0 === e.isIntersecting ? 0 === e.intersectionRatio : !e.isIntersecting, this._isPaused || this._charSizeService.hasValidSize || this._charSizeService.measure(), !this._isPaused && this._needsFullRefresh && (this._pausedResizeTask.flush(), this.refreshRows(0, this._rowCount - 1), this._needsFullRefresh = !1) + } + refreshRows(e, t, i = !1) { + this._isPaused ? this._needsFullRefresh = !0 : (i || (this._isNextRenderRedrawOnly = !1), this._renderDebouncer.refresh(e, t, this._rowCount)) + } + _renderRows(e, t) { + this._renderer.value && (e = Math.min(e, this._rowCount - 1), t = Math.min(t, this._rowCount - 1), this._renderer.value.renderRows(e, t), this._needsSelectionRefresh && (this._renderer.value.handleSelectionChanged(this._selectionState.start, this._selectionState.end, this._selectionState.columnSelectMode), this._needsSelectionRefresh = !1), this._isNextRenderRedrawOnly || this._onRenderedViewportChange.fire({ + start: e, + end: t + }), this._onRender.fire({ + start: e, + end: t + }), this._isNextRenderRedrawOnly = !0) + } + resize(e, t) { + this._rowCount = t, this._fireOnCanvasResize() + } + _handleOptionsChanged() { + this._renderer.value && (this.refreshRows(0, this._rowCount - 1), this._fireOnCanvasResize()) + } + _fireOnCanvasResize() { + this._renderer.value && (this._renderer.value.dimensions.css.canvas.width === this._canvasWidth && this._renderer.value.dimensions.css.canvas.height === this._canvasHeight || this._onDimensionsChange.fire(this._renderer.value.dimensions)) + } + hasRenderer() { + return !!this._renderer.value + } + setRenderer(e) { + this._renderer.value = e, this._renderer.value && (this._renderer.value.onRequestRedraw((e => this.refreshRows(e.start, e.end, !0))), this._needsSelectionRefresh = !0, this._fullRefresh()) + } + addRefreshCallback(e) { + return this._renderDebouncer.addRefreshCallback(e) + } + _fullRefresh() { + this._isPaused ? this._needsFullRefresh = !0 : this.refreshRows(0, this._rowCount - 1) + } + clearTextureAtlas() { + this._renderer.value && (this._renderer.value.clearTextureAtlas?.(), this._fullRefresh()) + } + handleDevicePixelRatioChange() { + this._charSizeService.measure(), this._renderer.value && (this._renderer.value.handleDevicePixelRatioChange(), this.refreshRows(0, this._rowCount - 1)) + } + handleResize(e, t) { + this._renderer.value && (this._isPaused ? this._pausedResizeTask.set((() => this._renderer.value?.handleResize(e, t))) : this._renderer.value.handleResize(e, t), this._fullRefresh()) + } + handleCharSizeChanged() { + this._renderer.value?.handleCharSizeChanged() + } + handleBlur() { + this._renderer.value?.handleBlur() + } + handleFocus() { + this._renderer.value?.handleFocus() + } + handleSelectionChanged(e, t, i) { + this._selectionState.start = e, this._selectionState.end = t, this._selectionState.columnSelectMode = i, this._renderer.value?.handleSelectionChanged(e, t, i) + } + handleCursorMove() { + this._renderer.value?.handleCursorMove() + } + clear() { + this._renderer.value?.clear() + } + }; + t.RenderService = d = s([r(2, l.IOptionsService), r(3, o.ICharSizeService), r(4, l.IDecorationService), r(5, l.IBufferService), r(6, o.ICoreBrowserService), r(7, o.IThemeService)], d) + }, + 9312: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.SelectionService = void 0; + const n = i(9806), + o = i(9504), + a = i(456), + h = i(4725), + c = i(8460), + l = i(844), + d = i(6114), + _ = i(4841), + u = i(511), + f = i(2585), + v = String.fromCharCode(160), + g = new RegExp(v, "g"); + let p = t.SelectionService = class extends l.Disposable { + constructor(e, t, i, s, r, n, o, h, d) { + super(), this._element = e, this._screenElement = t, this._linkifier = i, this._bufferService = s, this._coreService = r, this._mouseService = n, this._optionsService = o, this._renderService = h, this._coreBrowserService = d, this._dragScrollAmount = 0, this._enabled = !0, this._workCell = new u.CellData, this._mouseDownTimeStamp = 0, this._oldHasSelection = !1, this._oldSelectionStart = void 0, this._oldSelectionEnd = void 0, this._onLinuxMouseSelection = this.register(new c.EventEmitter), this.onLinuxMouseSelection = this._onLinuxMouseSelection.event, this._onRedrawRequest = this.register(new c.EventEmitter), this.onRequestRedraw = this._onRedrawRequest.event, this._onSelectionChange = this.register(new c.EventEmitter), this.onSelectionChange = this._onSelectionChange.event, this._onRequestScrollLines = this.register(new c.EventEmitter), this.onRequestScrollLines = this._onRequestScrollLines.event, this._mouseMoveListener = e => this._handleMouseMove(e), this._mouseUpListener = e => this._handleMouseUp(e), this._coreService.onUserInput((() => { + this.hasSelection && this.clearSelection() + })), this._trimListener = this._bufferService.buffer.lines.onTrim((e => this._handleTrim(e))), this.register(this._bufferService.buffers.onBufferActivate((e => this._handleBufferActivate(e)))), this.enable(), this._model = new a.SelectionModel(this._bufferService), this._activeSelectionMode = 0, this.register((0, l.toDisposable)((() => { + this._removeMouseDownListeners() + }))) + } + reset() { + this.clearSelection() + } + disable() { + this.clearSelection(), this._enabled = !1 + } + enable() { + this._enabled = !0 + } + get selectionStart() { + return this._model.finalSelectionStart + } + get selectionEnd() { + return this._model.finalSelectionEnd + } + get hasSelection() { + const e = this._model.finalSelectionStart, + t = this._model.finalSelectionEnd; + return !(!e || !t || e[0] === t[0] && e[1] === t[1]) + } + get selectionText() { + const e = this._model.finalSelectionStart, + t = this._model.finalSelectionEnd; + if (!e || !t) return ""; + const i = this._bufferService.buffer, + s = []; + if (3 === this._activeSelectionMode) { + if (e[0] === t[0]) return ""; + const r = e[0] < t[0] ? e[0] : t[0], + n = e[0] < t[0] ? t[0] : e[0]; + for (let o = e[1]; o <= t[1]; o++) { + const e = i.translateBufferLineToString(o, !0, r, n); + s.push(e) + } + } else { + const r = e[1] === t[1] ? t[0] : void 0; + s.push(i.translateBufferLineToString(e[1], !0, e[0], r)); + for (let r = e[1] + 1; r <= t[1] - 1; r++) { + const e = i.lines.get(r), + t = i.translateBufferLineToString(r, !0); + e?.isWrapped ? s[s.length - 1] += t : s.push(t) + } + if (e[1] !== t[1]) { + const e = i.lines.get(t[1]), + r = i.translateBufferLineToString(t[1], !0, 0, t[0]); + e && e.isWrapped ? s[s.length - 1] += r : s.push(r) + } + } + return s.map((e => e.replace(g, " "))).join(d.isWindows ? "\r\n" : "\n") + } + clearSelection() { + this._model.clearSelection(), this._removeMouseDownListeners(), this.refresh(), this._onSelectionChange.fire() + } + refresh(e) { + this._refreshAnimationFrame || (this._refreshAnimationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._refresh()))), d.isLinux && e && this.selectionText.length && this._onLinuxMouseSelection.fire(this.selectionText) + } + _refresh() { + this._refreshAnimationFrame = void 0, this._onRedrawRequest.fire({ + start: this._model.finalSelectionStart, + end: this._model.finalSelectionEnd, + columnSelectMode: 3 === this._activeSelectionMode + }) + } + _isClickInSelection(e) { + const t = this._getMouseBufferCoords(e), + i = this._model.finalSelectionStart, + s = this._model.finalSelectionEnd; + return !!(i && s && t) && this._areCoordsInSelection(t, i, s) + } + isCellInSelection(e, t) { + const i = this._model.finalSelectionStart, + s = this._model.finalSelectionEnd; + return !(!i || !s) && this._areCoordsInSelection([e, t], i, s) + } + _areCoordsInSelection(e, t, i) { + return e[1] > t[1] && e[1] < i[1] || t[1] === i[1] && e[1] === t[1] && e[0] >= t[0] && e[0] < i[0] || t[1] < i[1] && e[1] === i[1] && e[0] < i[0] || t[1] < i[1] && e[1] === t[1] && e[0] >= t[0] + } + _selectWordAtCursor(e, t) { + const i = this._linkifier.currentLink?.link?.range; + if (i) return this._model.selectionStart = [i.start.x - 1, i.start.y - 1], this._model.selectionStartLength = (0, _.getRangeLength)(i, this._bufferService.cols), this._model.selectionEnd = void 0, !0; + const s = this._getMouseBufferCoords(e); + return !!s && (this._selectWordAt(s, t), this._model.selectionEnd = void 0, !0) + } + selectAll() { + this._model.isSelectAllActive = !0, this.refresh(), this._onSelectionChange.fire() + } + selectLines(e, t) { + this._model.clearSelection(), e = Math.max(e, 0), t = Math.min(t, this._bufferService.buffer.lines.length - 1), this._model.selectionStart = [0, e], this._model.selectionEnd = [this._bufferService.cols, t], this.refresh(), this._onSelectionChange.fire() + } + _handleTrim(e) { + this._model.handleTrim(e) && this.refresh() + } + _getMouseBufferCoords(e) { + const t = this._mouseService.getCoords(e, this._screenElement, this._bufferService.cols, this._bufferService.rows, !0); + if (t) return t[0]--, t[1]--, t[1] += this._bufferService.buffer.ydisp, t + } + _getMouseEventScrollAmount(e) { + let t = (0, n.getCoordsRelativeToElement)(this._coreBrowserService.window, e, this._screenElement)[1]; + const i = this._renderService.dimensions.css.canvas.height; + return t >= 0 && t <= i ? 0 : (t > i && (t -= i), t = Math.min(Math.max(t, -50), 50), t /= 50, t / Math.abs(t) + Math.round(14 * t)) + } + shouldForceSelection(e) { + return d.isMac ? e.altKey && this._optionsService.rawOptions.macOptionClickForcesSelection : e.shiftKey + } + handleMouseDown(e) { + if (this._mouseDownTimeStamp = e.timeStamp, (2 !== e.button || !this.hasSelection) && 0 === e.button) { + if (!this._enabled) { + if (!this.shouldForceSelection(e)) return; + e.stopPropagation() + } + e.preventDefault(), this._dragScrollAmount = 0, this._enabled && e.shiftKey ? this._handleIncrementalClick(e) : 1 === e.detail ? this._handleSingleClick(e) : 2 === e.detail ? this._handleDoubleClick(e) : 3 === e.detail && this._handleTripleClick(e), this._addMouseDownListeners(), this.refresh(!0) + } + } + _addMouseDownListeners() { + this._screenElement.ownerDocument && (this._screenElement.ownerDocument.addEventListener("mousemove", this._mouseMoveListener), this._screenElement.ownerDocument.addEventListener("mouseup", this._mouseUpListener)), this._dragScrollIntervalTimer = this._coreBrowserService.window.setInterval((() => this._dragScroll()), 50) + } + _removeMouseDownListeners() { + this._screenElement.ownerDocument && (this._screenElement.ownerDocument.removeEventListener("mousemove", this._mouseMoveListener), this._screenElement.ownerDocument.removeEventListener("mouseup", this._mouseUpListener)), this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer), this._dragScrollIntervalTimer = void 0 + } + _handleIncrementalClick(e) { + this._model.selectionStart && (this._model.selectionEnd = this._getMouseBufferCoords(e)) + } + _handleSingleClick(e) { + if (this._model.selectionStartLength = 0, this._model.isSelectAllActive = !1, this._activeSelectionMode = this.shouldColumnSelect(e) ? 3 : 0, this._model.selectionStart = this._getMouseBufferCoords(e), !this._model.selectionStart) return; + this._model.selectionEnd = void 0; + const t = this._bufferService.buffer.lines.get(this._model.selectionStart[1]); + t && t.length !== this._model.selectionStart[0] && 0 === t.hasWidth(this._model.selectionStart[0]) && this._model.selectionStart[0]++ + } + _handleDoubleClick(e) { + this._selectWordAtCursor(e, !0) && (this._activeSelectionMode = 1) + } + _handleTripleClick(e) { + const t = this._getMouseBufferCoords(e); + t && (this._activeSelectionMode = 2, this._selectLineAt(t[1])) + } + shouldColumnSelect(e) { + return e.altKey && !(d.isMac && this._optionsService.rawOptions.macOptionClickForcesSelection) + } + _handleMouseMove(e) { + if (e.stopImmediatePropagation(), !this._model.selectionStart) return; + const t = this._model.selectionEnd ? [this._model.selectionEnd[0], this._model.selectionEnd[1]] : null; + if (this._model.selectionEnd = this._getMouseBufferCoords(e), !this._model.selectionEnd) return void this.refresh(!0); + 2 === this._activeSelectionMode ? this._model.selectionEnd[1] < this._model.selectionStart[1] ? this._model.selectionEnd[0] = 0 : this._model.selectionEnd[0] = this._bufferService.cols : 1 === this._activeSelectionMode && this._selectToWordAt(this._model.selectionEnd), this._dragScrollAmount = this._getMouseEventScrollAmount(e), 3 !== this._activeSelectionMode && (this._dragScrollAmount > 0 ? this._model.selectionEnd[0] = this._bufferService.cols : this._dragScrollAmount < 0 && (this._model.selectionEnd[0] = 0)); + const i = this._bufferService.buffer; + if (this._model.selectionEnd[1] < i.lines.length) { + const e = i.lines.get(this._model.selectionEnd[1]); + e && 0 === e.hasWidth(this._model.selectionEnd[0]) && this._model.selectionEnd[0] < this._bufferService.cols && this._model.selectionEnd[0]++ + } + t && t[0] === this._model.selectionEnd[0] && t[1] === this._model.selectionEnd[1] || this.refresh(!0) + } + _dragScroll() { + if (this._model.selectionEnd && this._model.selectionStart && this._dragScrollAmount) { + this._onRequestScrollLines.fire({ + amount: this._dragScrollAmount, + suppressScrollEvent: !1 + }); + const e = this._bufferService.buffer; + this._dragScrollAmount > 0 ? (3 !== this._activeSelectionMode && (this._model.selectionEnd[0] = this._bufferService.cols), this._model.selectionEnd[1] = Math.min(e.ydisp + this._bufferService.rows, e.lines.length - 1)) : (3 !== this._activeSelectionMode && (this._model.selectionEnd[0] = 0), this._model.selectionEnd[1] = e.ydisp), this.refresh() + } + } + _handleMouseUp(e) { + const t = e.timeStamp - this._mouseDownTimeStamp; + if (this._removeMouseDownListeners(), this.selectionText.length <= 1 && t < 500 && e.altKey && this._optionsService.rawOptions.altClickMovesCursor) { + if (this._bufferService.buffer.ybase === this._bufferService.buffer.ydisp) { + const t = this._mouseService.getCoords(e, this._element, this._bufferService.cols, this._bufferService.rows, !1); + if (t && void 0 !== t[0] && void 0 !== t[1]) { + const e = (0, o.moveToCellSequence)(t[0] - 1, t[1] - 1, this._bufferService, this._coreService.decPrivateModes.applicationCursorKeys); + this._coreService.triggerDataEvent(e, !0) + } + } + } else this._fireEventIfSelectionChanged() + } + _fireEventIfSelectionChanged() { + const e = this._model.finalSelectionStart, + t = this._model.finalSelectionEnd, + i = !(!e || !t || e[0] === t[0] && e[1] === t[1]); + i ? e && t && (this._oldSelectionStart && this._oldSelectionEnd && e[0] === this._oldSelectionStart[0] && e[1] === this._oldSelectionStart[1] && t[0] === this._oldSelectionEnd[0] && t[1] === this._oldSelectionEnd[1] || this._fireOnSelectionChange(e, t, i)) : this._oldHasSelection && this._fireOnSelectionChange(e, t, i) + } + _fireOnSelectionChange(e, t, i) { + this._oldSelectionStart = e, this._oldSelectionEnd = t, this._oldHasSelection = i, this._onSelectionChange.fire() + } + _handleBufferActivate(e) { + this.clearSelection(), this._trimListener.dispose(), this._trimListener = e.activeBuffer.lines.onTrim((e => this._handleTrim(e))) + } + _convertViewportColToCharacterIndex(e, t) { + let i = t; + for (let s = 0; t >= s; s++) { + const r = e.loadCell(s, this._workCell).getChars().length; + 0 === this._workCell.getWidth() ? i-- : r > 1 && t !== s && (i += r - 1) + } + return i + } + setSelection(e, t, i) { + this._model.clearSelection(), this._removeMouseDownListeners(), this._model.selectionStart = [e, t], this._model.selectionStartLength = i, this.refresh(), this._fireEventIfSelectionChanged() + } + rightClickSelect(e) { + this._isClickInSelection(e) || (this._selectWordAtCursor(e, !1) && this.refresh(!0), this._fireEventIfSelectionChanged()) + } + _getWordAt(e, t, i = !0, s = !0) { + if (e[0] >= this._bufferService.cols) return; + const r = this._bufferService.buffer, + n = r.lines.get(e[1]); + if (!n) return; + const o = r.translateBufferLineToString(e[1], !1); + let a = this._convertViewportColToCharacterIndex(n, e[0]), + h = a; + const c = e[0] - a; + let l = 0, + d = 0, + _ = 0, + u = 0; + if (" " === o.charAt(a)) { + for (; a > 0 && " " === o.charAt(a - 1);) a--; + for (; h < o.length && " " === o.charAt(h + 1);) h++ + } else { + let t = e[0], + i = e[0]; + 0 === n.getWidth(t) && (l++, t--), 2 === n.getWidth(i) && (d++, i++); + const s = n.getString(i).length; + for (s > 1 && (u += s - 1, h += s - 1); t > 0 && a > 0 && !this._isCharWordSeparator(n.loadCell(t - 1, this._workCell));) { + n.loadCell(t - 1, this._workCell); + const e = this._workCell.getChars().length; + 0 === this._workCell.getWidth() ? (l++, t--) : e > 1 && (_ += e - 1, a -= e - 1), a--, t-- + } + for (; i < n.length && h + 1 < o.length && !this._isCharWordSeparator(n.loadCell(i + 1, this._workCell));) { + n.loadCell(i + 1, this._workCell); + const e = this._workCell.getChars().length; + 2 === this._workCell.getWidth() ? (d++, i++) : e > 1 && (u += e - 1, h += e - 1), h++, i++ + } + } + h++; + let f = a + c - l + _, + v = Math.min(this._bufferService.cols, h - a + l + d - _ - u); + if (t || "" !== o.slice(a, h).trim()) { + if (i && 0 === f && 32 !== n.getCodePoint(0)) { + const t = r.lines.get(e[1] - 1); + if (t && n.isWrapped && 32 !== t.getCodePoint(this._bufferService.cols - 1)) { + const t = this._getWordAt([this._bufferService.cols - 1, e[1] - 1], !1, !0, !1); + if (t) { + const e = this._bufferService.cols - t.start; + f -= e, v += e + } + } + } + if (s && f + v === this._bufferService.cols && 32 !== n.getCodePoint(this._bufferService.cols - 1)) { + const t = r.lines.get(e[1] + 1); + if (t?.isWrapped && 32 !== t.getCodePoint(0)) { + const t = this._getWordAt([0, e[1] + 1], !1, !1, !0); + t && (v += t.length) + } + } + return { + start: f, + length: v + } + } + } + _selectWordAt(e, t) { + const i = this._getWordAt(e, t); + if (i) { + for (; i.start < 0;) i.start += this._bufferService.cols, e[1]--; + this._model.selectionStart = [i.start, e[1]], this._model.selectionStartLength = i.length + } + } + _selectToWordAt(e) { + const t = this._getWordAt(e, !0); + if (t) { + let i = e[1]; + for (; t.start < 0;) t.start += this._bufferService.cols, i--; + if (!this._model.areSelectionValuesReversed()) + for (; t.start + t.length > this._bufferService.cols;) t.length -= this._bufferService.cols, i++; + this._model.selectionEnd = [this._model.areSelectionValuesReversed() ? t.start : t.start + t.length, i] + } + } + _isCharWordSeparator(e) { + return 0 !== e.getWidth() && this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars()) >= 0 + } + _selectLineAt(e) { + const t = this._bufferService.buffer.getWrappedRangeForLine(e), + i = { + start: { + x: 0, + y: t.first + }, + end: { + x: this._bufferService.cols - 1, + y: t.last + } + }; + this._model.selectionStart = [0, t.first], this._model.selectionEnd = void 0, this._model.selectionStartLength = (0, _.getRangeLength)(i, this._bufferService.cols) + } + }; + t.SelectionService = p = s([r(3, f.IBufferService), r(4, f.ICoreService), r(5, h.IMouseService), r(6, f.IOptionsService), r(7, h.IRenderService), r(8, h.ICoreBrowserService)], p) + }, + 4725: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.ILinkProviderService = t.IThemeService = t.ICharacterJoinerService = t.ISelectionService = t.IRenderService = t.IMouseService = t.ICoreBrowserService = t.ICharSizeService = void 0; + const s = i(8343); + t.ICharSizeService = (0, s.createDecorator)("CharSizeService"), t.ICoreBrowserService = (0, s.createDecorator)("CoreBrowserService"), t.IMouseService = (0, s.createDecorator)("MouseService"), t.IRenderService = (0, s.createDecorator)("RenderService"), t.ISelectionService = (0, s.createDecorator)("SelectionService"), t.ICharacterJoinerService = (0, s.createDecorator)("CharacterJoinerService"), t.IThemeService = (0, s.createDecorator)("ThemeService"), t.ILinkProviderService = (0, s.createDecorator)("LinkProviderService") + }, + 6731: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.ThemeService = t.DEFAULT_ANSI_COLORS = void 0; + const n = i(7239), + o = i(8055), + a = i(8460), + h = i(844), + c = i(2585), + l = o.css.toColor("#ffffff"), + d = o.css.toColor("#000000"), + _ = o.css.toColor("#ffffff"), + u = o.css.toColor("#000000"), + f = { + css: "rgba(255, 255, 255, 0.3)", + rgba: 4294967117 + }; + t.DEFAULT_ANSI_COLORS = Object.freeze((() => { + const e = [o.css.toColor("#2e3436"), o.css.toColor("#cc0000"), o.css.toColor("#4e9a06"), o.css.toColor("#c4a000"), o.css.toColor("#3465a4"), o.css.toColor("#75507b"), o.css.toColor("#06989a"), o.css.toColor("#d3d7cf"), o.css.toColor("#555753"), o.css.toColor("#ef2929"), o.css.toColor("#8ae234"), o.css.toColor("#fce94f"), o.css.toColor("#729fcf"), o.css.toColor("#ad7fa8"), o.css.toColor("#34e2e2"), o.css.toColor("#eeeeec")], + t = [0, 95, 135, 175, 215, 255]; + for (let i = 0; i < 216; i++) { + const s = t[i / 36 % 6 | 0], + r = t[i / 6 % 6 | 0], + n = t[i % 6]; + e.push({ + css: o.channels.toCss(s, r, n), + rgba: o.channels.toRgba(s, r, n) + }) + } + for (let t = 0; t < 24; t++) { + const i = 8 + 10 * t; + e.push({ + css: o.channels.toCss(i, i, i), + rgba: o.channels.toRgba(i, i, i) + }) + } + return e + })()); + let v = t.ThemeService = class extends h.Disposable { + get colors() { + return this._colors + } + constructor(e) { + super(), this._optionsService = e, this._contrastCache = new n.ColorContrastCache, this._halfContrastCache = new n.ColorContrastCache, this._onChangeColors = this.register(new a.EventEmitter), this.onChangeColors = this._onChangeColors.event, this._colors = { + foreground: l, + background: d, + cursor: _, + cursorAccent: u, + selectionForeground: void 0, + selectionBackgroundTransparent: f, + selectionBackgroundOpaque: o.color.blend(d, f), + selectionInactiveBackgroundTransparent: f, + selectionInactiveBackgroundOpaque: o.color.blend(d, f), + ansi: t.DEFAULT_ANSI_COLORS.slice(), + contrastCache: this._contrastCache, + halfContrastCache: this._halfContrastCache + }, this._updateRestoreColors(), this._setTheme(this._optionsService.rawOptions.theme), this.register(this._optionsService.onSpecificOptionChange("minimumContrastRatio", (() => this._contrastCache.clear()))), this.register(this._optionsService.onSpecificOptionChange("theme", (() => this._setTheme(this._optionsService.rawOptions.theme)))) + } + _setTheme(e = {}) { + const i = this._colors; + if (i.foreground = g(e.foreground, l), i.background = g(e.background, d), i.cursor = g(e.cursor, _), i.cursorAccent = g(e.cursorAccent, u), i.selectionBackgroundTransparent = g(e.selectionBackground, f), i.selectionBackgroundOpaque = o.color.blend(i.background, i.selectionBackgroundTransparent), i.selectionInactiveBackgroundTransparent = g(e.selectionInactiveBackground, i.selectionBackgroundTransparent), i.selectionInactiveBackgroundOpaque = o.color.blend(i.background, i.selectionInactiveBackgroundTransparent), i.selectionForeground = e.selectionForeground ? g(e.selectionForeground, o.NULL_COLOR) : void 0, i.selectionForeground === o.NULL_COLOR && (i.selectionForeground = void 0), o.color.isOpaque(i.selectionBackgroundTransparent)) { + const e = .3; + i.selectionBackgroundTransparent = o.color.opacity(i.selectionBackgroundTransparent, e) + } + if (o.color.isOpaque(i.selectionInactiveBackgroundTransparent)) { + const e = .3; + i.selectionInactiveBackgroundTransparent = o.color.opacity(i.selectionInactiveBackgroundTransparent, e) + } + if (i.ansi = t.DEFAULT_ANSI_COLORS.slice(), i.ansi[0] = g(e.black, t.DEFAULT_ANSI_COLORS[0]), i.ansi[1] = g(e.red, t.DEFAULT_ANSI_COLORS[1]), i.ansi[2] = g(e.green, t.DEFAULT_ANSI_COLORS[2]), i.ansi[3] = g(e.yellow, t.DEFAULT_ANSI_COLORS[3]), i.ansi[4] = g(e.blue, t.DEFAULT_ANSI_COLORS[4]), i.ansi[5] = g(e.magenta, t.DEFAULT_ANSI_COLORS[5]), i.ansi[6] = g(e.cyan, t.DEFAULT_ANSI_COLORS[6]), i.ansi[7] = g(e.white, t.DEFAULT_ANSI_COLORS[7]), i.ansi[8] = g(e.brightBlack, t.DEFAULT_ANSI_COLORS[8]), i.ansi[9] = g(e.brightRed, t.DEFAULT_ANSI_COLORS[9]), i.ansi[10] = g(e.brightGreen, t.DEFAULT_ANSI_COLORS[10]), i.ansi[11] = g(e.brightYellow, t.DEFAULT_ANSI_COLORS[11]), i.ansi[12] = g(e.brightBlue, t.DEFAULT_ANSI_COLORS[12]), i.ansi[13] = g(e.brightMagenta, t.DEFAULT_ANSI_COLORS[13]), i.ansi[14] = g(e.brightCyan, t.DEFAULT_ANSI_COLORS[14]), i.ansi[15] = g(e.brightWhite, t.DEFAULT_ANSI_COLORS[15]), e.extendedAnsi) { + const s = Math.min(i.ansi.length - 16, e.extendedAnsi.length); + for (let r = 0; r < s; r++) i.ansi[r + 16] = g(e.extendedAnsi[r], t.DEFAULT_ANSI_COLORS[r + 16]) + } + this._contrastCache.clear(), this._halfContrastCache.clear(), this._updateRestoreColors(), this._onChangeColors.fire(this.colors) + } + restoreColor(e) { + this._restoreColor(e), this._onChangeColors.fire(this.colors) + } + _restoreColor(e) { + if (void 0 !== e) switch (e) { + case 256: + this._colors.foreground = this._restoreColors.foreground; + break; + case 257: + this._colors.background = this._restoreColors.background; + break; + case 258: + this._colors.cursor = this._restoreColors.cursor; + break; + default: + this._colors.ansi[e] = this._restoreColors.ansi[e] + } else + for (let e = 0; e < this._restoreColors.ansi.length; ++e) this._colors.ansi[e] = this._restoreColors.ansi[e] + } + modifyColors(e) { + e(this._colors), this._onChangeColors.fire(this.colors) + } + _updateRestoreColors() { + this._restoreColors = { + foreground: this._colors.foreground, + background: this._colors.background, + cursor: this._colors.cursor, + ansi: this._colors.ansi.slice() + } + } + }; + + function g(e, t) { + if (void 0 !== e) try { + return o.css.toColor(e) + } catch {} + return t + } + t.ThemeService = v = s([r(0, c.IOptionsService)], v) + }, + 6349: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CircularList = void 0; + const s = i(8460), + r = i(844); + class n extends r.Disposable { + constructor(e) { + super(), this._maxLength = e, this.onDeleteEmitter = this.register(new s.EventEmitter), this.onDelete = this.onDeleteEmitter.event, this.onInsertEmitter = this.register(new s.EventEmitter), this.onInsert = this.onInsertEmitter.event, this.onTrimEmitter = this.register(new s.EventEmitter), this.onTrim = this.onTrimEmitter.event, this._array = new Array(this._maxLength), this._startIndex = 0, this._length = 0 + } + get maxLength() { + return this._maxLength + } + set maxLength(e) { + if (this._maxLength === e) return; + const t = new Array(e); + for (let i = 0; i < Math.min(e, this.length); i++) t[i] = this._array[this._getCyclicIndex(i)]; + this._array = t, this._maxLength = e, this._startIndex = 0 + } + get length() { + return this._length + } + set length(e) { + if (e > this._length) + for (let t = this._length; t < e; t++) this._array[t] = void 0; + this._length = e + } + get(e) { + return this._array[this._getCyclicIndex(e)] + } + set(e, t) { + this._array[this._getCyclicIndex(e)] = t + } + push(e) { + this._array[this._getCyclicIndex(this._length)] = e, this._length === this._maxLength ? (this._startIndex = ++this._startIndex % this._maxLength, this.onTrimEmitter.fire(1)) : this._length++ + } + recycle() { + if (this._length !== this._maxLength) throw new Error("Can only recycle when the buffer is full"); + return this._startIndex = ++this._startIndex % this._maxLength, this.onTrimEmitter.fire(1), this._array[this._getCyclicIndex(this._length - 1)] + } + get isFull() { + return this._length === this._maxLength + } + pop() { + return this._array[this._getCyclicIndex(this._length-- - 1)] + } + splice(e, t, ...i) { + if (t) { + for (let i = e; i < this._length - t; i++) this._array[this._getCyclicIndex(i)] = this._array[this._getCyclicIndex(i + t)]; + this._length -= t, this.onDeleteEmitter.fire({ + index: e, + amount: t + }) + } + for (let t = this._length - 1; t >= e; t--) this._array[this._getCyclicIndex(t + i.length)] = this._array[this._getCyclicIndex(t)]; + for (let t = 0; t < i.length; t++) this._array[this._getCyclicIndex(e + t)] = i[t]; + if (i.length && this.onInsertEmitter.fire({ + index: e, + amount: i.length + }), this._length + i.length > this._maxLength) { + const e = this._length + i.length - this._maxLength; + this._startIndex += e, this._length = this._maxLength, this.onTrimEmitter.fire(e) + } else this._length += i.length + } + trimStart(e) { + e > this._length && (e = this._length), this._startIndex += e, this._length -= e, this.onTrimEmitter.fire(e) + } + shiftElements(e, t, i) { + if (!(t <= 0)) { + if (e < 0 || e >= this._length) throw new Error("start argument out of range"); + if (e + i < 0) throw new Error("Cannot shift elements in list beyond index 0"); + if (i > 0) { + for (let s = t - 1; s >= 0; s--) this.set(e + s + i, this.get(e + s)); + const s = e + t + i - this._length; + if (s > 0) + for (this._length += s; this._length > this._maxLength;) this._length--, this._startIndex++, this.onTrimEmitter.fire(1) + } else + for (let s = 0; s < t; s++) this.set(e + s + i, this.get(e + s)) + } + } + _getCyclicIndex(e) { + return (this._startIndex + e) % this._maxLength + } + } + t.CircularList = n + }, + 1439: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.clone = void 0, t.clone = function e(t, i = 5) { + if ("object" != typeof t) return t; + const s = Array.isArray(t) ? [] : {}; + for (const r in t) s[r] = i <= 1 ? t[r] : t[r] && e(t[r], i - 1); + return s + } + }, + 8055: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.contrastRatio = t.toPaddedHex = t.rgba = t.rgb = t.css = t.color = t.channels = t.NULL_COLOR = void 0; + let i = 0, + s = 0, + r = 0, + n = 0; + var o, a, h, c, l; + + function d(e) { + const t = e.toString(16); + return t.length < 2 ? "0" + t : t + } + + function _(e, t) { + return e < t ? (t + .05) / (e + .05) : (e + .05) / (t + .05) + } + t.NULL_COLOR = { + css: "#00000000", + rgba: 0 + }, + function(e) { + e.toCss = function(e, t, i, s) { + return void 0 !== s ? `#${d(e)}${d(t)}${d(i)}${d(s)}` : `#${d(e)}${d(t)}${d(i)}` + }, e.toRgba = function(e, t, i, s = 255) { + return (e << 24 | t << 16 | i << 8 | s) >>> 0 + }, e.toColor = function(t, i, s, r) { + return { + css: e.toCss(t, i, s, r), + rgba: e.toRgba(t, i, s, r) + } + } + }(o || (t.channels = o = {})), + function(e) { + function t(e, t) { + return n = Math.round(255 * t), [i, s, r] = l.toChannels(e.rgba), { + css: o.toCss(i, s, r, n), + rgba: o.toRgba(i, s, r, n) + } + } + e.blend = function(e, t) { + if (n = (255 & t.rgba) / 255, 1 === n) return { + css: t.css, + rgba: t.rgba + }; + const a = t.rgba >> 24 & 255, + h = t.rgba >> 16 & 255, + c = t.rgba >> 8 & 255, + l = e.rgba >> 24 & 255, + d = e.rgba >> 16 & 255, + _ = e.rgba >> 8 & 255; + return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), { + css: o.toCss(i, s, r), + rgba: o.toRgba(i, s, r) + } + }, e.isOpaque = function(e) { + return !(255 & ~e.rgba) + }, e.ensureContrastRatio = function(e, t, i) { + const s = l.ensureContrastRatio(e.rgba, t.rgba, i); + if (s) return o.toColor(s >> 24 & 255, s >> 16 & 255, s >> 8 & 255) + }, e.opaque = function(e) { + const t = (255 | e.rgba) >>> 0; + return [i, s, r] = l.toChannels(t), { + css: o.toCss(i, s, r), + rgba: t + } + }, e.opacity = t, e.multiplyOpacity = function(e, i) { + return n = 255 & e.rgba, t(e, n * i / 255) + }, e.toColorRGB = function(e) { + return [e.rgba >> 24 & 255, e.rgba >> 16 & 255, e.rgba >> 8 & 255] + } + }(a || (t.color = a = {})), + function(e) { + let t, a; + try { + const e = document.createElement("canvas"); + e.width = 1, e.height = 1; + const i = e.getContext("2d", { + willReadFrequently: !0 + }); + i && (t = i, t.globalCompositeOperation = "copy", a = t.createLinearGradient(0, 0, 1, 1)) + } catch {} + e.toColor = function(e) { + if (e.match(/#[\da-f]{3,8}/i)) switch (e.length) { + case 4: + return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), o.toColor(i, s, r); + case 5: + return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), n = parseInt(e.slice(4, 5).repeat(2), 16), o.toColor(i, s, r, n); + case 7: + return { + css: e, rgba: (parseInt(e.slice(1), 16) << 8 | 255) >>> 0 + }; + case 9: + return { + css: e, rgba: parseInt(e.slice(1), 16) >>> 0 + } + } + const h = e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/); + if (h) return i = parseInt(h[1]), s = parseInt(h[2]), r = parseInt(h[3]), n = Math.round(255 * (void 0 === h[5] ? 1 : parseFloat(h[5]))), o.toColor(i, s, r, n); + if (!t || !a) throw new Error("css.toColor: Unsupported css format"); + if (t.fillStyle = a, t.fillStyle = e, "string" != typeof t.fillStyle) throw new Error("css.toColor: Unsupported css format"); + if (t.fillRect(0, 0, 1, 1), [i, s, r, n] = t.getImageData(0, 0, 1, 1).data, 255 !== n) throw new Error("css.toColor: Unsupported css format"); + return { + rgba: o.toRgba(i, s, r, n), + css: e + } + } + }(h || (t.css = h = {})), + function(e) { + function t(e, t, i) { + const s = e / 255, + r = t / 255, + n = i / 255; + return .2126 * (s <= .03928 ? s / 12.92 : Math.pow((s + .055) / 1.055, 2.4)) + .7152 * (r <= .03928 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4)) + .0722 * (n <= .03928 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4)) + } + e.relativeLuminance = function(e) { + return t(e >> 16 & 255, e >> 8 & 255, 255 & e) + }, e.relativeLuminance2 = t + }(c || (t.rgb = c = {})), + function(e) { + function t(e, t, i) { + const s = e >> 24 & 255, + r = e >> 16 & 255, + n = e >> 8 & 255; + let o = t >> 24 & 255, + a = t >> 16 & 255, + h = t >> 8 & 255, + l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + for (; l < i && (o > 0 || a > 0 || h > 0);) o -= Math.max(0, Math.ceil(.1 * o)), a -= Math.max(0, Math.ceil(.1 * a)), h -= Math.max(0, Math.ceil(.1 * h)), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + return (o << 24 | a << 16 | h << 8 | 255) >>> 0 + } + + function a(e, t, i) { + const s = e >> 24 & 255, + r = e >> 16 & 255, + n = e >> 8 & 255; + let o = t >> 24 & 255, + a = t >> 16 & 255, + h = t >> 8 & 255, + l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + for (; l < i && (o < 255 || a < 255 || h < 255);) o = Math.min(255, o + Math.ceil(.1 * (255 - o))), a = Math.min(255, a + Math.ceil(.1 * (255 - a))), h = Math.min(255, h + Math.ceil(.1 * (255 - h))), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + return (o << 24 | a << 16 | h << 8 | 255) >>> 0 + } + e.blend = function(e, t) { + if (n = (255 & t) / 255, 1 === n) return t; + const a = t >> 24 & 255, + h = t >> 16 & 255, + c = t >> 8 & 255, + l = e >> 24 & 255, + d = e >> 16 & 255, + _ = e >> 8 & 255; + return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), o.toRgba(i, s, r) + }, e.ensureContrastRatio = function(e, i, s) { + const r = c.relativeLuminance(e >> 8), + n = c.relativeLuminance(i >> 8); + if (_(r, n) < s) { + if (n < r) { + const n = t(e, i, s), + o = _(r, c.relativeLuminance(n >> 8)); + if (o < s) { + const t = a(e, i, s); + return o > _(r, c.relativeLuminance(t >> 8)) ? n : t + } + return n + } + const o = a(e, i, s), + h = _(r, c.relativeLuminance(o >> 8)); + if (h < s) { + const n = t(e, i, s); + return h > _(r, c.relativeLuminance(n >> 8)) ? o : n + } + return o + } + }, e.reduceLuminance = t, e.increaseLuminance = a, e.toChannels = function(e) { + return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e] + } + }(l || (t.rgba = l = {})), t.toPaddedHex = d, t.contrastRatio = _ + }, + 8969: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CoreTerminal = void 0; + const s = i(844), + r = i(2585), + n = i(4348), + o = i(7866), + a = i(744), + h = i(7302), + c = i(6975), + l = i(8460), + d = i(1753), + _ = i(1480), + u = i(7994), + f = i(9282), + v = i(5435), + g = i(5981), + p = i(2660); + let m = !1; + class C extends s.Disposable { + get onScroll() { + return this._onScrollApi || (this._onScrollApi = this.register(new l.EventEmitter), this._onScroll.event((e => { + this._onScrollApi?.fire(e.position) + }))), this._onScrollApi.event + } + get cols() { + return this._bufferService.cols + } + get rows() { + return this._bufferService.rows + } + get buffers() { + return this._bufferService.buffers + } + get options() { + return this.optionsService.options + } + set options(e) { + for (const t in e) this.optionsService.options[t] = e[t] + } + constructor(e) { + super(), this._windowsWrappingHeuristics = this.register(new s.MutableDisposable), this._onBinary = this.register(new l.EventEmitter), this.onBinary = this._onBinary.event, this._onData = this.register(new l.EventEmitter), this.onData = this._onData.event, this._onLineFeed = this.register(new l.EventEmitter), this.onLineFeed = this._onLineFeed.event, this._onResize = this.register(new l.EventEmitter), this.onResize = this._onResize.event, this._onWriteParsed = this.register(new l.EventEmitter), this.onWriteParsed = this._onWriteParsed.event, this._onScroll = this.register(new l.EventEmitter), this._instantiationService = new n.InstantiationService, this.optionsService = this.register(new h.OptionsService(e)), this._instantiationService.setService(r.IOptionsService, this.optionsService), this._bufferService = this.register(this._instantiationService.createInstance(a.BufferService)), this._instantiationService.setService(r.IBufferService, this._bufferService), this._logService = this.register(this._instantiationService.createInstance(o.LogService)), this._instantiationService.setService(r.ILogService, this._logService), this.coreService = this.register(this._instantiationService.createInstance(c.CoreService)), this._instantiationService.setService(r.ICoreService, this.coreService), this.coreMouseService = this.register(this._instantiationService.createInstance(d.CoreMouseService)), this._instantiationService.setService(r.ICoreMouseService, this.coreMouseService), this.unicodeService = this.register(this._instantiationService.createInstance(_.UnicodeService)), this._instantiationService.setService(r.IUnicodeService, this.unicodeService), this._charsetService = this._instantiationService.createInstance(u.CharsetService), this._instantiationService.setService(r.ICharsetService, this._charsetService), this._oscLinkService = this._instantiationService.createInstance(p.OscLinkService), this._instantiationService.setService(r.IOscLinkService, this._oscLinkService), this._inputHandler = this.register(new v.InputHandler(this._bufferService, this._charsetService, this.coreService, this._logService, this.optionsService, this._oscLinkService, this.coreMouseService, this.unicodeService)), this.register((0, l.forwardEvent)(this._inputHandler.onLineFeed, this._onLineFeed)), this.register(this._inputHandler), this.register((0, l.forwardEvent)(this._bufferService.onResize, this._onResize)), this.register((0, l.forwardEvent)(this.coreService.onData, this._onData)), this.register((0, l.forwardEvent)(this.coreService.onBinary, this._onBinary)), this.register(this.coreService.onRequestScrollToBottom((() => this.scrollToBottom()))), this.register(this.coreService.onUserInput((() => this._writeBuffer.handleUserInput()))), this.register(this.optionsService.onMultipleOptionChange(["windowsMode", "windowsPty"], (() => this._handleWindowsPtyOptionChange()))), this.register(this._bufferService.onScroll((e => { + this._onScroll.fire({ + position: this._bufferService.buffer.ydisp, + source: 0 + }), this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom) + }))), this.register(this._inputHandler.onScroll((e => { + this._onScroll.fire({ + position: this._bufferService.buffer.ydisp, + source: 0 + }), this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom) + }))), this._writeBuffer = this.register(new g.WriteBuffer(((e, t) => this._inputHandler.parse(e, t)))), this.register((0, l.forwardEvent)(this._writeBuffer.onWriteParsed, this._onWriteParsed)) + } + write(e, t) { + this._writeBuffer.write(e, t) + } + writeSync(e, t) { + this._logService.logLevel <= r.LogLevelEnum.WARN && !m && (this._logService.warn("writeSync is unreliable and will be removed soon."), m = !0), this._writeBuffer.writeSync(e, t) + } + input(e, t = !0) { + this.coreService.triggerDataEvent(e, t) + } + resize(e, t) { + isNaN(e) || isNaN(t) || (e = Math.max(e, a.MINIMUM_COLS), t = Math.max(t, a.MINIMUM_ROWS), this._bufferService.resize(e, t)) + } + scroll(e, t = !1) { + this._bufferService.scroll(e, t) + } + scrollLines(e, t, i) { + this._bufferService.scrollLines(e, t, i) + } + scrollPages(e) { + this.scrollLines(e * (this.rows - 1)) + } + scrollToTop() { + this.scrollLines(-this._bufferService.buffer.ydisp) + } + scrollToBottom() { + this.scrollLines(this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp) + } + scrollToLine(e) { + const t = e - this._bufferService.buffer.ydisp; + 0 !== t && this.scrollLines(t) + } + registerEscHandler(e, t) { + return this._inputHandler.registerEscHandler(e, t) + } + registerDcsHandler(e, t) { + return this._inputHandler.registerDcsHandler(e, t) + } + registerCsiHandler(e, t) { + return this._inputHandler.registerCsiHandler(e, t) + } + registerOscHandler(e, t) { + return this._inputHandler.registerOscHandler(e, t) + } + _setup() { + this._handleWindowsPtyOptionChange() + } + reset() { + this._inputHandler.reset(), this._bufferService.reset(), this._charsetService.reset(), this.coreService.reset(), this.coreMouseService.reset() + } + _handleWindowsPtyOptionChange() { + let e = !1; + const t = this.optionsService.rawOptions.windowsPty; + t && void 0 !== t.buildNumber && void 0 !== t.buildNumber ? e = !!("conpty" === t.backend && t.buildNumber < 21376) : this.optionsService.rawOptions.windowsMode && (e = !0), e ? this._enableWindowsWrappingHeuristics() : this._windowsWrappingHeuristics.clear() + } + _enableWindowsWrappingHeuristics() { + if (!this._windowsWrappingHeuristics.value) { + const e = []; + e.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null, this._bufferService))), e.push(this.registerCsiHandler({ + final: "H" + }, (() => ((0, f.updateWindowsModeWrappedState)(this._bufferService), !1)))), this._windowsWrappingHeuristics.value = (0, s.toDisposable)((() => { + for (const t of e) t.dispose() + })) + } + } + } + t.CoreTerminal = C + }, + 8460: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class { + constructor() { + this._listeners = [], this._disposed = !1 + } + get event() { + return this._event || (this._event = e => (this._listeners.push(e), { + dispose: () => { + if (!this._disposed) + for (let t = 0; t < this._listeners.length; t++) + if (this._listeners[t] === e) return void this._listeners.splice(t, 1) + } + })), this._event + } + fire(e, t) { + const i = []; + for (let e = 0; e < this._listeners.length; e++) i.push(this._listeners[e]); + for (let s = 0; s < i.length; s++) i[s].call(void 0, e, t) + } + dispose() { + this.clearListeners(), this._disposed = !0 + } + clearListeners() { + this._listeners && (this._listeners.length = 0) + } + }, t.forwardEvent = function(e, t) { + return e((e => t.fire(e))) + }, t.runAndSubscribe = function(e, t) { + return t(void 0), e((e => t(e))) + } + }, + 5435: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.InputHandler = t.WindowsOptionsReportType = void 0; + const n = i(2584), + o = i(7116), + a = i(2015), + h = i(844), + c = i(482), + l = i(8437), + d = i(8460), + _ = i(643), + u = i(511), + f = i(3734), + v = i(2585), + g = i(1480), + p = i(6242), + m = i(6351), + C = i(5941), + S = { + "(": 0, + ")": 1, + "*": 2, + "+": 3, + "-": 1, + ".": 2 + }, + b = 131072; + + function w(e, t) { + if (e > 24) return t.setWinLines || !1; + switch (e) { + case 1: + return !!t.restoreWin; + case 2: + return !!t.minimizeWin; + case 3: + return !!t.setWinPosition; + case 4: + return !!t.setWinSizePixels; + case 5: + return !!t.raiseWin; + case 6: + return !!t.lowerWin; + case 7: + return !!t.refreshWin; + case 8: + return !!t.setWinSizeChars; + case 9: + return !!t.maximizeWin; + case 10: + return !!t.fullscreenWin; + case 11: + return !!t.getWinState; + case 13: + return !!t.getWinPosition; + case 14: + return !!t.getWinSizePixels; + case 15: + return !!t.getScreenSizePixels; + case 16: + return !!t.getCellSizePixels; + case 18: + return !!t.getWinSizeChars; + case 19: + return !!t.getScreenSizeChars; + case 20: + return !!t.getIconTitle; + case 21: + return !!t.getWinTitle; + case 22: + return !!t.pushTitle; + case 23: + return !!t.popTitle; + case 24: + return !!t.setWinLines + } + return !1 + } + var y; + ! function(e) { + e[e.GET_WIN_SIZE_PIXELS = 0] = "GET_WIN_SIZE_PIXELS", e[e.GET_CELL_SIZE_PIXELS = 1] = "GET_CELL_SIZE_PIXELS" + }(y || (t.WindowsOptionsReportType = y = {})); + let L = 0; + class x extends h.Disposable { + getAttrData() { + return this._curAttrData + } + constructor(e, t, i, s, r, h, _, f, v = new a.EscapeSequenceParser) { + super(), this._bufferService = e, this._charsetService = t, this._coreService = i, this._logService = s, this._optionsService = r, this._oscLinkService = h, this._coreMouseService = _, this._unicodeService = f, this._parser = v, this._parseBuffer = new Uint32Array(4096), this._stringDecoder = new c.StringToUtf32, this._utf8Decoder = new c.Utf8ToUtf32, this._workCell = new u.CellData, this._windowTitle = "", this._iconName = "", this._windowTitleStack = [], this._iconNameStack = [], this._curAttrData = l.DEFAULT_ATTR_DATA.clone(), this._eraseAttrDataInternal = l.DEFAULT_ATTR_DATA.clone(), this._onRequestBell = this.register(new d.EventEmitter), this.onRequestBell = this._onRequestBell.event, this._onRequestRefreshRows = this.register(new d.EventEmitter), this.onRequestRefreshRows = this._onRequestRefreshRows.event, this._onRequestReset = this.register(new d.EventEmitter), this.onRequestReset = this._onRequestReset.event, this._onRequestSendFocus = this.register(new d.EventEmitter), this.onRequestSendFocus = this._onRequestSendFocus.event, this._onRequestSyncScrollBar = this.register(new d.EventEmitter), this.onRequestSyncScrollBar = this._onRequestSyncScrollBar.event, this._onRequestWindowsOptionsReport = this.register(new d.EventEmitter), this.onRequestWindowsOptionsReport = this._onRequestWindowsOptionsReport.event, this._onA11yChar = this.register(new d.EventEmitter), this.onA11yChar = this._onA11yChar.event, this._onA11yTab = this.register(new d.EventEmitter), this.onA11yTab = this._onA11yTab.event, this._onCursorMove = this.register(new d.EventEmitter), this.onCursorMove = this._onCursorMove.event, this._onLineFeed = this.register(new d.EventEmitter), this.onLineFeed = this._onLineFeed.event, this._onScroll = this.register(new d.EventEmitter), this.onScroll = this._onScroll.event, this._onTitleChange = this.register(new d.EventEmitter), this.onTitleChange = this._onTitleChange.event, this._onColor = this.register(new d.EventEmitter), this.onColor = this._onColor.event, this._parseStack = { + paused: !1, + cursorStartX: 0, + cursorStartY: 0, + decodedLength: 0, + position: 0 + }, this._specialColors = [256, 257, 258], this.register(this._parser), this._dirtyRowTracker = new E(this._bufferService), this._activeBuffer = this._bufferService.buffer, this.register(this._bufferService.buffers.onBufferActivate((e => this._activeBuffer = e.activeBuffer))), this._parser.setCsiHandlerFallback(((e, t) => { + this._logService.debug("Unknown CSI code: ", { + identifier: this._parser.identToString(e), + params: t.toArray() + }) + })), this._parser.setEscHandlerFallback((e => { + this._logService.debug("Unknown ESC code: ", { + identifier: this._parser.identToString(e) + }) + })), this._parser.setExecuteHandlerFallback((e => { + this._logService.debug("Unknown EXECUTE code: ", { + code: e + }) + })), this._parser.setOscHandlerFallback(((e, t, i) => { + this._logService.debug("Unknown OSC code: ", { + identifier: e, + action: t, + data: i + }) + })), this._parser.setDcsHandlerFallback(((e, t, i) => { + "HOOK" === t && (i = i.toArray()), this._logService.debug("Unknown DCS code: ", { + identifier: this._parser.identToString(e), + action: t, + payload: i + }) + })), this._parser.setPrintHandler(((e, t, i) => this.print(e, t, i))), this._parser.registerCsiHandler({ + final: "@" + }, (e => this.insertChars(e))), this._parser.registerCsiHandler({ + intermediates: " ", + final: "@" + }, (e => this.scrollLeft(e))), this._parser.registerCsiHandler({ + final: "A" + }, (e => this.cursorUp(e))), this._parser.registerCsiHandler({ + intermediates: " ", + final: "A" + }, (e => this.scrollRight(e))), this._parser.registerCsiHandler({ + final: "B" + }, (e => this.cursorDown(e))), this._parser.registerCsiHandler({ + final: "C" + }, (e => this.cursorForward(e))), this._parser.registerCsiHandler({ + final: "D" + }, (e => this.cursorBackward(e))), this._parser.registerCsiHandler({ + final: "E" + }, (e => this.cursorNextLine(e))), this._parser.registerCsiHandler({ + final: "F" + }, (e => this.cursorPrecedingLine(e))), this._parser.registerCsiHandler({ + final: "G" + }, (e => this.cursorCharAbsolute(e))), this._parser.registerCsiHandler({ + final: "H" + }, (e => this.cursorPosition(e))), this._parser.registerCsiHandler({ + final: "I" + }, (e => this.cursorForwardTab(e))), this._parser.registerCsiHandler({ + final: "J" + }, (e => this.eraseInDisplay(e, !1))), this._parser.registerCsiHandler({ + prefix: "?", + final: "J" + }, (e => this.eraseInDisplay(e, !0))), this._parser.registerCsiHandler({ + final: "K" + }, (e => this.eraseInLine(e, !1))), this._parser.registerCsiHandler({ + prefix: "?", + final: "K" + }, (e => this.eraseInLine(e, !0))), this._parser.registerCsiHandler({ + final: "L" + }, (e => this.insertLines(e))), this._parser.registerCsiHandler({ + final: "M" + }, (e => this.deleteLines(e))), this._parser.registerCsiHandler({ + final: "P" + }, (e => this.deleteChars(e))), this._parser.registerCsiHandler({ + final: "S" + }, (e => this.scrollUp(e))), this._parser.registerCsiHandler({ + final: "T" + }, (e => this.scrollDown(e))), this._parser.registerCsiHandler({ + final: "X" + }, (e => this.eraseChars(e))), this._parser.registerCsiHandler({ + final: "Z" + }, (e => this.cursorBackwardTab(e))), this._parser.registerCsiHandler({ + final: "`" + }, (e => this.charPosAbsolute(e))), this._parser.registerCsiHandler({ + final: "a" + }, (e => this.hPositionRelative(e))), this._parser.registerCsiHandler({ + final: "b" + }, (e => this.repeatPrecedingCharacter(e))), this._parser.registerCsiHandler({ + final: "c" + }, (e => this.sendDeviceAttributesPrimary(e))), this._parser.registerCsiHandler({ + prefix: ">", + final: "c" + }, (e => this.sendDeviceAttributesSecondary(e))), this._parser.registerCsiHandler({ + final: "d" + }, (e => this.linePosAbsolute(e))), this._parser.registerCsiHandler({ + final: "e" + }, (e => this.vPositionRelative(e))), this._parser.registerCsiHandler({ + final: "f" + }, (e => this.hVPosition(e))), this._parser.registerCsiHandler({ + final: "g" + }, (e => this.tabClear(e))), this._parser.registerCsiHandler({ + final: "h" + }, (e => this.setMode(e))), this._parser.registerCsiHandler({ + prefix: "?", + final: "h" + }, (e => this.setModePrivate(e))), this._parser.registerCsiHandler({ + final: "l" + }, (e => this.resetMode(e))), this._parser.registerCsiHandler({ + prefix: "?", + final: "l" + }, (e => this.resetModePrivate(e))), this._parser.registerCsiHandler({ + final: "m" + }, (e => this.charAttributes(e))), this._parser.registerCsiHandler({ + final: "n" + }, (e => this.deviceStatus(e))), this._parser.registerCsiHandler({ + prefix: "?", + final: "n" + }, (e => this.deviceStatusPrivate(e))), this._parser.registerCsiHandler({ + intermediates: "!", + final: "p" + }, (e => this.softReset(e))), this._parser.registerCsiHandler({ + intermediates: " ", + final: "q" + }, (e => this.setCursorStyle(e))), this._parser.registerCsiHandler({ + final: "r" + }, (e => this.setScrollRegion(e))), this._parser.registerCsiHandler({ + final: "s" + }, (e => this.saveCursor(e))), this._parser.registerCsiHandler({ + final: "t" + }, (e => this.windowOptions(e))), this._parser.registerCsiHandler({ + final: "u" + }, (e => this.restoreCursor(e))), this._parser.registerCsiHandler({ + intermediates: "'", + final: "}" + }, (e => this.insertColumns(e))), this._parser.registerCsiHandler({ + intermediates: "'", + final: "~" + }, (e => this.deleteColumns(e))), this._parser.registerCsiHandler({ + intermediates: '"', + final: "q" + }, (e => this.selectProtected(e))), this._parser.registerCsiHandler({ + intermediates: "$", + final: "p" + }, (e => this.requestMode(e, !0))), this._parser.registerCsiHandler({ + prefix: "?", + intermediates: "$", + final: "p" + }, (e => this.requestMode(e, !1))), this._parser.setExecuteHandler(n.C0.BEL, (() => this.bell())), this._parser.setExecuteHandler(n.C0.LF, (() => this.lineFeed())), this._parser.setExecuteHandler(n.C0.VT, (() => this.lineFeed())), this._parser.setExecuteHandler(n.C0.FF, (() => this.lineFeed())), this._parser.setExecuteHandler(n.C0.CR, (() => this.carriageReturn())), this._parser.setExecuteHandler(n.C0.BS, (() => this.backspace())), this._parser.setExecuteHandler(n.C0.HT, (() => this.tab())), this._parser.setExecuteHandler(n.C0.SO, (() => this.shiftOut())), this._parser.setExecuteHandler(n.C0.SI, (() => this.shiftIn())), this._parser.setExecuteHandler(n.C1.IND, (() => this.index())), this._parser.setExecuteHandler(n.C1.NEL, (() => this.nextLine())), this._parser.setExecuteHandler(n.C1.HTS, (() => this.tabSet())), this._parser.registerOscHandler(0, new p.OscHandler((e => (this.setTitle(e), this.setIconName(e), !0)))), this._parser.registerOscHandler(1, new p.OscHandler((e => this.setIconName(e)))), this._parser.registerOscHandler(2, new p.OscHandler((e => this.setTitle(e)))), this._parser.registerOscHandler(4, new p.OscHandler((e => this.setOrReportIndexedColor(e)))), this._parser.registerOscHandler(8, new p.OscHandler((e => this.setHyperlink(e)))), this._parser.registerOscHandler(10, new p.OscHandler((e => this.setOrReportFgColor(e)))), this._parser.registerOscHandler(11, new p.OscHandler((e => this.setOrReportBgColor(e)))), this._parser.registerOscHandler(12, new p.OscHandler((e => this.setOrReportCursorColor(e)))), this._parser.registerOscHandler(104, new p.OscHandler((e => this.restoreIndexedColor(e)))), this._parser.registerOscHandler(110, new p.OscHandler((e => this.restoreFgColor(e)))), this._parser.registerOscHandler(111, new p.OscHandler((e => this.restoreBgColor(e)))), this._parser.registerOscHandler(112, new p.OscHandler((e => this.restoreCursorColor(e)))), this._parser.registerEscHandler({ + final: "7" + }, (() => this.saveCursor())), this._parser.registerEscHandler({ + final: "8" + }, (() => this.restoreCursor())), this._parser.registerEscHandler({ + final: "D" + }, (() => this.index())), this._parser.registerEscHandler({ + final: "E" + }, (() => this.nextLine())), this._parser.registerEscHandler({ + final: "H" + }, (() => this.tabSet())), this._parser.registerEscHandler({ + final: "M" + }, (() => this.reverseIndex())), this._parser.registerEscHandler({ + final: "=" + }, (() => this.keypadApplicationMode())), this._parser.registerEscHandler({ + final: ">" + }, (() => this.keypadNumericMode())), this._parser.registerEscHandler({ + final: "c" + }, (() => this.fullReset())), this._parser.registerEscHandler({ + final: "n" + }, (() => this.setgLevel(2))), this._parser.registerEscHandler({ + final: "o" + }, (() => this.setgLevel(3))), this._parser.registerEscHandler({ + final: "|" + }, (() => this.setgLevel(3))), this._parser.registerEscHandler({ + final: "}" + }, (() => this.setgLevel(2))), this._parser.registerEscHandler({ + final: "~" + }, (() => this.setgLevel(1))), this._parser.registerEscHandler({ + intermediates: "%", + final: "@" + }, (() => this.selectDefaultCharset())), this._parser.registerEscHandler({ + intermediates: "%", + final: "G" + }, (() => this.selectDefaultCharset())); + for (const e in o.CHARSETS) this._parser.registerEscHandler({ + intermediates: "(", + final: e + }, (() => this.selectCharset("(" + e))), this._parser.registerEscHandler({ + intermediates: ")", + final: e + }, (() => this.selectCharset(")" + e))), this._parser.registerEscHandler({ + intermediates: "*", + final: e + }, (() => this.selectCharset("*" + e))), this._parser.registerEscHandler({ + intermediates: "+", + final: e + }, (() => this.selectCharset("+" + e))), this._parser.registerEscHandler({ + intermediates: "-", + final: e + }, (() => this.selectCharset("-" + e))), this._parser.registerEscHandler({ + intermediates: ".", + final: e + }, (() => this.selectCharset("." + e))), this._parser.registerEscHandler({ + intermediates: "/", + final: e + }, (() => this.selectCharset("/" + e))); + this._parser.registerEscHandler({ + intermediates: "#", + final: "8" + }, (() => this.screenAlignmentPattern())), this._parser.setErrorHandler((e => (this._logService.error("Parsing error: ", e), e))), this._parser.registerDcsHandler({ + intermediates: "$", + final: "q" + }, new m.DcsHandler(((e, t) => this.requestStatusString(e, t)))) + } + _preserveStack(e, t, i, s) { + this._parseStack.paused = !0, this._parseStack.cursorStartX = e, this._parseStack.cursorStartY = t, this._parseStack.decodedLength = i, this._parseStack.position = s + } + _logSlowResolvingAsync(e) { + this._logService.logLevel <= v.LogLevelEnum.WARN && Promise.race([e, new Promise(((e, t) => setTimeout((() => t("#SLOW_TIMEOUT")), 5e3)))]).catch((e => { + if ("#SLOW_TIMEOUT" !== e) throw e; + console.warn("async parser handler taking longer than 5000 ms") + })) + } + _getCurrentLinkId() { + return this._curAttrData.extended.urlId + } + parse(e, t) { + let i, s = this._activeBuffer.x, + r = this._activeBuffer.y, + n = 0; + const o = this._parseStack.paused; + if (o) { + if (i = this._parser.parse(this._parseBuffer, this._parseStack.decodedLength, t)) return this._logSlowResolvingAsync(i), i; + s = this._parseStack.cursorStartX, r = this._parseStack.cursorStartY, this._parseStack.paused = !1, e.length > b && (n = this._parseStack.position + b) + } + if (this._logService.logLevel <= v.LogLevelEnum.DEBUG && this._logService.debug("parsing data" + ("string" == typeof e ? ` "${e}"` : ` "${Array.prototype.map.call(e, (e => String.fromCharCode(e))).join("")}"`), "string" == typeof e ? e.split("").map((e => e.charCodeAt(0))) : e), this._parseBuffer.length < e.length && this._parseBuffer.length < b && (this._parseBuffer = new Uint32Array(Math.min(e.length, b))), o || this._dirtyRowTracker.clearRange(), e.length > b) + for (let t = n; t < e.length; t += b) { + const n = t + b < e.length ? t + b : e.length, + o = "string" == typeof e ? this._stringDecoder.decode(e.substring(t, n), this._parseBuffer) : this._utf8Decoder.decode(e.subarray(t, n), this._parseBuffer); + if (i = this._parser.parse(this._parseBuffer, o)) return this._preserveStack(s, r, o, t), this._logSlowResolvingAsync(i), i + } else if (!o) { + const t = "string" == typeof e ? this._stringDecoder.decode(e, this._parseBuffer) : this._utf8Decoder.decode(e, this._parseBuffer); + if (i = this._parser.parse(this._parseBuffer, t)) return this._preserveStack(s, r, t, 0), this._logSlowResolvingAsync(i), i + } this._activeBuffer.x === s && this._activeBuffer.y === r || this._onCursorMove.fire(); + const a = this._dirtyRowTracker.end + (this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp), + h = this._dirtyRowTracker.start + (this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp); + h < this._bufferService.rows && this._onRequestRefreshRows.fire(Math.min(h, this._bufferService.rows - 1), Math.min(a, this._bufferService.rows - 1)) + } + print(e, t, i) { + let s, r; + const n = this._charsetService.charset, + o = this._optionsService.rawOptions.screenReaderMode, + a = this._bufferService.cols, + h = this._coreService.decPrivateModes.wraparound, + d = this._coreService.modes.insertMode, + u = this._curAttrData; + let f = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y); + this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._activeBuffer.x && i - t > 0 && 2 === f.getWidth(this._activeBuffer.x - 1) && f.setCellFromCodepoint(this._activeBuffer.x - 1, 0, 1, u); + let v = this._parser.precedingJoinState; + for (let p = t; p < i; ++p) { + if (s = e[p], s < 127 && n) { + const e = n[String.fromCharCode(s)]; + e && (s = e.charCodeAt(0)) + } + const t = this._unicodeService.charProperties(s, v); + r = g.UnicodeService.extractWidth(t); + const i = g.UnicodeService.extractShouldJoin(t), + m = i ? g.UnicodeService.extractWidth(v) : 0; + if (v = t, o && this._onA11yChar.fire((0, c.stringFromCodePoint)(s)), this._getCurrentLinkId() && this._oscLinkService.addLineToLink(this._getCurrentLinkId(), this._activeBuffer.ybase + this._activeBuffer.y), this._activeBuffer.x + r - m > a) + if (h) { + const e = f; + let t = this._activeBuffer.x - m; + for (this._activeBuffer.x = m, this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData(), !0)) : (this._activeBuffer.y >= this._bufferService.rows && (this._activeBuffer.y = this._bufferService.rows - 1), this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = !0), f = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y), m > 0 && f instanceof l.BufferLine && f.copyCellsFrom(e, t, 0, m, !1); t < a;) e.setCellFromCodepoint(t++, 0, 1, u) + } else if (this._activeBuffer.x = a - 1, 2 === r) continue; + if (i && this._activeBuffer.x) { + const e = f.getWidth(this._activeBuffer.x - 1) ? 1 : 2; + f.addCodepointToCell(this._activeBuffer.x - e, s, r); + for (let e = r - m; --e >= 0;) f.setCellFromCodepoint(this._activeBuffer.x++, 0, 0, u) + } else if (d && (f.insertCells(this._activeBuffer.x, r - m, this._activeBuffer.getNullCell(u)), 2 === f.getWidth(a - 1) && f.setCellFromCodepoint(a - 1, _.NULL_CELL_CODE, _.NULL_CELL_WIDTH, u)), f.setCellFromCodepoint(this._activeBuffer.x++, s, r, u), r > 0) + for (; --r;) f.setCellFromCodepoint(this._activeBuffer.x++, 0, 0, u) + } + this._parser.precedingJoinState = v, this._activeBuffer.x < a && i - t > 0 && 0 === f.getWidth(this._activeBuffer.x) && !f.hasContent(this._activeBuffer.x) && f.setCellFromCodepoint(this._activeBuffer.x, 0, 1, u), this._dirtyRowTracker.markDirty(this._activeBuffer.y) + } + registerCsiHandler(e, t) { + return "t" !== e.final || e.prefix || e.intermediates ? this._parser.registerCsiHandler(e, t) : this._parser.registerCsiHandler(e, (e => !w(e.params[0], this._optionsService.rawOptions.windowOptions) || t(e))) + } + registerDcsHandler(e, t) { + return this._parser.registerDcsHandler(e, new m.DcsHandler(t)) + } + registerEscHandler(e, t) { + return this._parser.registerEscHandler(e, t) + } + registerOscHandler(e, t) { + return this._parser.registerOscHandler(e, new p.OscHandler(t)) + } + bell() { + return this._onRequestBell.fire(), !0 + } + lineFeed() { + return this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._optionsService.rawOptions.convertEol && (this._activeBuffer.x = 0), this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData())) : this._activeBuffer.y >= this._bufferService.rows ? this._activeBuffer.y = this._bufferService.rows - 1 : this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = !1, this._activeBuffer.x >= this._bufferService.cols && this._activeBuffer.x--, this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._onLineFeed.fire(), !0 + } + carriageReturn() { + return this._activeBuffer.x = 0, !0 + } + backspace() { + if (!this._coreService.decPrivateModes.reverseWraparound) return this._restrictCursor(), this._activeBuffer.x > 0 && this._activeBuffer.x--, !0; + if (this._restrictCursor(this._bufferService.cols), this._activeBuffer.x > 0) this._activeBuffer.x--; + else if (0 === this._activeBuffer.x && this._activeBuffer.y > this._activeBuffer.scrollTop && this._activeBuffer.y <= this._activeBuffer.scrollBottom && this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)?.isWrapped) { + this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = !1, this._activeBuffer.y--, this._activeBuffer.x = this._bufferService.cols - 1; + const e = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y); + e.hasWidth(this._activeBuffer.x) && !e.hasContent(this._activeBuffer.x) && this._activeBuffer.x-- + } + return this._restrictCursor(), !0 + } + tab() { + if (this._activeBuffer.x >= this._bufferService.cols) return !0; + const e = this._activeBuffer.x; + return this._activeBuffer.x = this._activeBuffer.nextStop(), this._optionsService.rawOptions.screenReaderMode && this._onA11yTab.fire(this._activeBuffer.x - e), !0 + } + shiftOut() { + return this._charsetService.setgLevel(1), !0 + } + shiftIn() { + return this._charsetService.setgLevel(0), !0 + } + _restrictCursor(e = this._bufferService.cols - 1) { + this._activeBuffer.x = Math.min(e, Math.max(0, this._activeBuffer.x)), this._activeBuffer.y = this._coreService.decPrivateModes.origin ? Math.min(this._activeBuffer.scrollBottom, Math.max(this._activeBuffer.scrollTop, this._activeBuffer.y)) : Math.min(this._bufferService.rows - 1, Math.max(0, this._activeBuffer.y)), this._dirtyRowTracker.markDirty(this._activeBuffer.y) + } + _setCursor(e, t) { + this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._coreService.decPrivateModes.origin ? (this._activeBuffer.x = e, this._activeBuffer.y = this._activeBuffer.scrollTop + t) : (this._activeBuffer.x = e, this._activeBuffer.y = t), this._restrictCursor(), this._dirtyRowTracker.markDirty(this._activeBuffer.y) + } + _moveCursor(e, t) { + this._restrictCursor(), this._setCursor(this._activeBuffer.x + e, this._activeBuffer.y + t) + } + cursorUp(e) { + const t = this._activeBuffer.y - this._activeBuffer.scrollTop; + return t >= 0 ? this._moveCursor(0, -Math.min(t, e.params[0] || 1)) : this._moveCursor(0, -(e.params[0] || 1)), !0 + } + cursorDown(e) { + const t = this._activeBuffer.scrollBottom - this._activeBuffer.y; + return t >= 0 ? this._moveCursor(0, Math.min(t, e.params[0] || 1)) : this._moveCursor(0, e.params[0] || 1), !0 + } + cursorForward(e) { + return this._moveCursor(e.params[0] || 1, 0), !0 + } + cursorBackward(e) { + return this._moveCursor(-(e.params[0] || 1), 0), !0 + } + cursorNextLine(e) { + return this.cursorDown(e), this._activeBuffer.x = 0, !0 + } + cursorPrecedingLine(e) { + return this.cursorUp(e), this._activeBuffer.x = 0, !0 + } + cursorCharAbsolute(e) { + return this._setCursor((e.params[0] || 1) - 1, this._activeBuffer.y), !0 + } + cursorPosition(e) { + return this._setCursor(e.length >= 2 ? (e.params[1] || 1) - 1 : 0, (e.params[0] || 1) - 1), !0 + } + charPosAbsolute(e) { + return this._setCursor((e.params[0] || 1) - 1, this._activeBuffer.y), !0 + } + hPositionRelative(e) { + return this._moveCursor(e.params[0] || 1, 0), !0 + } + linePosAbsolute(e) { + return this._setCursor(this._activeBuffer.x, (e.params[0] || 1) - 1), !0 + } + vPositionRelative(e) { + return this._moveCursor(0, e.params[0] || 1), !0 + } + hVPosition(e) { + return this.cursorPosition(e), !0 + } + tabClear(e) { + const t = e.params[0]; + return 0 === t ? delete this._activeBuffer.tabs[this._activeBuffer.x] : 3 === t && (this._activeBuffer.tabs = {}), !0 + } + cursorForwardTab(e) { + if (this._activeBuffer.x >= this._bufferService.cols) return !0; + let t = e.params[0] || 1; + for (; t--;) this._activeBuffer.x = this._activeBuffer.nextStop(); + return !0 + } + cursorBackwardTab(e) { + if (this._activeBuffer.x >= this._bufferService.cols) return !0; + let t = e.params[0] || 1; + for (; t--;) this._activeBuffer.x = this._activeBuffer.prevStop(); + return !0 + } + selectProtected(e) { + const t = e.params[0]; + return 1 === t && (this._curAttrData.bg |= 536870912), 2 !== t && 0 !== t || (this._curAttrData.bg &= -536870913), !0 + } + _eraseInBufferLine(e, t, i, s = !1, r = !1) { + const n = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); + n.replaceCells(t, i, this._activeBuffer.getNullCell(this._eraseAttrData()), r), s && (n.isWrapped = !1) + } + _resetBufferLine(e, t = !1) { + const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); + i && (i.fill(this._activeBuffer.getNullCell(this._eraseAttrData()), t), this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase + e), i.isWrapped = !1) + } + eraseInDisplay(e, t = !1) { + let i; + switch (this._restrictCursor(this._bufferService.cols), e.params[0]) { + case 0: + for (i = this._activeBuffer.y, this._dirtyRowTracker.markDirty(i), this._eraseInBufferLine(i++, this._activeBuffer.x, this._bufferService.cols, 0 === this._activeBuffer.x, t); i < this._bufferService.rows; i++) this._resetBufferLine(i, t); + this._dirtyRowTracker.markDirty(i); + break; + case 1: + for (i = this._activeBuffer.y, this._dirtyRowTracker.markDirty(i), this._eraseInBufferLine(i, 0, this._activeBuffer.x + 1, !0, t), this._activeBuffer.x + 1 >= this._bufferService.cols && (this._activeBuffer.lines.get(i + 1).isWrapped = !1); i--;) this._resetBufferLine(i, t); + this._dirtyRowTracker.markDirty(0); + break; + case 2: + for (i = this._bufferService.rows, this._dirtyRowTracker.markDirty(i - 1); i--;) this._resetBufferLine(i, t); + this._dirtyRowTracker.markDirty(0); + break; + case 3: + const e = this._activeBuffer.lines.length - this._bufferService.rows; + e > 0 && (this._activeBuffer.lines.trimStart(e), this._activeBuffer.ybase = Math.max(this._activeBuffer.ybase - e, 0), this._activeBuffer.ydisp = Math.max(this._activeBuffer.ydisp - e, 0), this._onScroll.fire(0)) + } + return !0 + } + eraseInLine(e, t = !1) { + switch (this._restrictCursor(this._bufferService.cols), e.params[0]) { + case 0: + this._eraseInBufferLine(this._activeBuffer.y, this._activeBuffer.x, this._bufferService.cols, 0 === this._activeBuffer.x, t); + break; + case 1: + this._eraseInBufferLine(this._activeBuffer.y, 0, this._activeBuffer.x + 1, !1, t); + break; + case 2: + this._eraseInBufferLine(this._activeBuffer.y, 0, this._bufferService.cols, !0, t) + } + return this._dirtyRowTracker.markDirty(this._activeBuffer.y), !0 + } + insertLines(e) { + this._restrictCursor(); + let t = e.params[0] || 1; + if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; + const i = this._activeBuffer.ybase + this._activeBuffer.y, + s = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom, + r = this._bufferService.rows - 1 + this._activeBuffer.ybase - s + 1; + for (; t--;) this._activeBuffer.lines.splice(r - 1, 1), this._activeBuffer.lines.splice(i, 0, this._activeBuffer.getBlankLine(this._eraseAttrData())); + return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom), this._activeBuffer.x = 0, !0 + } + deleteLines(e) { + this._restrictCursor(); + let t = e.params[0] || 1; + if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; + const i = this._activeBuffer.ybase + this._activeBuffer.y; + let s; + for (s = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom, s = this._bufferService.rows - 1 + this._activeBuffer.ybase - s; t--;) this._activeBuffer.lines.splice(i, 1), this._activeBuffer.lines.splice(s, 0, this._activeBuffer.getBlankLine(this._eraseAttrData())); + return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom), this._activeBuffer.x = 0, !0 + } + insertChars(e) { + this._restrictCursor(); + const t = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y); + return t && (t.insertCells(this._activeBuffer.x, e.params[0] || 1, this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), !0 + } + deleteChars(e) { + this._restrictCursor(); + const t = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y); + return t && (t.deleteCells(this._activeBuffer.x, e.params[0] || 1, this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), !0 + } + scrollUp(e) { + let t = e.params[0] || 1; + for (; t--;) this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 1), this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 0, this._activeBuffer.getBlankLine(this._eraseAttrData())); + return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 + } + scrollDown(e) { + let t = e.params[0] || 1; + for (; t--;) this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 1), this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 0, this._activeBuffer.getBlankLine(l.DEFAULT_ATTR_DATA)); + return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 + } + scrollLeft(e) { + if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; + const t = e.params[0] || 1; + for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) { + const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); + i.deleteCells(0, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1 + } + return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 + } + scrollRight(e) { + if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; + const t = e.params[0] || 1; + for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) { + const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); + i.insertCells(0, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1 + } + return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 + } + insertColumns(e) { + if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; + const t = e.params[0] || 1; + for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) { + const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); + i.insertCells(this._activeBuffer.x, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1 + } + return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 + } + deleteColumns(e) { + if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0; + const t = e.params[0] || 1; + for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) { + const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e); + i.deleteCells(this._activeBuffer.x, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1 + } + return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0 + } + eraseChars(e) { + this._restrictCursor(); + const t = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y); + return t && (t.replaceCells(this._activeBuffer.x, this._activeBuffer.x + (e.params[0] || 1), this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), !0 + } + repeatPrecedingCharacter(e) { + const t = this._parser.precedingJoinState; + if (!t) return !0; + const i = e.params[0] || 1, + s = g.UnicodeService.extractWidth(t), + r = this._activeBuffer.x - s, + n = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).getString(r), + o = new Uint32Array(n.length * i); + let a = 0; + for (let e = 0; e < n.length;) { + const t = n.codePointAt(e) || 0; + o[a++] = t, e += t > 65535 ? 2 : 1 + } + let h = a; + for (let e = 1; e < i; ++e) o.copyWithin(h, 0, a), h += a; + return this.print(o, 0, h), !0 + } + sendDeviceAttributesPrimary(e) { + return e.params[0] > 0 || (this._is("xterm") || this._is("rxvt-unicode") || this._is("screen") ? this._coreService.triggerDataEvent(n.C0.ESC + "[?1;2c") : this._is("linux") && this._coreService.triggerDataEvent(n.C0.ESC + "[?6c")), !0 + } + sendDeviceAttributesSecondary(e) { + return e.params[0] > 0 || (this._is("xterm") ? this._coreService.triggerDataEvent(n.C0.ESC + "[>0;276;0c") : this._is("rxvt-unicode") ? this._coreService.triggerDataEvent(n.C0.ESC + "[>85;95;0c") : this._is("linux") ? this._coreService.triggerDataEvent(e.params[0] + "c") : this._is("screen") && this._coreService.triggerDataEvent(n.C0.ESC + "[>83;40003;0c")), !0 + } + _is(e) { + return 0 === (this._optionsService.rawOptions.termName + "").indexOf(e) + } + setMode(e) { + for (let t = 0; t < e.length; t++) switch (e.params[t]) { + case 4: + this._coreService.modes.insertMode = !0; + break; + case 20: + this._optionsService.options.convertEol = !0 + } + return !0 + } + setModePrivate(e) { + for (let t = 0; t < e.length; t++) switch (e.params[t]) { + case 1: + this._coreService.decPrivateModes.applicationCursorKeys = !0; + break; + case 2: + this._charsetService.setgCharset(0, o.DEFAULT_CHARSET), this._charsetService.setgCharset(1, o.DEFAULT_CHARSET), this._charsetService.setgCharset(2, o.DEFAULT_CHARSET), this._charsetService.setgCharset(3, o.DEFAULT_CHARSET); + break; + case 3: + this._optionsService.rawOptions.windowOptions.setWinLines && (this._bufferService.resize(132, this._bufferService.rows), this._onRequestReset.fire()); + break; + case 6: + this._coreService.decPrivateModes.origin = !0, this._setCursor(0, 0); + break; + case 7: + this._coreService.decPrivateModes.wraparound = !0; + break; + case 12: + this._optionsService.options.cursorBlink = !0; + break; + case 45: + this._coreService.decPrivateModes.reverseWraparound = !0; + break; + case 66: + this._logService.debug("Serial port requested application keypad."), this._coreService.decPrivateModes.applicationKeypad = !0, this._onRequestSyncScrollBar.fire(); + break; + case 9: + this._coreMouseService.activeProtocol = "X10"; + break; + case 1e3: + this._coreMouseService.activeProtocol = "VT200"; + break; + case 1002: + this._coreMouseService.activeProtocol = "DRAG"; + break; + case 1003: + this._coreMouseService.activeProtocol = "ANY"; + break; + case 1004: + this._coreService.decPrivateModes.sendFocus = !0, this._onRequestSendFocus.fire(); + break; + case 1005: + this._logService.debug("DECSET 1005 not supported (see #2507)"); + break; + case 1006: + this._coreMouseService.activeEncoding = "SGR"; + break; + case 1015: + this._logService.debug("DECSET 1015 not supported (see #2507)"); + break; + case 1016: + this._coreMouseService.activeEncoding = "SGR_PIXELS"; + break; + case 25: + this._coreService.isCursorHidden = !1; + break; + case 1048: + this.saveCursor(); + break; + case 1049: + this.saveCursor(); + case 47: + case 1047: + this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()), this._coreService.isCursorInitialized = !0, this._onRequestRefreshRows.fire(0, this._bufferService.rows - 1), this._onRequestSyncScrollBar.fire(); + break; + case 2004: + this._coreService.decPrivateModes.bracketedPasteMode = !0 + } + return !0 + } + resetMode(e) { + for (let t = 0; t < e.length; t++) switch (e.params[t]) { + case 4: + this._coreService.modes.insertMode = !1; + break; + case 20: + this._optionsService.options.convertEol = !1 + } + return !0 + } + resetModePrivate(e) { + for (let t = 0; t < e.length; t++) switch (e.params[t]) { + case 1: + this._coreService.decPrivateModes.applicationCursorKeys = !1; + break; + case 3: + this._optionsService.rawOptions.windowOptions.setWinLines && (this._bufferService.resize(80, this._bufferService.rows), this._onRequestReset.fire()); + break; + case 6: + this._coreService.decPrivateModes.origin = !1, this._setCursor(0, 0); + break; + case 7: + this._coreService.decPrivateModes.wraparound = !1; + break; + case 12: + this._optionsService.options.cursorBlink = !1; + break; + case 45: + this._coreService.decPrivateModes.reverseWraparound = !1; + break; + case 66: + this._logService.debug("Switching back to normal keypad."), this._coreService.decPrivateModes.applicationKeypad = !1, this._onRequestSyncScrollBar.fire(); + break; + case 9: + case 1e3: + case 1002: + case 1003: + this._coreMouseService.activeProtocol = "NONE"; + break; + case 1004: + this._coreService.decPrivateModes.sendFocus = !1; + break; + case 1005: + this._logService.debug("DECRST 1005 not supported (see #2507)"); + break; + case 1006: + case 1016: + this._coreMouseService.activeEncoding = "DEFAULT"; + break; + case 1015: + this._logService.debug("DECRST 1015 not supported (see #2507)"); + break; + case 25: + this._coreService.isCursorHidden = !0; + break; + case 1048: + this.restoreCursor(); + break; + case 1049: + case 47: + case 1047: + this._bufferService.buffers.activateNormalBuffer(), 1049 === e.params[t] && this.restoreCursor(), this._coreService.isCursorInitialized = !0, this._onRequestRefreshRows.fire(0, this._bufferService.rows - 1), this._onRequestSyncScrollBar.fire(); + break; + case 2004: + this._coreService.decPrivateModes.bracketedPasteMode = !1 + } + return !0 + } + requestMode(e, t) { + const i = this._coreService.decPrivateModes, + { + activeProtocol: s, + activeEncoding: r + } = this._coreMouseService, + o = this._coreService, + { + buffers: a, + cols: h + } = this._bufferService, + { + active: c, + alt: l + } = a, + d = this._optionsService.rawOptions, + _ = e => e ? 1 : 2, + u = e.params[0]; + return f = u, v = t ? 2 === u ? 4 : 4 === u ? _(o.modes.insertMode) : 12 === u ? 3 : 20 === u ? _(d.convertEol) : 0 : 1 === u ? _(i.applicationCursorKeys) : 3 === u ? d.windowOptions.setWinLines ? 80 === h ? 2 : 132 === h ? 1 : 0 : 0 : 6 === u ? _(i.origin) : 7 === u ? _(i.wraparound) : 8 === u ? 3 : 9 === u ? _("X10" === s) : 12 === u ? _(d.cursorBlink) : 25 === u ? _(!o.isCursorHidden) : 45 === u ? _(i.reverseWraparound) : 66 === u ? _(i.applicationKeypad) : 67 === u ? 4 : 1e3 === u ? _("VT200" === s) : 1002 === u ? _("DRAG" === s) : 1003 === u ? _("ANY" === s) : 1004 === u ? _(i.sendFocus) : 1005 === u ? 4 : 1006 === u ? _("SGR" === r) : 1015 === u ? 4 : 1016 === u ? _("SGR_PIXELS" === r) : 1048 === u ? 1 : 47 === u || 1047 === u || 1049 === u ? _(c === l) : 2004 === u ? _(i.bracketedPasteMode) : 0, o.triggerDataEvent(`${n.C0.ESC}[${t ? "" : "?"}${f};${v}$y`), !0; + var f, v + } + _updateAttrColor(e, t, i, s, r) { + return 2 === t ? (e |= 50331648, e &= -16777216, e |= f.AttributeData.fromColorRGB([i, s, r])) : 5 === t && (e &= -50331904, e |= 33554432 | 255 & i), e + } + _extractColor(e, t, i) { + const s = [0, 0, -1, 0, 0, 0]; + let r = 0, + n = 0; + do { + if (s[n + r] = e.params[t + n], e.hasSubParams(t + n)) { + const i = e.getSubParams(t + n); + let o = 0; + do { + 5 === s[1] && (r = 1), s[n + o + 1 + r] = i[o] + } while (++o < i.length && o + n + 1 + r < s.length); + break + } + if (5 === s[1] && n + r >= 2 || 2 === s[1] && n + r >= 5) break; + s[1] && (r = 1) + } while (++n + t < e.length && n + r < s.length); + for (let e = 2; e < s.length; ++e) - 1 === s[e] && (s[e] = 0); + switch (s[0]) { + case 38: + i.fg = this._updateAttrColor(i.fg, s[1], s[3], s[4], s[5]); + break; + case 48: + i.bg = this._updateAttrColor(i.bg, s[1], s[3], s[4], s[5]); + break; + case 58: + i.extended = i.extended.clone(), i.extended.underlineColor = this._updateAttrColor(i.extended.underlineColor, s[1], s[3], s[4], s[5]) + } + return n + } + _processUnderline(e, t) { + t.extended = t.extended.clone(), (!~e || e > 5) && (e = 1), t.extended.underlineStyle = e, t.fg |= 268435456, 0 === e && (t.fg &= -268435457), t.updateExtended() + } + _processSGR0(e) { + e.fg = l.DEFAULT_ATTR_DATA.fg, e.bg = l.DEFAULT_ATTR_DATA.bg, e.extended = e.extended.clone(), e.extended.underlineStyle = 0, e.extended.underlineColor &= -67108864, e.updateExtended() + } + charAttributes(e) { + if (1 === e.length && 0 === e.params[0]) return this._processSGR0(this._curAttrData), !0; + const t = e.length; + let i; + const s = this._curAttrData; + for (let r = 0; r < t; r++) i = e.params[r], i >= 30 && i <= 37 ? (s.fg &= -50331904, s.fg |= 16777216 | i - 30) : i >= 40 && i <= 47 ? (s.bg &= -50331904, s.bg |= 16777216 | i - 40) : i >= 90 && i <= 97 ? (s.fg &= -50331904, s.fg |= 16777224 | i - 90) : i >= 100 && i <= 107 ? (s.bg &= -50331904, s.bg |= 16777224 | i - 100) : 0 === i ? this._processSGR0(s) : 1 === i ? s.fg |= 134217728 : 3 === i ? s.bg |= 67108864 : 4 === i ? (s.fg |= 268435456, this._processUnderline(e.hasSubParams(r) ? e.getSubParams(r)[0] : 1, s)) : 5 === i ? s.fg |= 536870912 : 7 === i ? s.fg |= 67108864 : 8 === i ? s.fg |= 1073741824 : 9 === i ? s.fg |= 2147483648 : 2 === i ? s.bg |= 134217728 : 21 === i ? this._processUnderline(2, s) : 22 === i ? (s.fg &= -134217729, s.bg &= -134217729) : 23 === i ? s.bg &= -67108865 : 24 === i ? (s.fg &= -268435457, this._processUnderline(0, s)) : 25 === i ? s.fg &= -536870913 : 27 === i ? s.fg &= -67108865 : 28 === i ? s.fg &= -1073741825 : 29 === i ? s.fg &= 2147483647 : 39 === i ? (s.fg &= -67108864, s.fg |= 16777215 & l.DEFAULT_ATTR_DATA.fg) : 49 === i ? (s.bg &= -67108864, s.bg |= 16777215 & l.DEFAULT_ATTR_DATA.bg) : 38 === i || 48 === i || 58 === i ? r += this._extractColor(e, r, s) : 53 === i ? s.bg |= 1073741824 : 55 === i ? s.bg &= -1073741825 : 59 === i ? (s.extended = s.extended.clone(), s.extended.underlineColor = -1, s.updateExtended()) : 100 === i ? (s.fg &= -67108864, s.fg |= 16777215 & l.DEFAULT_ATTR_DATA.fg, s.bg &= -67108864, s.bg |= 16777215 & l.DEFAULT_ATTR_DATA.bg) : this._logService.debug("Unknown SGR attribute: %d.", i); + return !0 + } + deviceStatus(e) { + switch (e.params[0]) { + case 5: + this._coreService.triggerDataEvent(`${n.C0.ESC}[0n`); + break; + case 6: + const e = this._activeBuffer.y + 1, + t = this._activeBuffer.x + 1; + this._coreService.triggerDataEvent(`${n.C0.ESC}[${e};${t}R`) + } + return !0 + } + deviceStatusPrivate(e) { + if (6 === e.params[0]) { + const e = this._activeBuffer.y + 1, + t = this._activeBuffer.x + 1; + this._coreService.triggerDataEvent(`${n.C0.ESC}[?${e};${t}R`) + } + return !0 + } + softReset(e) { + return this._coreService.isCursorHidden = !1, this._onRequestSyncScrollBar.fire(), this._activeBuffer.scrollTop = 0, this._activeBuffer.scrollBottom = this._bufferService.rows - 1, this._curAttrData = l.DEFAULT_ATTR_DATA.clone(), this._coreService.reset(), this._charsetService.reset(), this._activeBuffer.savedX = 0, this._activeBuffer.savedY = this._activeBuffer.ybase, this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg, this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg, this._activeBuffer.savedCharset = this._charsetService.charset, this._coreService.decPrivateModes.origin = !1, !0 + } + setCursorStyle(e) { + const t = e.params[0] || 1; + switch (t) { + case 1: + case 2: + this._optionsService.options.cursorStyle = "block"; + break; + case 3: + case 4: + this._optionsService.options.cursorStyle = "underline"; + break; + case 5: + case 6: + this._optionsService.options.cursorStyle = "bar" + } + const i = t % 2 == 1; + return this._optionsService.options.cursorBlink = i, !0 + } + setScrollRegion(e) { + const t = e.params[0] || 1; + let i; + return (e.length < 2 || (i = e.params[1]) > this._bufferService.rows || 0 === i) && (i = this._bufferService.rows), i > t && (this._activeBuffer.scrollTop = t - 1, this._activeBuffer.scrollBottom = i - 1, this._setCursor(0, 0)), !0 + } + windowOptions(e) { + if (!w(e.params[0], this._optionsService.rawOptions.windowOptions)) return !0; + const t = e.length > 1 ? e.params[1] : 0; + switch (e.params[0]) { + case 14: + 2 !== t && this._onRequestWindowsOptionsReport.fire(y.GET_WIN_SIZE_PIXELS); + break; + case 16: + this._onRequestWindowsOptionsReport.fire(y.GET_CELL_SIZE_PIXELS); + break; + case 18: + this._bufferService && this._coreService.triggerDataEvent(`${n.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`); + break; + case 22: + 0 !== t && 2 !== t || (this._windowTitleStack.push(this._windowTitle), this._windowTitleStack.length > 10 && this._windowTitleStack.shift()), 0 !== t && 1 !== t || (this._iconNameStack.push(this._iconName), this._iconNameStack.length > 10 && this._iconNameStack.shift()); + break; + case 23: + 0 !== t && 2 !== t || this._windowTitleStack.length && this.setTitle(this._windowTitleStack.pop()), 0 !== t && 1 !== t || this._iconNameStack.length && this.setIconName(this._iconNameStack.pop()) + } + return !0 + } + saveCursor(e) { + return this._activeBuffer.savedX = this._activeBuffer.x, this._activeBuffer.savedY = this._activeBuffer.ybase + this._activeBuffer.y, this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg, this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg, this._activeBuffer.savedCharset = this._charsetService.charset, !0 + } + restoreCursor(e) { + return this._activeBuffer.x = this._activeBuffer.savedX || 0, this._activeBuffer.y = Math.max(this._activeBuffer.savedY - this._activeBuffer.ybase, 0), this._curAttrData.fg = this._activeBuffer.savedCurAttrData.fg, this._curAttrData.bg = this._activeBuffer.savedCurAttrData.bg, this._charsetService.charset = this._savedCharset, this._activeBuffer.savedCharset && (this._charsetService.charset = this._activeBuffer.savedCharset), this._restrictCursor(), !0 + } + setTitle(e) { + return this._windowTitle = e, this._onTitleChange.fire(e), !0 + } + setIconName(e) { + return this._iconName = e, !0 + } + setOrReportIndexedColor(e) { + const t = [], + i = e.split(";"); + for (; i.length > 1;) { + const e = i.shift(), + s = i.shift(); + if (/^\d+$/.exec(e)) { + const i = parseInt(e); + if (R(i)) + if ("?" === s) t.push({ + type: 0, + index: i + }); + else { + const e = (0, C.parseColor)(s); + e && t.push({ + type: 1, + index: i, + color: e + }) + } + } + } + return t.length && this._onColor.fire(t), !0 + } + setHyperlink(e) { + const t = e.split(";"); + return !(t.length < 2) && (t[1] ? this._createHyperlink(t[0], t[1]) : !t[0] && this._finishHyperlink()) + } + _createHyperlink(e, t) { + this._getCurrentLinkId() && this._finishHyperlink(); + const i = e.split(":"); + let s; + const r = i.findIndex((e => e.startsWith("id="))); + return -1 !== r && (s = i[r].slice(3) || void 0), this._curAttrData.extended = this._curAttrData.extended.clone(), this._curAttrData.extended.urlId = this._oscLinkService.registerLink({ + id: s, + uri: t + }), this._curAttrData.updateExtended(), !0 + } + _finishHyperlink() { + return this._curAttrData.extended = this._curAttrData.extended.clone(), this._curAttrData.extended.urlId = 0, this._curAttrData.updateExtended(), !0 + } + _setOrReportSpecialColor(e, t) { + const i = e.split(";"); + for (let e = 0; e < i.length && !(t >= this._specialColors.length); ++e, ++t) + if ("?" === i[e]) this._onColor.fire([{ + type: 0, + index: this._specialColors[t] + }]); + else { + const s = (0, C.parseColor)(i[e]); + s && this._onColor.fire([{ + type: 1, + index: this._specialColors[t], + color: s + }]) + } return !0 + } + setOrReportFgColor(e) { + return this._setOrReportSpecialColor(e, 0) + } + setOrReportBgColor(e) { + return this._setOrReportSpecialColor(e, 1) + } + setOrReportCursorColor(e) { + return this._setOrReportSpecialColor(e, 2) + } + restoreIndexedColor(e) { + if (!e) return this._onColor.fire([{ + type: 2 + }]), !0; + const t = [], + i = e.split(";"); + for (let e = 0; e < i.length; ++e) + if (/^\d+$/.exec(i[e])) { + const s = parseInt(i[e]); + R(s) && t.push({ + type: 2, + index: s + }) + } return t.length && this._onColor.fire(t), !0 + } + restoreFgColor(e) { + return this._onColor.fire([{ + type: 2, + index: 256 + }]), !0 + } + restoreBgColor(e) { + return this._onColor.fire([{ + type: 2, + index: 257 + }]), !0 + } + restoreCursorColor(e) { + return this._onColor.fire([{ + type: 2, + index: 258 + }]), !0 + } + nextLine() { + return this._activeBuffer.x = 0, this.index(), !0 + } + keypadApplicationMode() { + return this._logService.debug("Serial port requested application keypad."), this._coreService.decPrivateModes.applicationKeypad = !0, this._onRequestSyncScrollBar.fire(), !0 + } + keypadNumericMode() { + return this._logService.debug("Switching back to normal keypad."), this._coreService.decPrivateModes.applicationKeypad = !1, this._onRequestSyncScrollBar.fire(), !0 + } + selectDefaultCharset() { + return this._charsetService.setgLevel(0), this._charsetService.setgCharset(0, o.DEFAULT_CHARSET), !0 + } + selectCharset(e) { + return 2 !== e.length ? (this.selectDefaultCharset(), !0) : ("/" === e[0] || this._charsetService.setgCharset(S[e[0]], o.CHARSETS[e[1]] || o.DEFAULT_CHARSET), !0) + } + index() { + return this._restrictCursor(), this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData())) : this._activeBuffer.y >= this._bufferService.rows && (this._activeBuffer.y = this._bufferService.rows - 1), this._restrictCursor(), !0 + } + tabSet() { + return this._activeBuffer.tabs[this._activeBuffer.x] = !0, !0 + } + reverseIndex() { + if (this._restrictCursor(), this._activeBuffer.y === this._activeBuffer.scrollTop) { + const e = this._activeBuffer.scrollBottom - this._activeBuffer.scrollTop; + this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase + this._activeBuffer.y, e, 1), this._activeBuffer.lines.set(this._activeBuffer.ybase + this._activeBuffer.y, this._activeBuffer.getBlankLine(this._eraseAttrData())), this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom) + } else this._activeBuffer.y--, this._restrictCursor(); + return !0 + } + fullReset() { + return this._parser.reset(), this._onRequestReset.fire(), !0 + } + reset() { + this._curAttrData = l.DEFAULT_ATTR_DATA.clone(), this._eraseAttrDataInternal = l.DEFAULT_ATTR_DATA.clone() + } + _eraseAttrData() { + return this._eraseAttrDataInternal.bg &= -67108864, this._eraseAttrDataInternal.bg |= 67108863 & this._curAttrData.bg, this._eraseAttrDataInternal + } + setgLevel(e) { + return this._charsetService.setgLevel(e), !0 + } + screenAlignmentPattern() { + const e = new u.CellData; + e.content = 1 << 22 | "E".charCodeAt(0), e.fg = this._curAttrData.fg, e.bg = this._curAttrData.bg, this._setCursor(0, 0); + for (let t = 0; t < this._bufferService.rows; ++t) { + const i = this._activeBuffer.ybase + this._activeBuffer.y + t, + s = this._activeBuffer.lines.get(i); + s && (s.fill(e), s.isWrapped = !1) + } + return this._dirtyRowTracker.markAllDirty(), this._setCursor(0, 0), !0 + } + requestStatusString(e, t) { + const i = this._bufferService.buffer, + s = this._optionsService.rawOptions; + return (e => (this._coreService.triggerDataEvent(`${n.C0.ESC}${e}${n.C0.ESC}\\`), !0))('"q' === e ? `P1$r${this._curAttrData.isProtected() ? 1 : 0}"q` : '"p' === e ? 'P1$r61;1"p' : "r" === e ? `P1$r${i.scrollTop + 1};${i.scrollBottom + 1}r` : "m" === e ? "P1$r0m" : " q" === e ? `P1$r${{ block: 2, underline: 4, bar: 6 }[s.cursorStyle] - (s.cursorBlink ? 1 : 0)} q` : "P0$r") + } + markRangeDirty(e, t) { + this._dirtyRowTracker.markRangeDirty(e, t) + } + } + t.InputHandler = x; + let E = class { + constructor(e) { + this._bufferService = e, this.clearRange() + } + clearRange() { + this.start = this._bufferService.buffer.y, this.end = this._bufferService.buffer.y + } + markDirty(e) { + e < this.start ? this.start = e : e > this.end && (this.end = e) + } + markRangeDirty(e, t) { + e > t && (L = e, e = t, t = L), e < this.start && (this.start = e), t > this.end && (this.end = t) + } + markAllDirty() { + this.markRangeDirty(0, this._bufferService.rows - 1) + } + }; + + function R(e) { + return 0 <= e && e < 256 + } + E = s([r(0, v.IBufferService)], E) + }, + 844: (e, t) => { + function i(e) { + for (const t of e) t.dispose(); + e.length = 0 + } + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.getDisposeArrayDisposable = t.disposeArray = t.toDisposable = t.MutableDisposable = t.Disposable = void 0, t.Disposable = class { + constructor() { + this._disposables = [], this._isDisposed = !1 + } + dispose() { + this._isDisposed = !0; + for (const e of this._disposables) e.dispose(); + this._disposables.length = 0 + } + register(e) { + return this._disposables.push(e), e + } + unregister(e) { + const t = this._disposables.indexOf(e); - 1 !== t && this._disposables.splice(t, 1) + } + }, t.MutableDisposable = class { + constructor() { + this._isDisposed = !1 + } + get value() { + return this._isDisposed ? void 0 : this._value + } + set value(e) { + this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e) + } + clear() { + this.value = void 0 + } + dispose() { + this._isDisposed = !0, this._value?.dispose(), this._value = void 0 + } + }, t.toDisposable = function(e) { + return { + dispose: e + } + }, t.disposeArray = i, t.getDisposeArrayDisposable = function(e) { + return { + dispose: () => i(e) + } + } + }, + 1505: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.FourKeyMap = t.TwoKeyMap = void 0; + class i { + constructor() { + this._data = {} + } + set(e, t, i) { + this._data[e] || (this._data[e] = {}), this._data[e][t] = i + } + get(e, t) { + return this._data[e] ? this._data[e][t] : void 0 + } + clear() { + this._data = {} + } + } + t.TwoKeyMap = i, t.FourKeyMap = class { + constructor() { + this._data = new i + } + set(e, t, s, r, n) { + this._data.get(e, t) || this._data.set(e, t, new i), this._data.get(e, t).set(s, r, n) + } + get(e, t, i, s) { + return this._data.get(e, t)?.get(i, s) + } + clear() { + this._data.clear() + } + } + }, + 6114: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.isChromeOS = t.isLinux = t.isWindows = t.isIphone = t.isIpad = t.isMac = t.getSafariVersion = t.isSafari = t.isLegacyEdge = t.isFirefox = t.isNode = void 0, t.isNode = "undefined" != typeof process && "title" in process; + const i = t.isNode ? "node" : navigator.userAgent, + s = t.isNode ? "node" : navigator.platform; + t.isFirefox = i.includes("Firefox"), t.isLegacyEdge = i.includes("Edge"), t.isSafari = /^((?!chrome|android).)*safari/i.test(i), t.getSafariVersion = function() { + if (!t.isSafari) return 0; + const e = i.match(/Version\/(\d+)/); + return null === e || e.length < 2 ? 0 : parseInt(e[1]) + }, t.isMac = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(s), t.isIpad = "iPad" === s, t.isIphone = "iPhone" === s, t.isWindows = ["Windows", "Win16", "Win32", "WinCE"].includes(s), t.isLinux = s.indexOf("Linux") >= 0, t.isChromeOS = /\bCrOS\b/.test(i) + }, + 6106: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.SortedList = void 0; + let i = 0; + t.SortedList = class { + constructor(e) { + this._getKey = e, this._array = [] + } + clear() { + this._array.length = 0 + } + insert(e) { + 0 !== this._array.length ? (i = this._search(this._getKey(e)), this._array.splice(i, 0, e)) : this._array.push(e) + } + delete(e) { + if (0 === this._array.length) return !1; + const t = this._getKey(e); + if (void 0 === t) return !1; + if (i = this._search(t), -1 === i) return !1; + if (this._getKey(this._array[i]) !== t) return !1; + do { + if (this._array[i] === e) return this._array.splice(i, 1), !0 + } while (++i < this._array.length && this._getKey(this._array[i]) === t); + return !1 + }* getKeyIterator(e) { + if (0 !== this._array.length && (i = this._search(e), !(i < 0 || i >= this._array.length) && this._getKey(this._array[i]) === e)) + do { + yield this._array[i] + } while (++i < this._array.length && this._getKey(this._array[i]) === e) + } + forEachByKey(e, t) { + if (0 !== this._array.length && (i = this._search(e), !(i < 0 || i >= this._array.length) && this._getKey(this._array[i]) === e)) + do { + t(this._array[i]) + } while (++i < this._array.length && this._getKey(this._array[i]) === e) + } + values() { + return [...this._array].values() + } + _search(e) { + let t = 0, + i = this._array.length - 1; + for (; i >= t;) { + let s = t + i >> 1; + const r = this._getKey(this._array[s]); + if (r > e) i = s - 1; + else { + if (!(r < e)) { + for (; s > 0 && this._getKey(this._array[s - 1]) === e;) s--; + return s + } + t = s + 1 + } + } + return t + } + } + }, + 7226: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.DebouncedIdleTask = t.IdleTaskQueue = t.PriorityTaskQueue = void 0; + const s = i(6114); + class r { + constructor() { + this._tasks = [], this._i = 0 + } + enqueue(e) { + this._tasks.push(e), this._start() + } + flush() { + for (; this._i < this._tasks.length;) this._tasks[this._i]() || this._i++; + this.clear() + } + clear() { + this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0 + } + _start() { + this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this))) + } + _process(e) { + this._idleCallback = void 0; + let t = 0, + i = 0, + s = e.timeRemaining(), + r = 0; + for (; this._i < this._tasks.length;) { + if (t = Date.now(), this._tasks[this._i]() || this._i++, t = Math.max(1, Date.now() - t), i = Math.max(t, i), r = e.timeRemaining(), 1.5 * i > r) return s - t < -20 && console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s - t))}ms`), void this._start(); + s = r + } + this.clear() + } + } + class n extends r { + _requestCallback(e) { + return setTimeout((() => e(this._createDeadline(16)))) + } + _cancelCallback(e) { + clearTimeout(e) + } + _createDeadline(e) { + const t = Date.now() + e; + return { + timeRemaining: () => Math.max(0, t - Date.now()) + } + } + } + t.PriorityTaskQueue = n, t.IdleTaskQueue = !s.isNode && "requestIdleCallback" in window ? class extends r { + _requestCallback(e) { + return requestIdleCallback(e) + } + _cancelCallback(e) { + cancelIdleCallback(e) + } + } : n, t.DebouncedIdleTask = class { + constructor() { + this._queue = new t.IdleTaskQueue + } + set(e) { + this._queue.clear(), this._queue.enqueue(e) + } + flush() { + this._queue.flush() + } + } + }, + 9282: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.updateWindowsModeWrappedState = void 0; + const s = i(643); + t.updateWindowsModeWrappedState = function(e) { + const t = e.buffer.lines.get(e.buffer.ybase + e.buffer.y - 1), + i = t?.get(e.cols - 1), + r = e.buffer.lines.get(e.buffer.ybase + e.buffer.y); + r && i && (r.isWrapped = i[s.CHAR_DATA_CODE_INDEX] !== s.NULL_CELL_CODE && i[s.CHAR_DATA_CODE_INDEX] !== s.WHITESPACE_CELL_CODE) + } + }, + 3734: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.ExtendedAttrs = t.AttributeData = void 0; + class i { + constructor() { + this.fg = 0, this.bg = 0, this.extended = new s + } + static toColorRGB(e) { + return [e >>> 16 & 255, e >>> 8 & 255, 255 & e] + } + static fromColorRGB(e) { + return (255 & e[0]) << 16 | (255 & e[1]) << 8 | 255 & e[2] + } + clone() { + const e = new i; + return e.fg = this.fg, e.bg = this.bg, e.extended = this.extended.clone(), e + } + isInverse() { + return 67108864 & this.fg + } + isBold() { + return 134217728 & this.fg + } + isUnderline() { + return this.hasExtendedAttrs() && 0 !== this.extended.underlineStyle ? 1 : 268435456 & this.fg + } + isBlink() { + return 536870912 & this.fg + } + isInvisible() { + return 1073741824 & this.fg + } + isItalic() { + return 67108864 & this.bg + } + isDim() { + return 134217728 & this.bg + } + isStrikethrough() { + return 2147483648 & this.fg + } + isProtected() { + return 536870912 & this.bg + } + isOverline() { + return 1073741824 & this.bg + } + getFgColorMode() { + return 50331648 & this.fg + } + getBgColorMode() { + return 50331648 & this.bg + } + isFgRGB() { + return !(50331648 & ~this.fg) + } + isBgRGB() { + return !(50331648 & ~this.bg) + } + isFgPalette() { + return 16777216 == (50331648 & this.fg) || 33554432 == (50331648 & this.fg) + } + isBgPalette() { + return 16777216 == (50331648 & this.bg) || 33554432 == (50331648 & this.bg) + } + isFgDefault() { + return !(50331648 & this.fg) + } + isBgDefault() { + return !(50331648 & this.bg) + } + isAttributeDefault() { + return 0 === this.fg && 0 === this.bg + } + getFgColor() { + switch (50331648 & this.fg) { + case 16777216: + case 33554432: + return 255 & this.fg; + case 50331648: + return 16777215 & this.fg; + default: + return -1 + } + } + getBgColor() { + switch (50331648 & this.bg) { + case 16777216: + case 33554432: + return 255 & this.bg; + case 50331648: + return 16777215 & this.bg; + default: + return -1 + } + } + hasExtendedAttrs() { + return 268435456 & this.bg + } + updateExtended() { + this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456 + } + getUnderlineColor() { + if (268435456 & this.bg && ~this.extended.underlineColor) switch (50331648 & this.extended.underlineColor) { + case 16777216: + case 33554432: + return 255 & this.extended.underlineColor; + case 50331648: + return 16777215 & this.extended.underlineColor; + default: + return this.getFgColor() + } + return this.getFgColor() + } + getUnderlineColorMode() { + return 268435456 & this.bg && ~this.extended.underlineColor ? 50331648 & this.extended.underlineColor : this.getFgColorMode() + } + isUnderlineColorRGB() { + return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & ~this.extended.underlineColor) : this.isFgRGB() + } + isUnderlineColorPalette() { + return 268435456 & this.bg && ~this.extended.underlineColor ? 16777216 == (50331648 & this.extended.underlineColor) || 33554432 == (50331648 & this.extended.underlineColor) : this.isFgPalette() + } + isUnderlineColorDefault() { + return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & this.extended.underlineColor) : this.isFgDefault() + } + getUnderlineStyle() { + return 268435456 & this.fg ? 268435456 & this.bg ? this.extended.underlineStyle : 1 : 0 + } + getUnderlineVariantOffset() { + return this.extended.underlineVariantOffset + } + } + t.AttributeData = i; + class s { + get ext() { + return this._urlId ? -469762049 & this._ext | this.underlineStyle << 26 : this._ext + } + set ext(e) { + this._ext = e + } + get underlineStyle() { + return this._urlId ? 5 : (469762048 & this._ext) >> 26 + } + set underlineStyle(e) { + this._ext &= -469762049, this._ext |= e << 26 & 469762048 + } + get underlineColor() { + return 67108863 & this._ext + } + set underlineColor(e) { + this._ext &= -67108864, this._ext |= 67108863 & e + } + get urlId() { + return this._urlId + } + set urlId(e) { + this._urlId = e + } + get underlineVariantOffset() { + const e = (3758096384 & this._ext) >> 29; + return e < 0 ? 4294967288 ^ e : e + } + set underlineVariantOffset(e) { + this._ext &= 536870911, this._ext |= e << 29 & 3758096384 + } + constructor(e = 0, t = 0) { + this._ext = 0, this._urlId = 0, this._ext = e, this._urlId = t + } + clone() { + return new s(this._ext, this._urlId) + } + isEmpty() { + return 0 === this.underlineStyle && 0 === this._urlId + } + } + t.ExtendedAttrs = s + }, + 9092: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.Buffer = t.MAX_BUFFER_SIZE = void 0; + const s = i(6349), + r = i(7226), + n = i(3734), + o = i(8437), + a = i(4634), + h = i(511), + c = i(643), + l = i(4863), + d = i(7116); + t.MAX_BUFFER_SIZE = 4294967295, t.Buffer = class { + constructor(e, t, i) { + this._hasScrollback = e, this._optionsService = t, this._bufferService = i, this.ydisp = 0, this.ybase = 0, this.y = 0, this.x = 0, this.tabs = {}, this.savedY = 0, this.savedX = 0, this.savedCurAttrData = o.DEFAULT_ATTR_DATA.clone(), this.savedCharset = d.DEFAULT_CHARSET, this.markers = [], this._nullCell = h.CellData.fromCharData([0, c.NULL_CELL_CHAR, c.NULL_CELL_WIDTH, c.NULL_CELL_CODE]), this._whitespaceCell = h.CellData.fromCharData([0, c.WHITESPACE_CELL_CHAR, c.WHITESPACE_CELL_WIDTH, c.WHITESPACE_CELL_CODE]), this._isClearing = !1, this._memoryCleanupQueue = new r.IdleTaskQueue, this._memoryCleanupPosition = 0, this._cols = this._bufferService.cols, this._rows = this._bufferService.rows, this.lines = new s.CircularList(this._getCorrectBufferLength(this._rows)), this.scrollTop = 0, this.scrollBottom = this._rows - 1, this.setupTabStops() + } + getNullCell(e) { + return e ? (this._nullCell.fg = e.fg, this._nullCell.bg = e.bg, this._nullCell.extended = e.extended) : (this._nullCell.fg = 0, this._nullCell.bg = 0, this._nullCell.extended = new n.ExtendedAttrs), this._nullCell + } + getWhitespaceCell(e) { + return e ? (this._whitespaceCell.fg = e.fg, this._whitespaceCell.bg = e.bg, this._whitespaceCell.extended = e.extended) : (this._whitespaceCell.fg = 0, this._whitespaceCell.bg = 0, this._whitespaceCell.extended = new n.ExtendedAttrs), this._whitespaceCell + } + getBlankLine(e, t) { + return new o.BufferLine(this._bufferService.cols, this.getNullCell(e), t) + } + get hasScrollback() { + return this._hasScrollback && this.lines.maxLength > this._rows + } + get isCursorInViewport() { + const e = this.ybase + this.y - this.ydisp; + return e >= 0 && e < this._rows + } + _getCorrectBufferLength(e) { + if (!this._hasScrollback) return e; + const i = e + this._optionsService.rawOptions.scrollback; + return i > t.MAX_BUFFER_SIZE ? t.MAX_BUFFER_SIZE : i + } + fillViewportRows(e) { + if (0 === this.lines.length) { + void 0 === e && (e = o.DEFAULT_ATTR_DATA); + let t = this._rows; + for (; t--;) this.lines.push(this.getBlankLine(e)) + } + } + clear() { + this.ydisp = 0, this.ybase = 0, this.y = 0, this.x = 0, this.lines = new s.CircularList(this._getCorrectBufferLength(this._rows)), this.scrollTop = 0, this.scrollBottom = this._rows - 1, this.setupTabStops() + } + resize(e, t) { + const i = this.getNullCell(o.DEFAULT_ATTR_DATA); + let s = 0; + const r = this._getCorrectBufferLength(t); + if (r > this.lines.maxLength && (this.lines.maxLength = r), this.lines.length > 0) { + if (this._cols < e) + for (let t = 0; t < this.lines.length; t++) s += +this.lines.get(t).resize(e, i); + let n = 0; + if (this._rows < t) + for (let s = this._rows; s < t; s++) this.lines.length < t + this.ybase && (this._optionsService.rawOptions.windowsMode || void 0 !== this._optionsService.rawOptions.windowsPty.backend || void 0 !== this._optionsService.rawOptions.windowsPty.buildNumber ? this.lines.push(new o.BufferLine(e, i)) : this.ybase > 0 && this.lines.length <= this.ybase + this.y + n + 1 ? (this.ybase--, n++, this.ydisp > 0 && this.ydisp--) : this.lines.push(new o.BufferLine(e, i))); + else + for (let e = this._rows; e > t; e--) this.lines.length > t + this.ybase && (this.lines.length > this.ybase + this.y + 1 ? this.lines.pop() : (this.ybase++, this.ydisp++)); + if (r < this.lines.maxLength) { + const e = this.lines.length - r; + e > 0 && (this.lines.trimStart(e), this.ybase = Math.max(this.ybase - e, 0), this.ydisp = Math.max(this.ydisp - e, 0), this.savedY = Math.max(this.savedY - e, 0)), this.lines.maxLength = r + } + this.x = Math.min(this.x, e - 1), this.y = Math.min(this.y, t - 1), n && (this.y += n), this.savedX = Math.min(this.savedX, e - 1), this.scrollTop = 0 + } + if (this.scrollBottom = t - 1, this._isReflowEnabled && (this._reflow(e, t), this._cols > e)) + for (let t = 0; t < this.lines.length; t++) s += +this.lines.get(t).resize(e, i); + this._cols = e, this._rows = t, this._memoryCleanupQueue.clear(), s > .1 * this.lines.length && (this._memoryCleanupPosition = 0, this._memoryCleanupQueue.enqueue((() => this._batchedMemoryCleanup()))) + } + _batchedMemoryCleanup() { + let e = !0; + this._memoryCleanupPosition >= this.lines.length && (this._memoryCleanupPosition = 0, e = !1); + let t = 0; + for (; this._memoryCleanupPosition < this.lines.length;) + if (t += this.lines.get(this._memoryCleanupPosition++).cleanupMemory(), t > 100) return !0; + return e + } + get _isReflowEnabled() { + const e = this._optionsService.rawOptions.windowsPty; + return e && e.buildNumber ? this._hasScrollback && "conpty" === e.backend && e.buildNumber >= 21376 : this._hasScrollback && !this._optionsService.rawOptions.windowsMode + } + _reflow(e, t) { + this._cols !== e && (e > this._cols ? this._reflowLarger(e, t) : this._reflowSmaller(e, t)) + } + _reflowLarger(e, t) { + const i = (0, a.reflowLargerGetLinesToRemove)(this.lines, this._cols, e, this.ybase + this.y, this.getNullCell(o.DEFAULT_ATTR_DATA)); + if (i.length > 0) { + const s = (0, a.reflowLargerCreateNewLayout)(this.lines, i); + (0, a.reflowLargerApplyNewLayout)(this.lines, s.layout), this._reflowLargerAdjustViewport(e, t, s.countRemoved) + } + } + _reflowLargerAdjustViewport(e, t, i) { + const s = this.getNullCell(o.DEFAULT_ATTR_DATA); + let r = i; + for (; r-- > 0;) 0 === this.ybase ? (this.y > 0 && this.y--, this.lines.length < t && this.lines.push(new o.BufferLine(e, s))) : (this.ydisp === this.ybase && this.ydisp--, this.ybase--); + this.savedY = Math.max(this.savedY - i, 0) + } + _reflowSmaller(e, t) { + const i = this.getNullCell(o.DEFAULT_ATTR_DATA), + s = []; + let r = 0; + for (let n = this.lines.length - 1; n >= 0; n--) { + let h = this.lines.get(n); + if (!h || !h.isWrapped && h.getTrimmedLength() <= e) continue; + const c = [h]; + for (; h.isWrapped && n > 0;) h = this.lines.get(--n), c.unshift(h); + const l = this.ybase + this.y; + if (l >= n && l < n + c.length) continue; + const d = c[c.length - 1].getTrimmedLength(), + _ = (0, a.reflowSmallerGetNewLineLengths)(c, this._cols, e), + u = _.length - c.length; + let f; + f = 0 === this.ybase && this.y !== this.lines.length - 1 ? Math.max(0, this.y - this.lines.maxLength + u) : Math.max(0, this.lines.length - this.lines.maxLength + u); + const v = []; + for (let e = 0; e < u; e++) { + const e = this.getBlankLine(o.DEFAULT_ATTR_DATA, !0); + v.push(e) + } + v.length > 0 && (s.push({ + start: n + c.length + r, + newLines: v + }), r += v.length), c.push(...v); + let g = _.length - 1, + p = _[g]; + 0 === p && (g--, p = _[g]); + let m = c.length - u - 1, + C = d; + for (; m >= 0;) { + const e = Math.min(C, p); + if (void 0 === c[g]) break; + if (c[g].copyCellsFrom(c[m], C - e, p - e, e, !0), p -= e, 0 === p && (g--, p = _[g]), C -= e, 0 === C) { + m--; + const e = Math.max(m, 0); + C = (0, a.getWrappedLineTrimmedLength)(c, e, this._cols) + } + } + for (let t = 0; t < c.length; t++) _[t] < e && c[t].setCell(_[t], i); + let S = u - f; + for (; S-- > 0;) 0 === this.ybase ? this.y < t - 1 ? (this.y++, this.lines.pop()) : (this.ybase++, this.ydisp++) : this.ybase < Math.min(this.lines.maxLength, this.lines.length + r) - t && (this.ybase === this.ydisp && this.ydisp++, this.ybase++); + this.savedY = Math.min(this.savedY + u, this.ybase + t - 1) + } + if (s.length > 0) { + const e = [], + t = []; + for (let e = 0; e < this.lines.length; e++) t.push(this.lines.get(e)); + const i = this.lines.length; + let n = i - 1, + o = 0, + a = s[o]; + this.lines.length = Math.min(this.lines.maxLength, this.lines.length + r); + let h = 0; + for (let c = Math.min(this.lines.maxLength - 1, i + r - 1); c >= 0; c--) + if (a && a.start > n + h) { + for (let e = a.newLines.length - 1; e >= 0; e--) this.lines.set(c--, a.newLines[e]); + c++, e.push({ + index: n + 1, + amount: a.newLines.length + }), h += a.newLines.length, a = s[++o] + } else this.lines.set(c, t[n--]); + let c = 0; + for (let t = e.length - 1; t >= 0; t--) e[t].index += c, this.lines.onInsertEmitter.fire(e[t]), c += e[t].amount; + const l = Math.max(0, i + r - this.lines.maxLength); + l > 0 && this.lines.onTrimEmitter.fire(l) + } + } + translateBufferLineToString(e, t, i = 0, s) { + const r = this.lines.get(e); + return r ? r.translateToString(t, i, s) : "" + } + getWrappedRangeForLine(e) { + let t = e, + i = e; + for (; t > 0 && this.lines.get(t).isWrapped;) t--; + for (; i + 1 < this.lines.length && this.lines.get(i + 1).isWrapped;) i++; + return { + first: t, + last: i + } + } + setupTabStops(e) { + for (null != e ? this.tabs[e] || (e = this.prevStop(e)) : (this.tabs = {}, e = 0); e < this._cols; e += this._optionsService.rawOptions.tabStopWidth) this.tabs[e] = !0 + } + prevStop(e) { + for (null == e && (e = this.x); !this.tabs[--e] && e > 0;); + return e >= this._cols ? this._cols - 1 : e < 0 ? 0 : e + } + nextStop(e) { + for (null == e && (e = this.x); !this.tabs[++e] && e < this._cols;); + return e >= this._cols ? this._cols - 1 : e < 0 ? 0 : e + } + clearMarkers(e) { + this._isClearing = !0; + for (let t = 0; t < this.markers.length; t++) this.markers[t].line === e && (this.markers[t].dispose(), this.markers.splice(t--, 1)); + this._isClearing = !1 + } + clearAllMarkers() { + this._isClearing = !0; + for (let e = 0; e < this.markers.length; e++) this.markers[e].dispose(), this.markers.splice(e--, 1); + this._isClearing = !1 + } + addMarker(e) { + const t = new l.Marker(e); + return this.markers.push(t), t.register(this.lines.onTrim((e => { + t.line -= e, t.line < 0 && t.dispose() + }))), t.register(this.lines.onInsert((e => { + t.line >= e.index && (t.line += e.amount) + }))), t.register(this.lines.onDelete((e => { + t.line >= e.index && t.line < e.index + e.amount && t.dispose(), t.line > e.index && (t.line -= e.amount) + }))), t.register(t.onDispose((() => this._removeMarker(t)))), t + } + _removeMarker(e) { + this._isClearing || this.markers.splice(this.markers.indexOf(e), 1) + } + } + }, + 8437: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.BufferLine = t.DEFAULT_ATTR_DATA = void 0; + const s = i(3734), + r = i(511), + n = i(643), + o = i(482); + t.DEFAULT_ATTR_DATA = Object.freeze(new s.AttributeData); + let a = 0; + class h { + constructor(e, t, i = !1) { + this.isWrapped = i, this._combined = {}, this._extendedAttrs = {}, this._data = new Uint32Array(3 * e); + const s = t || r.CellData.fromCharData([0, n.NULL_CELL_CHAR, n.NULL_CELL_WIDTH, n.NULL_CELL_CODE]); + for (let t = 0; t < e; ++t) this.setCell(t, s); + this.length = e + } + get(e) { + const t = this._data[3 * e + 0], + i = 2097151 & t; + return [this._data[3 * e + 1], 2097152 & t ? this._combined[e] : i ? (0, o.stringFromCodePoint)(i) : "", t >> 22, 2097152 & t ? this._combined[e].charCodeAt(this._combined[e].length - 1) : i] + } + set(e, t) { + this._data[3 * e + 1] = t[n.CHAR_DATA_ATTR_INDEX], t[n.CHAR_DATA_CHAR_INDEX].length > 1 ? (this._combined[e] = t[1], this._data[3 * e + 0] = 2097152 | e | t[n.CHAR_DATA_WIDTH_INDEX] << 22) : this._data[3 * e + 0] = t[n.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | t[n.CHAR_DATA_WIDTH_INDEX] << 22 + } + getWidth(e) { + return this._data[3 * e + 0] >> 22 + } + hasWidth(e) { + return 12582912 & this._data[3 * e + 0] + } + getFg(e) { + return this._data[3 * e + 1] + } + getBg(e) { + return this._data[3 * e + 2] + } + hasContent(e) { + return 4194303 & this._data[3 * e + 0] + } + getCodePoint(e) { + const t = this._data[3 * e + 0]; + return 2097152 & t ? this._combined[e].charCodeAt(this._combined[e].length - 1) : 2097151 & t + } + isCombined(e) { + return 2097152 & this._data[3 * e + 0] + } + getString(e) { + const t = this._data[3 * e + 0]; + return 2097152 & t ? this._combined[e] : 2097151 & t ? (0, o.stringFromCodePoint)(2097151 & t) : "" + } + isProtected(e) { + return 536870912 & this._data[3 * e + 2] + } + loadCell(e, t) { + return a = 3 * e, t.content = this._data[a + 0], t.fg = this._data[a + 1], t.bg = this._data[a + 2], 2097152 & t.content && (t.combinedData = this._combined[e]), 268435456 & t.bg && (t.extended = this._extendedAttrs[e]), t + } + setCell(e, t) { + 2097152 & t.content && (this._combined[e] = t.combinedData), 268435456 & t.bg && (this._extendedAttrs[e] = t.extended), this._data[3 * e + 0] = t.content, this._data[3 * e + 1] = t.fg, this._data[3 * e + 2] = t.bg + } + setCellFromCodepoint(e, t, i, s) { + 268435456 & s.bg && (this._extendedAttrs[e] = s.extended), this._data[3 * e + 0] = t | i << 22, this._data[3 * e + 1] = s.fg, this._data[3 * e + 2] = s.bg + } + addCodepointToCell(e, t, i) { + let s = this._data[3 * e + 0]; + 2097152 & s ? this._combined[e] += (0, o.stringFromCodePoint)(t) : 2097151 & s ? (this._combined[e] = (0, o.stringFromCodePoint)(2097151 & s) + (0, o.stringFromCodePoint)(t), s &= -2097152, s |= 2097152) : s = t | 1 << 22, i && (s &= -12582913, s |= i << 22), this._data[3 * e + 0] = s + } + insertCells(e, t, i) { + if ((e %= this.length) && 2 === this.getWidth(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), t < this.length - e) { + const s = new r.CellData; + for (let i = this.length - e - t - 1; i >= 0; --i) this.setCell(e + t + i, this.loadCell(e + i, s)); + for (let s = 0; s < t; ++s) this.setCell(e + s, i) + } else + for (let t = e; t < this.length; ++t) this.setCell(t, i); + 2 === this.getWidth(this.length - 1) && this.setCellFromCodepoint(this.length - 1, 0, 1, i) + } + deleteCells(e, t, i) { + if (e %= this.length, t < this.length - e) { + const s = new r.CellData; + for (let i = 0; i < this.length - e - t; ++i) this.setCell(e + i, this.loadCell(e + t + i, s)); + for (let e = this.length - t; e < this.length; ++e) this.setCell(e, i) + } else + for (let t = e; t < this.length; ++t) this.setCell(t, i); + e && 2 === this.getWidth(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), 0 !== this.getWidth(e) || this.hasContent(e) || this.setCellFromCodepoint(e, 0, 1, i) + } + replaceCells(e, t, i, s = !1) { + if (s) + for (e && 2 === this.getWidth(e - 1) && !this.isProtected(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), t < this.length && 2 === this.getWidth(t - 1) && !this.isProtected(t) && this.setCellFromCodepoint(t, 0, 1, i); e < t && e < this.length;) this.isProtected(e) || this.setCell(e, i), e++; + else + for (e && 2 === this.getWidth(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), t < this.length && 2 === this.getWidth(t - 1) && this.setCellFromCodepoint(t, 0, 1, i); e < t && e < this.length;) this.setCell(e++, i) + } + resize(e, t) { + if (e === this.length) return 4 * this._data.length * 2 < this._data.buffer.byteLength; + const i = 3 * e; + if (e > this.length) { + if (this._data.buffer.byteLength >= 4 * i) this._data = new Uint32Array(this._data.buffer, 0, i); + else { + const e = new Uint32Array(i); + e.set(this._data), this._data = e + } + for (let i = this.length; i < e; ++i) this.setCell(i, t) + } else { + this._data = this._data.subarray(0, i); + const t = Object.keys(this._combined); + for (let i = 0; i < t.length; i++) { + const s = parseInt(t[i], 10); + s >= e && delete this._combined[s] + } + const s = Object.keys(this._extendedAttrs); + for (let t = 0; t < s.length; t++) { + const i = parseInt(s[t], 10); + i >= e && delete this._extendedAttrs[i] + } + } + return this.length = e, 4 * i * 2 < this._data.buffer.byteLength + } + cleanupMemory() { + if (4 * this._data.length * 2 < this._data.buffer.byteLength) { + const e = new Uint32Array(this._data.length); + return e.set(this._data), this._data = e, 1 + } + return 0 + } + fill(e, t = !1) { + if (t) + for (let t = 0; t < this.length; ++t) this.isProtected(t) || this.setCell(t, e); + else { + this._combined = {}, this._extendedAttrs = {}; + for (let t = 0; t < this.length; ++t) this.setCell(t, e) + } + } + copyFrom(e) { + this.length !== e.length ? this._data = new Uint32Array(e._data) : this._data.set(e._data), this.length = e.length, this._combined = {}; + for (const t in e._combined) this._combined[t] = e._combined[t]; + this._extendedAttrs = {}; + for (const t in e._extendedAttrs) this._extendedAttrs[t] = e._extendedAttrs[t]; + this.isWrapped = e.isWrapped + } + clone() { + const e = new h(0); + e._data = new Uint32Array(this._data), e.length = this.length; + for (const t in this._combined) e._combined[t] = this._combined[t]; + for (const t in this._extendedAttrs) e._extendedAttrs[t] = this._extendedAttrs[t]; + return e.isWrapped = this.isWrapped, e + } + getTrimmedLength() { + for (let e = this.length - 1; e >= 0; --e) + if (4194303 & this._data[3 * e + 0]) return e + (this._data[3 * e + 0] >> 22); + return 0 + } + getNoBgTrimmedLength() { + for (let e = this.length - 1; e >= 0; --e) + if (4194303 & this._data[3 * e + 0] || 50331648 & this._data[3 * e + 2]) return e + (this._data[3 * e + 0] >> 22); + return 0 + } + copyCellsFrom(e, t, i, s, r) { + const n = e._data; + if (r) + for (let r = s - 1; r >= 0; r--) { + for (let e = 0; e < 3; e++) this._data[3 * (i + r) + e] = n[3 * (t + r) + e]; + 268435456 & n[3 * (t + r) + 2] && (this._extendedAttrs[i + r] = e._extendedAttrs[t + r]) + } else + for (let r = 0; r < s; r++) { + for (let e = 0; e < 3; e++) this._data[3 * (i + r) + e] = n[3 * (t + r) + e]; + 268435456 & n[3 * (t + r) + 2] && (this._extendedAttrs[i + r] = e._extendedAttrs[t + r]) + } + const o = Object.keys(e._combined); + for (let s = 0; s < o.length; s++) { + const r = parseInt(o[s], 10); + r >= t && (this._combined[r - t + i] = e._combined[r]) + } + } + translateToString(e, t, i, s) { + t = t ?? 0, i = i ?? this.length, e && (i = Math.min(i, this.getTrimmedLength())), s && (s.length = 0); + let r = ""; + for (; t < i;) { + const e = this._data[3 * t + 0], + i = 2097151 & e, + a = 2097152 & e ? this._combined[t] : i ? (0, o.stringFromCodePoint)(i) : n.WHITESPACE_CELL_CHAR; + if (r += a, s) + for (let e = 0; e < a.length; ++e) s.push(t); + t += e >> 22 || 1 + } + return s && s.push(t), r + } + } + t.BufferLine = h + }, + 4841: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.getRangeLength = void 0, t.getRangeLength = function(e, t) { + if (e.start.y > e.end.y) throw new Error(`Buffer range end (${e.end.x}, ${e.end.y}) cannot be before start (${e.start.x}, ${e.start.y})`); + return t * (e.end.y - e.start.y) + (e.end.x - e.start.x + 1) + } + }, + 4634: (e, t) => { + function i(e, t, i) { + if (t === e.length - 1) return e[t].getTrimmedLength(); + const s = !e[t].hasContent(i - 1) && 1 === e[t].getWidth(i - 1), + r = 2 === e[t + 1].getWidth(0); + return s && r ? i - 1 : i + } + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.getWrappedLineTrimmedLength = t.reflowSmallerGetNewLineLengths = t.reflowLargerApplyNewLayout = t.reflowLargerCreateNewLayout = t.reflowLargerGetLinesToRemove = void 0, t.reflowLargerGetLinesToRemove = function(e, t, s, r, n) { + const o = []; + for (let a = 0; a < e.length - 1; a++) { + let h = a, + c = e.get(++h); + if (!c.isWrapped) continue; + const l = [e.get(a)]; + for (; h < e.length && c.isWrapped;) l.push(c), c = e.get(++h); + if (r >= a && r < h) { + a += l.length - 1; + continue + } + let d = 0, + _ = i(l, d, t), + u = 1, + f = 0; + for (; u < l.length;) { + const e = i(l, u, t), + r = e - f, + o = s - _, + a = Math.min(r, o); + l[d].copyCellsFrom(l[u], f, _, a, !1), _ += a, _ === s && (d++, _ = 0), f += a, f === e && (u++, f = 0), 0 === _ && 0 !== d && 2 === l[d - 1].getWidth(s - 1) && (l[d].copyCellsFrom(l[d - 1], s - 1, _++, 1, !1), l[d - 1].setCell(s - 1, n)) + } + l[d].replaceCells(_, s, n); + let v = 0; + for (let e = l.length - 1; e > 0 && (e > d || 0 === l[e].getTrimmedLength()); e--) v++; + v > 0 && (o.push(a + l.length - v), o.push(v)), a += l.length - 1 + } + return o + }, t.reflowLargerCreateNewLayout = function(e, t) { + const i = []; + let s = 0, + r = t[s], + n = 0; + for (let o = 0; o < e.length; o++) + if (r === o) { + const i = t[++s]; + e.onDeleteEmitter.fire({ + index: o - n, + amount: i + }), o += i - 1, n += i, r = t[++s] + } else i.push(o); + return { + layout: i, + countRemoved: n + } + }, t.reflowLargerApplyNewLayout = function(e, t) { + const i = []; + for (let s = 0; s < t.length; s++) i.push(e.get(t[s])); + for (let t = 0; t < i.length; t++) e.set(t, i[t]); + e.length = t.length + }, t.reflowSmallerGetNewLineLengths = function(e, t, s) { + const r = [], + n = e.map(((s, r) => i(e, r, t))).reduce(((e, t) => e + t)); + let o = 0, + a = 0, + h = 0; + for (; h < n;) { + if (n - h < s) { + r.push(n - h); + break + } + o += s; + const c = i(e, a, t); + o > c && (o -= c, a++); + const l = 2 === e[a].getWidth(o - 1); + l && o--; + const d = l ? s - 1 : s; + r.push(d), h += d + } + return r + }, t.getWrappedLineTrimmedLength = i + }, + 5295: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.BufferSet = void 0; + const s = i(8460), + r = i(844), + n = i(9092); + class o extends r.Disposable { + constructor(e, t) { + super(), this._optionsService = e, this._bufferService = t, this._onBufferActivate = this.register(new s.EventEmitter), this.onBufferActivate = this._onBufferActivate.event, this.reset(), this.register(this._optionsService.onSpecificOptionChange("scrollback", (() => this.resize(this._bufferService.cols, this._bufferService.rows)))), this.register(this._optionsService.onSpecificOptionChange("tabStopWidth", (() => this.setupTabStops()))) + } + reset() { + this._normal = new n.Buffer(!0, this._optionsService, this._bufferService), this._normal.fillViewportRows(), this._alt = new n.Buffer(!1, this._optionsService, this._bufferService), this._activeBuffer = this._normal, this._onBufferActivate.fire({ + activeBuffer: this._normal, + inactiveBuffer: this._alt + }), this.setupTabStops() + } + get alt() { + return this._alt + } + get active() { + return this._activeBuffer + } + get normal() { + return this._normal + } + activateNormalBuffer() { + this._activeBuffer !== this._normal && (this._normal.x = this._alt.x, this._normal.y = this._alt.y, this._alt.clearAllMarkers(), this._alt.clear(), this._activeBuffer = this._normal, this._onBufferActivate.fire({ + activeBuffer: this._normal, + inactiveBuffer: this._alt + })) + } + activateAltBuffer(e) { + this._activeBuffer !== this._alt && (this._alt.fillViewportRows(e), this._alt.x = this._normal.x, this._alt.y = this._normal.y, this._activeBuffer = this._alt, this._onBufferActivate.fire({ + activeBuffer: this._alt, + inactiveBuffer: this._normal + })) + } + resize(e, t) { + this._normal.resize(e, t), this._alt.resize(e, t), this.setupTabStops(e) + } + setupTabStops(e) { + this._normal.setupTabStops(e), this._alt.setupTabStops(e) + } + } + t.BufferSet = o + }, + 511: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CellData = void 0; + const s = i(482), + r = i(643), + n = i(3734); + class o extends n.AttributeData { + constructor() { + super(...arguments), this.content = 0, this.fg = 0, this.bg = 0, this.extended = new n.ExtendedAttrs, this.combinedData = "" + } + static fromCharData(e) { + const t = new o; + return t.setFromCharData(e), t + } + isCombined() { + return 2097152 & this.content + } + getWidth() { + return this.content >> 22 + } + getChars() { + return 2097152 & this.content ? this.combinedData : 2097151 & this.content ? (0, s.stringFromCodePoint)(2097151 & this.content) : "" + } + getCode() { + return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : 2097151 & this.content + } + setFromCharData(e) { + this.fg = e[r.CHAR_DATA_ATTR_INDEX], this.bg = 0; + let t = !1; + if (e[r.CHAR_DATA_CHAR_INDEX].length > 2) t = !0; + else if (2 === e[r.CHAR_DATA_CHAR_INDEX].length) { + const i = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0); + if (55296 <= i && i <= 56319) { + const s = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1); + 56320 <= s && s <= 57343 ? this.content = 1024 * (i - 55296) + s - 56320 + 65536 | e[r.CHAR_DATA_WIDTH_INDEX] << 22 : t = !0 + } else t = !0 + } else this.content = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | e[r.CHAR_DATA_WIDTH_INDEX] << 22; + t && (this.combinedData = e[r.CHAR_DATA_CHAR_INDEX], this.content = 2097152 | e[r.CHAR_DATA_WIDTH_INDEX] << 22) + } + getAsCharData() { + return [this.fg, this.getChars(), this.getWidth(), this.getCode()] + } + } + t.CellData = o + }, + 643: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.WHITESPACE_CELL_CODE = t.WHITESPACE_CELL_WIDTH = t.WHITESPACE_CELL_CHAR = t.NULL_CELL_CODE = t.NULL_CELL_WIDTH = t.NULL_CELL_CHAR = t.CHAR_DATA_CODE_INDEX = t.CHAR_DATA_WIDTH_INDEX = t.CHAR_DATA_CHAR_INDEX = t.CHAR_DATA_ATTR_INDEX = t.DEFAULT_EXT = t.DEFAULT_ATTR = t.DEFAULT_COLOR = void 0, t.DEFAULT_COLOR = 0, t.DEFAULT_ATTR = 256 | t.DEFAULT_COLOR << 9, t.DEFAULT_EXT = 0, t.CHAR_DATA_ATTR_INDEX = 0, t.CHAR_DATA_CHAR_INDEX = 1, t.CHAR_DATA_WIDTH_INDEX = 2, t.CHAR_DATA_CODE_INDEX = 3, t.NULL_CELL_CHAR = "", t.NULL_CELL_WIDTH = 1, t.NULL_CELL_CODE = 0, t.WHITESPACE_CELL_CHAR = " ", t.WHITESPACE_CELL_WIDTH = 1, t.WHITESPACE_CELL_CODE = 32 + }, + 4863: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.Marker = void 0; + const s = i(8460), + r = i(844); + class n { + get id() { + return this._id + } + constructor(e) { + this.line = e, this.isDisposed = !1, this._disposables = [], this._id = n._nextId++, this._onDispose = this.register(new s.EventEmitter), this.onDispose = this._onDispose.event + } + dispose() { + this.isDisposed || (this.isDisposed = !0, this.line = -1, this._onDispose.fire(), (0, r.disposeArray)(this._disposables), this._disposables.length = 0) + } + register(e) { + return this._disposables.push(e), e + } + } + t.Marker = n, n._nextId = 1 + }, + 7116: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.DEFAULT_CHARSET = t.CHARSETS = void 0, t.CHARSETS = {}, t.DEFAULT_CHARSET = t.CHARSETS.B, t.CHARSETS[0] = { + "`": "◆", + a: "▒", + b: "␉", + c: "␌", + d: "␍", + e: "␊", + f: "°", + g: "±", + h: "␤", + i: "␋", + j: "┘", + k: "┐", + l: "┌", + m: "└", + n: "┼", + o: "⎺", + p: "⎻", + q: "─", + r: "⎼", + s: "⎽", + t: "├", + u: "┤", + v: "┴", + w: "┬", + x: "│", + y: "≤", + z: "≥", + "{": "π", + "|": "≠", + "}": "£", + "~": "·" + }, t.CHARSETS.A = { + "#": "£" + }, t.CHARSETS.B = void 0, t.CHARSETS[4] = { + "#": "£", + "@": "¾", + "[": "ij", + "\\": "½", + "]": "|", + "{": "¨", + "|": "f", + "}": "¼", + "~": "´" + }, t.CHARSETS.C = t.CHARSETS[5] = { + "[": "Ä", + "\\": "Ö", + "]": "Å", + "^": "Ü", + "`": "é", + "{": "ä", + "|": "ö", + "}": "å", + "~": "ü" + }, t.CHARSETS.R = { + "#": "£", + "@": "à", + "[": "°", + "\\": "ç", + "]": "§", + "{": "é", + "|": "ù", + "}": "è", + "~": "¨" + }, t.CHARSETS.Q = { + "@": "à", + "[": "â", + "\\": "ç", + "]": "ê", + "^": "î", + "`": "ô", + "{": "é", + "|": "ù", + "}": "è", + "~": "û" + }, t.CHARSETS.K = { + "@": "§", + "[": "Ä", + "\\": "Ö", + "]": "Ü", + "{": "ä", + "|": "ö", + "}": "ü", + "~": "ß" + }, t.CHARSETS.Y = { + "#": "£", + "@": "§", + "[": "°", + "\\": "ç", + "]": "é", + "`": "ù", + "{": "à", + "|": "ò", + "}": "è", + "~": "ì" + }, t.CHARSETS.E = t.CHARSETS[6] = { + "@": "Ä", + "[": "Æ", + "\\": "Ø", + "]": "Å", + "^": "Ü", + "`": "ä", + "{": "æ", + "|": "ø", + "}": "å", + "~": "ü" + }, t.CHARSETS.Z = { + "#": "£", + "@": "§", + "[": "¡", + "\\": "Ñ", + "]": "¿", + "{": "°", + "|": "ñ", + "}": "ç" + }, t.CHARSETS.H = t.CHARSETS[7] = { + "@": "É", + "[": "Ä", + "\\": "Ö", + "]": "Å", + "^": "Ü", + "`": "é", + "{": "ä", + "|": "ö", + "}": "å", + "~": "ü" + }, t.CHARSETS["="] = { + "#": "ù", + "@": "à", + "[": "é", + "\\": "ç", + "]": "ê", + "^": "î", + _: "è", + "`": "ô", + "{": "ä", + "|": "ö", + "}": "ü", + "~": "û" + } + }, + 2584: (e, t) => { + var i, s, r; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.C1_ESCAPED = t.C1 = t.C0 = void 0, + function(e) { + e.NUL = "\0", e.SOH = "", e.STX = "", e.ETX = "", e.EOT = "", e.ENQ = "", e.ACK = "", e.BEL = "", e.BS = "\b", e.HT = "\t", e.LF = "\n", e.VT = "\v", e.FF = "\f", e.CR = "\r", e.SO = "", e.SI = "", e.DLE = "", e.DC1 = "", e.DC2 = "", e.DC3 = "", e.DC4 = "", e.NAK = "", e.SYN = "", e.ETB = "", e.CAN = "", e.EM = "", e.SUB = "", e.ESC = "", e.FS = "", e.GS = "", e.RS = "", e.US = "", e.SP = " ", e.DEL = "" + }(i || (t.C0 = i = {})), + function(e) { + e.PAD = "€", e.HOP = "", e.BPH = "‚", e.NBH = "ƒ", e.IND = "„", e.NEL = "…", e.SSA = "†", e.ESA = "‡", e.HTS = "ˆ", e.HTJ = "‰", e.VTS = "Š", e.PLD = "‹", e.PLU = "Œ", e.RI = "", e.SS2 = "Ž", e.SS3 = "", e.DCS = "", e.PU1 = "‘", e.PU2 = "’", e.STS = "“", e.CCH = "”", e.MW = "•", e.SPA = "–", e.EPA = "—", e.SOS = "˜", e.SGCI = "™", e.SCI = "š", e.CSI = "›", e.ST = "œ", e.OSC = "", e.PM = "ž", e.APC = "Ÿ" + }(s || (t.C1 = s = {})), + function(e) { + e.ST = `${i.ESC}\\` + }(r || (t.C1_ESCAPED = r = {})) + }, + 7399: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.evaluateKeyboardEvent = void 0; + const s = i(2584), + r = { + 48: ["0", ")"], + 49: ["1", "!"], + 50: ["2", "@"], + 51: ["3", "#"], + 52: ["4", "$"], + 53: ["5", "%"], + 54: ["6", "^"], + 55: ["7", "&"], + 56: ["8", "*"], + 57: ["9", "("], + 186: [";", ":"], + 187: ["=", "+"], + 188: [",", "<"], + 189: ["-", "_"], + 190: [".", ">"], + 191: ["/", "?"], + 192: ["`", "~"], + 219: ["[", "{"], + 220: ["\\", "|"], + 221: ["]", "}"], + 222: ["'", '"'] + }; + t.evaluateKeyboardEvent = function(e, t, i, n) { + const o = { + type: 0, + cancel: !1, + key: void 0 + }, + a = (e.shiftKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.ctrlKey ? 4 : 0) | (e.metaKey ? 8 : 0); + switch (e.keyCode) { + case 0: + "UIKeyInputUpArrow" === e.key ? o.key = t ? s.C0.ESC + "OA" : s.C0.ESC + "[A" : "UIKeyInputLeftArrow" === e.key ? o.key = t ? s.C0.ESC + "OD" : s.C0.ESC + "[D" : "UIKeyInputRightArrow" === e.key ? o.key = t ? s.C0.ESC + "OC" : s.C0.ESC + "[C" : "UIKeyInputDownArrow" === e.key && (o.key = t ? s.C0.ESC + "OB" : s.C0.ESC + "[B"); + break; + case 8: + o.key = e.ctrlKey ? "\b" : s.C0.DEL, e.altKey && (o.key = s.C0.ESC + o.key); + break; + case 9: + if (e.shiftKey) { + o.key = s.C0.ESC + "[Z"; + break + } + o.key = s.C0.HT, o.cancel = !0; + break; + case 13: + o.key = e.altKey ? s.C0.ESC + s.C0.CR : s.C0.CR, o.cancel = !0; + break; + case 27: + o.key = s.C0.ESC, e.altKey && (o.key = s.C0.ESC + s.C0.ESC), o.cancel = !0; + break; + case 37: + if (e.metaKey) break; + a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "D", o.key === s.C0.ESC + "[1;3D" && (o.key = s.C0.ESC + (i ? "b" : "[1;5D"))) : o.key = t ? s.C0.ESC + "OD" : s.C0.ESC + "[D"; + break; + case 39: + if (e.metaKey) break; + a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "C", o.key === s.C0.ESC + "[1;3C" && (o.key = s.C0.ESC + (i ? "f" : "[1;5C"))) : o.key = t ? s.C0.ESC + "OC" : s.C0.ESC + "[C"; + break; + case 38: + if (e.metaKey) break; + a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "A", i || o.key !== s.C0.ESC + "[1;3A" || (o.key = s.C0.ESC + "[1;5A")) : o.key = t ? s.C0.ESC + "OA" : s.C0.ESC + "[A"; + break; + case 40: + if (e.metaKey) break; + a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "B", i || o.key !== s.C0.ESC + "[1;3B" || (o.key = s.C0.ESC + "[1;5B")) : o.key = t ? s.C0.ESC + "OB" : s.C0.ESC + "[B"; + break; + case 45: + e.shiftKey || e.ctrlKey || (o.key = s.C0.ESC + "[2~"); + break; + case 46: + o.key = a ? s.C0.ESC + "[3;" + (a + 1) + "~" : s.C0.ESC + "[3~"; + break; + case 36: + o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "H" : t ? s.C0.ESC + "OH" : s.C0.ESC + "[H"; + break; + case 35: + o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "F" : t ? s.C0.ESC + "OF" : s.C0.ESC + "[F"; + break; + case 33: + e.shiftKey ? o.type = 2 : e.ctrlKey ? o.key = s.C0.ESC + "[5;" + (a + 1) + "~" : o.key = s.C0.ESC + "[5~"; + break; + case 34: + e.shiftKey ? o.type = 3 : e.ctrlKey ? o.key = s.C0.ESC + "[6;" + (a + 1) + "~" : o.key = s.C0.ESC + "[6~"; + break; + case 112: + o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "P" : s.C0.ESC + "OP"; + break; + case 113: + o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "Q" : s.C0.ESC + "OQ"; + break; + case 114: + o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "R" : s.C0.ESC + "OR"; + break; + case 115: + o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "S" : s.C0.ESC + "OS"; + break; + case 116: + o.key = a ? s.C0.ESC + "[15;" + (a + 1) + "~" : s.C0.ESC + "[15~"; + break; + case 117: + o.key = a ? s.C0.ESC + "[17;" + (a + 1) + "~" : s.C0.ESC + "[17~"; + break; + case 118: + o.key = a ? s.C0.ESC + "[18;" + (a + 1) + "~" : s.C0.ESC + "[18~"; + break; + case 119: + o.key = a ? s.C0.ESC + "[19;" + (a + 1) + "~" : s.C0.ESC + "[19~"; + break; + case 120: + o.key = a ? s.C0.ESC + "[20;" + (a + 1) + "~" : s.C0.ESC + "[20~"; + break; + case 121: + o.key = a ? s.C0.ESC + "[21;" + (a + 1) + "~" : s.C0.ESC + "[21~"; + break; + case 122: + o.key = a ? s.C0.ESC + "[23;" + (a + 1) + "~" : s.C0.ESC + "[23~"; + break; + case 123: + o.key = a ? s.C0.ESC + "[24;" + (a + 1) + "~" : s.C0.ESC + "[24~"; + break; + default: + if (!e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) + if (i && !n || !e.altKey || e.metaKey) !i || e.altKey || e.ctrlKey || e.shiftKey || !e.metaKey ? e.key && !e.ctrlKey && !e.altKey && !e.metaKey && e.keyCode >= 48 && 1 === e.key.length ? o.key = e.key : e.key && e.ctrlKey && ("_" === e.key && (o.key = s.C0.US), "@" === e.key && (o.key = s.C0.NUL)) : 65 === e.keyCode && (o.type = 1); + else { + const t = r[e.keyCode], + i = t?.[e.shiftKey ? 1 : 0]; + if (i) o.key = s.C0.ESC + i; + else if (e.keyCode >= 65 && e.keyCode <= 90) { + const t = e.ctrlKey ? e.keyCode - 64 : e.keyCode + 32; + let i = String.fromCharCode(t); + e.shiftKey && (i = i.toUpperCase()), o.key = s.C0.ESC + i + } else if (32 === e.keyCode) o.key = s.C0.ESC + (e.ctrlKey ? s.C0.NUL : " "); + else if ("Dead" === e.key && e.code.startsWith("Key")) { + let t = e.code.slice(3, 4); + e.shiftKey || (t = t.toLowerCase()), o.key = s.C0.ESC + t, o.cancel = !0 + } + } + else e.keyCode >= 65 && e.keyCode <= 90 ? o.key = String.fromCharCode(e.keyCode - 64) : 32 === e.keyCode ? o.key = s.C0.NUL : e.keyCode >= 51 && e.keyCode <= 55 ? o.key = String.fromCharCode(e.keyCode - 51 + 27) : 56 === e.keyCode ? o.key = s.C0.DEL : 219 === e.keyCode ? o.key = s.C0.ESC : 220 === e.keyCode ? o.key = s.C0.FS : 221 === e.keyCode && (o.key = s.C0.GS) + } + return o + } + }, + 482: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.Utf8ToUtf32 = t.StringToUtf32 = t.utf32ToString = t.stringFromCodePoint = void 0, t.stringFromCodePoint = function(e) { + return e > 65535 ? (e -= 65536, String.fromCharCode(55296 + (e >> 10)) + String.fromCharCode(e % 1024 + 56320)) : String.fromCharCode(e) + }, t.utf32ToString = function(e, t = 0, i = e.length) { + let s = ""; + for (let r = t; r < i; ++r) { + let t = e[r]; + t > 65535 ? (t -= 65536, s += String.fromCharCode(55296 + (t >> 10)) + String.fromCharCode(t % 1024 + 56320)) : s += String.fromCharCode(t) + } + return s + }, t.StringToUtf32 = class { + constructor() { + this._interim = 0 + } + clear() { + this._interim = 0 + } + decode(e, t) { + const i = e.length; + if (!i) return 0; + let s = 0, + r = 0; + if (this._interim) { + const i = e.charCodeAt(r++); + 56320 <= i && i <= 57343 ? t[s++] = 1024 * (this._interim - 55296) + i - 56320 + 65536 : (t[s++] = this._interim, t[s++] = i), this._interim = 0 + } + for (let n = r; n < i; ++n) { + const r = e.charCodeAt(n); + if (55296 <= r && r <= 56319) { + if (++n >= i) return this._interim = r, s; + const o = e.charCodeAt(n); + 56320 <= o && o <= 57343 ? t[s++] = 1024 * (r - 55296) + o - 56320 + 65536 : (t[s++] = r, t[s++] = o) + } else 65279 !== r && (t[s++] = r) + } + return s + } + }, t.Utf8ToUtf32 = class { + constructor() { + this.interim = new Uint8Array(3) + } + clear() { + this.interim.fill(0) + } + decode(e, t) { + const i = e.length; + if (!i) return 0; + let s, r, n, o, a = 0, + h = 0, + c = 0; + if (this.interim[0]) { + let s = !1, + r = this.interim[0]; + r &= 192 == (224 & r) ? 31 : 224 == (240 & r) ? 15 : 7; + let n, o = 0; + for (; + (n = 63 & this.interim[++o]) && o < 4;) r <<= 6, r |= n; + const h = 192 == (224 & this.interim[0]) ? 2 : 224 == (240 & this.interim[0]) ? 3 : 4, + l = h - o; + for (; c < l;) { + if (c >= i) return 0; + if (n = e[c++], 128 != (192 & n)) { + c--, s = !0; + break + } + this.interim[o++] = n, r <<= 6, r |= 63 & n + } + s || (2 === h ? r < 128 ? c-- : t[a++] = r : 3 === h ? r < 2048 || r >= 55296 && r <= 57343 || 65279 === r || (t[a++] = r) : r < 65536 || r > 1114111 || (t[a++] = r)), this.interim.fill(0) + } + const l = i - 4; + let d = c; + for (; d < i;) { + for (; !(!(d < l) || 128 & (s = e[d]) || 128 & (r = e[d + 1]) || 128 & (n = e[d + 2]) || 128 & (o = e[d + 3]));) t[a++] = s, t[a++] = r, t[a++] = n, t[a++] = o, d += 4; + if (s = e[d++], s < 128) t[a++] = s; + else if (192 == (224 & s)) { + if (d >= i) return this.interim[0] = s, a; + if (r = e[d++], 128 != (192 & r)) { + d--; + continue + } + if (h = (31 & s) << 6 | 63 & r, h < 128) { + d--; + continue + } + t[a++] = h + } else if (224 == (240 & s)) { + if (d >= i) return this.interim[0] = s, a; + if (r = e[d++], 128 != (192 & r)) { + d--; + continue + } + if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; + if (n = e[d++], 128 != (192 & n)) { + d--; + continue + } + if (h = (15 & s) << 12 | (63 & r) << 6 | 63 & n, h < 2048 || h >= 55296 && h <= 57343 || 65279 === h) continue; + t[a++] = h + } else if (240 == (248 & s)) { + if (d >= i) return this.interim[0] = s, a; + if (r = e[d++], 128 != (192 & r)) { + d--; + continue + } + if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; + if (n = e[d++], 128 != (192 & n)) { + d--; + continue + } + if (d >= i) return this.interim[0] = s, this.interim[1] = r, this.interim[2] = n, a; + if (o = e[d++], 128 != (192 & o)) { + d--; + continue + } + if (h = (7 & s) << 18 | (63 & r) << 12 | (63 & n) << 6 | 63 & o, h < 65536 || h > 1114111) continue; + t[a++] = h + } + } + return a + } + } + }, + 225: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.UnicodeV6 = void 0; + const s = i(1480), + r = [ + [768, 879], + [1155, 1158], + [1160, 1161], + [1425, 1469], + [1471, 1471], + [1473, 1474], + [1476, 1477], + [1479, 1479], + [1536, 1539], + [1552, 1557], + [1611, 1630], + [1648, 1648], + [1750, 1764], + [1767, 1768], + [1770, 1773], + [1807, 1807], + [1809, 1809], + [1840, 1866], + [1958, 1968], + [2027, 2035], + [2305, 2306], + [2364, 2364], + [2369, 2376], + [2381, 2381], + [2385, 2388], + [2402, 2403], + [2433, 2433], + [2492, 2492], + [2497, 2500], + [2509, 2509], + [2530, 2531], + [2561, 2562], + [2620, 2620], + [2625, 2626], + [2631, 2632], + [2635, 2637], + [2672, 2673], + [2689, 2690], + [2748, 2748], + [2753, 2757], + [2759, 2760], + [2765, 2765], + [2786, 2787], + [2817, 2817], + [2876, 2876], + [2879, 2879], + [2881, 2883], + [2893, 2893], + [2902, 2902], + [2946, 2946], + [3008, 3008], + [3021, 3021], + [3134, 3136], + [3142, 3144], + [3146, 3149], + [3157, 3158], + [3260, 3260], + [3263, 3263], + [3270, 3270], + [3276, 3277], + [3298, 3299], + [3393, 3395], + [3405, 3405], + [3530, 3530], + [3538, 3540], + [3542, 3542], + [3633, 3633], + [3636, 3642], + [3655, 3662], + [3761, 3761], + [3764, 3769], + [3771, 3772], + [3784, 3789], + [3864, 3865], + [3893, 3893], + [3895, 3895], + [3897, 3897], + [3953, 3966], + [3968, 3972], + [3974, 3975], + [3984, 3991], + [3993, 4028], + [4038, 4038], + [4141, 4144], + [4146, 4146], + [4150, 4151], + [4153, 4153], + [4184, 4185], + [4448, 4607], + [4959, 4959], + [5906, 5908], + [5938, 5940], + [5970, 5971], + [6002, 6003], + [6068, 6069], + [6071, 6077], + [6086, 6086], + [6089, 6099], + [6109, 6109], + [6155, 6157], + [6313, 6313], + [6432, 6434], + [6439, 6440], + [6450, 6450], + [6457, 6459], + [6679, 6680], + [6912, 6915], + [6964, 6964], + [6966, 6970], + [6972, 6972], + [6978, 6978], + [7019, 7027], + [7616, 7626], + [7678, 7679], + [8203, 8207], + [8234, 8238], + [8288, 8291], + [8298, 8303], + [8400, 8431], + [12330, 12335], + [12441, 12442], + [43014, 43014], + [43019, 43019], + [43045, 43046], + [64286, 64286], + [65024, 65039], + [65056, 65059], + [65279, 65279], + [65529, 65531] + ], + n = [ + [68097, 68099], + [68101, 68102], + [68108, 68111], + [68152, 68154], + [68159, 68159], + [119143, 119145], + [119155, 119170], + [119173, 119179], + [119210, 119213], + [119362, 119364], + [917505, 917505], + [917536, 917631], + [917760, 917999] + ]; + let o; + t.UnicodeV6 = class { + constructor() { + if (this.version = "6", !o) { + o = new Uint8Array(65536), o.fill(1), o[0] = 0, o.fill(0, 1, 32), o.fill(0, 127, 160), o.fill(2, 4352, 4448), o[9001] = 2, o[9002] = 2, o.fill(2, 11904, 42192), o[12351] = 1, o.fill(2, 44032, 55204), o.fill(2, 63744, 64256), o.fill(2, 65040, 65050), o.fill(2, 65072, 65136), o.fill(2, 65280, 65377), o.fill(2, 65504, 65511); + for (let e = 0; e < r.length; ++e) o.fill(0, r[e][0], r[e][1] + 1) + } + } + wcwidth(e) { + return e < 32 ? 0 : e < 127 ? 1 : e < 65536 ? o[e] : function(e, t) { + let i, s = 0, + r = t.length - 1; + if (e < t[0][0] || e > t[r][1]) return !1; + for (; r >= s;) + if (i = s + r >> 1, e > t[i][1]) s = i + 1; + else { + if (!(e < t[i][0])) return !0; + r = i - 1 + } return !1 + }(e, n) ? 0 : e >= 131072 && e <= 196605 || e >= 196608 && e <= 262141 ? 2 : 1 + } + charProperties(e, t) { + let i = this.wcwidth(e), + r = 0 === i && 0 !== t; + if (r) { + const e = s.UnicodeService.extractWidth(t); + 0 === e ? r = !1 : e > i && (i = e) + } + return s.UnicodeService.createPropertyValue(0, i, r) + } + } + }, + 5981: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.WriteBuffer = void 0; + const s = i(8460), + r = i(844); + class n extends r.Disposable { + constructor(e) { + super(), this._action = e, this._writeBuffer = [], this._callbacks = [], this._pendingData = 0, this._bufferOffset = 0, this._isSyncWriting = !1, this._syncCalls = 0, this._didUserInput = !1, this._onWriteParsed = this.register(new s.EventEmitter), this.onWriteParsed = this._onWriteParsed.event + } + handleUserInput() { + this._didUserInput = !0 + } + writeSync(e, t) { + if (void 0 !== t && this._syncCalls > t) return void(this._syncCalls = 0); + if (this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(void 0), this._syncCalls++, this._isSyncWriting) return; + let i; + for (this._isSyncWriting = !0; i = this._writeBuffer.shift();) { + this._action(i); + const e = this._callbacks.shift(); + e && e() + } + this._pendingData = 0, this._bufferOffset = 2147483647, this._isSyncWriting = !1, this._syncCalls = 0 + } + write(e, t) { + if (this._pendingData > 5e7) throw new Error("write data discarded, use flow control to avoid losing data"); + if (!this._writeBuffer.length) { + if (this._bufferOffset = 0, this._didUserInput) return this._didUserInput = !1, this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(t), void this._innerWrite(); + setTimeout((() => this._innerWrite())) + } + this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(t) + } + _innerWrite(e = 0, t = !0) { + const i = e || Date.now(); + for (; this._writeBuffer.length > this._bufferOffset;) { + const e = this._writeBuffer[this._bufferOffset], + s = this._action(e, t); + if (s) { + const e = e => Date.now() - i >= 12 ? setTimeout((() => this._innerWrite(0, e))) : this._innerWrite(i, e); + return void s.catch((e => (queueMicrotask((() => { + throw e + })), Promise.resolve(!1)))).then(e) + } + const r = this._callbacks[this._bufferOffset]; + if (r && r(), this._bufferOffset++, this._pendingData -= e.length, Date.now() - i >= 12) break + } + this._writeBuffer.length > this._bufferOffset ? (this._bufferOffset > 50 && (this._writeBuffer = this._writeBuffer.slice(this._bufferOffset), this._callbacks = this._callbacks.slice(this._bufferOffset), this._bufferOffset = 0), setTimeout((() => this._innerWrite()))) : (this._writeBuffer.length = 0, this._callbacks.length = 0, this._pendingData = 0, this._bufferOffset = 0), this._onWriteParsed.fire() + } + } + t.WriteBuffer = n + }, + 5941: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.toRgbString = t.parseColor = void 0; + const i = /^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/, + s = /^[\da-f]+$/; + + function r(e, t) { + const i = e.toString(16), + s = i.length < 2 ? "0" + i : i; + switch (t) { + case 4: + return i[0]; + case 8: + return s; + case 12: + return (s + s).slice(0, 3); + default: + return s + s + } + } + t.parseColor = function(e) { + if (!e) return; + let t = e.toLowerCase(); + if (0 === t.indexOf("rgb:")) { + t = t.slice(4); + const e = i.exec(t); + if (e) { + const t = e[1] ? 15 : e[4] ? 255 : e[7] ? 4095 : 65535; + return [Math.round(parseInt(e[1] || e[4] || e[7] || e[10], 16) / t * 255), Math.round(parseInt(e[2] || e[5] || e[8] || e[11], 16) / t * 255), Math.round(parseInt(e[3] || e[6] || e[9] || e[12], 16) / t * 255)] + } + } else if (0 === t.indexOf("#") && (t = t.slice(1), s.exec(t) && [3, 6, 9, 12].includes(t.length))) { + const e = t.length / 3, + i = [0, 0, 0]; + for (let s = 0; s < 3; ++s) { + const r = parseInt(t.slice(e * s, e * s + e), 16); + i[s] = 1 === e ? r << 4 : 2 === e ? r : 3 === e ? r >> 4 : r >> 8 + } + return i + } + }, t.toRgbString = function(e, t = 16) { + const [i, s, n] = e; + return `rgb:${r(i, t)}/${r(s, t)}/${r(n, t)}` + } + }, + 5770: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.PAYLOAD_LIMIT = void 0, t.PAYLOAD_LIMIT = 1e7 + }, + 6351: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.DcsHandler = t.DcsParser = void 0; + const s = i(482), + r = i(8742), + n = i(5770), + o = []; + t.DcsParser = class { + constructor() { + this._handlers = Object.create(null), this._active = o, this._ident = 0, this._handlerFb = () => {}, this._stack = { + paused: !1, + loopPosition: 0, + fallThrough: !1 + } + } + dispose() { + this._handlers = Object.create(null), this._handlerFb = () => {}, this._active = o + } + registerHandler(e, t) { + void 0 === this._handlers[e] && (this._handlers[e] = []); + const i = this._handlers[e]; + return i.push(t), { + dispose: () => { + const e = i.indexOf(t); - 1 !== e && i.splice(e, 1) + } + } + } + clearHandler(e) { + this._handlers[e] && delete this._handlers[e] + } + setHandlerFallback(e) { + this._handlerFb = e + } + reset() { + if (this._active.length) + for (let e = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; e >= 0; --e) this._active[e].unhook(!1); + this._stack.paused = !1, this._active = o, this._ident = 0 + } + hook(e, t) { + if (this.reset(), this._ident = e, this._active = this._handlers[e] || o, this._active.length) + for (let e = this._active.length - 1; e >= 0; e--) this._active[e].hook(t); + else this._handlerFb(this._ident, "HOOK", t) + } + put(e, t, i) { + if (this._active.length) + for (let s = this._active.length - 1; s >= 0; s--) this._active[s].put(e, t, i); + else this._handlerFb(this._ident, "PUT", (0, s.utf32ToString)(e, t, i)) + } + unhook(e, t = !0) { + if (this._active.length) { + let i = !1, + s = this._active.length - 1, + r = !1; + if (this._stack.paused && (s = this._stack.loopPosition - 1, i = t, r = this._stack.fallThrough, this._stack.paused = !1), !r && !1 === i) { + for (; s >= 0 && (i = this._active[s].unhook(e), !0 !== i); s--) + if (i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !1, i; + s-- + } + for (; s >= 0; s--) + if (i = this._active[s].unhook(!1), i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !0, i + } else this._handlerFb(this._ident, "UNHOOK", e); + this._active = o, this._ident = 0 + } + }; + const a = new r.Params; + a.addParam(0), t.DcsHandler = class { + constructor(e) { + this._handler = e, this._data = "", this._params = a, this._hitLimit = !1 + } + hook(e) { + this._params = e.length > 1 || e.params[0] ? e.clone() : a, this._data = "", this._hitLimit = !1 + } + put(e, t, i) { + this._hitLimit || (this._data += (0, s.utf32ToString)(e, t, i), this._data.length > n.PAYLOAD_LIMIT && (this._data = "", this._hitLimit = !0)) + } + unhook(e) { + let t = !1; + if (this._hitLimit) t = !1; + else if (e && (t = this._handler(this._data, this._params), t instanceof Promise)) return t.then((e => (this._params = a, this._data = "", this._hitLimit = !1, e))); + return this._params = a, this._data = "", this._hitLimit = !1, t + } + } + }, + 2015: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.EscapeSequenceParser = t.VT500_TRANSITION_TABLE = t.TransitionTable = void 0; + const s = i(844), + r = i(8742), + n = i(6242), + o = i(6351); + class a { + constructor(e) { + this.table = new Uint8Array(e) + } + setDefault(e, t) { + this.table.fill(e << 4 | t) + } + add(e, t, i, s) { + this.table[t << 8 | e] = i << 4 | s + } + addMany(e, t, i, s) { + for (let r = 0; r < e.length; r++) this.table[t << 8 | e[r]] = i << 4 | s + } + } + t.TransitionTable = a; + const h = 160; + t.VT500_TRANSITION_TABLE = function() { + const e = new a(4095), + t = Array.apply(null, Array(256)).map(((e, t) => t)), + i = (e, i) => t.slice(e, i), + s = i(32, 127), + r = i(0, 24); + r.push(25), r.push.apply(r, i(28, 32)); + const n = i(0, 14); + let o; + for (o in e.setDefault(1, 0), e.addMany(s, 0, 2, 0), n) e.addMany([24, 26, 153, 154], o, 3, 0), e.addMany(i(128, 144), o, 3, 0), e.addMany(i(144, 152), o, 3, 0), e.add(156, o, 0, 0), e.add(27, o, 11, 1), e.add(157, o, 4, 8), e.addMany([152, 158, 159], o, 0, 7), e.add(155, o, 11, 3), e.add(144, o, 11, 9); + return e.addMany(r, 0, 3, 0), e.addMany(r, 1, 3, 1), e.add(127, 1, 0, 1), e.addMany(r, 8, 0, 8), e.addMany(r, 3, 3, 3), e.add(127, 3, 0, 3), e.addMany(r, 4, 3, 4), e.add(127, 4, 0, 4), e.addMany(r, 6, 3, 6), e.addMany(r, 5, 3, 5), e.add(127, 5, 0, 5), e.addMany(r, 2, 3, 2), e.add(127, 2, 0, 2), e.add(93, 1, 4, 8), e.addMany(s, 8, 5, 8), e.add(127, 8, 5, 8), e.addMany([156, 27, 24, 26, 7], 8, 6, 0), e.addMany(i(28, 32), 8, 0, 8), e.addMany([88, 94, 95], 1, 0, 7), e.addMany(s, 7, 0, 7), e.addMany(r, 7, 0, 7), e.add(156, 7, 0, 0), e.add(127, 7, 0, 7), e.add(91, 1, 11, 3), e.addMany(i(64, 127), 3, 7, 0), e.addMany(i(48, 60), 3, 8, 4), e.addMany([60, 61, 62, 63], 3, 9, 4), e.addMany(i(48, 60), 4, 8, 4), e.addMany(i(64, 127), 4, 7, 0), e.addMany([60, 61, 62, 63], 4, 0, 6), e.addMany(i(32, 64), 6, 0, 6), e.add(127, 6, 0, 6), e.addMany(i(64, 127), 6, 0, 0), e.addMany(i(32, 48), 3, 9, 5), e.addMany(i(32, 48), 5, 9, 5), e.addMany(i(48, 64), 5, 0, 6), e.addMany(i(64, 127), 5, 7, 0), e.addMany(i(32, 48), 4, 9, 5), e.addMany(i(32, 48), 1, 9, 2), e.addMany(i(32, 48), 2, 9, 2), e.addMany(i(48, 127), 2, 10, 0), e.addMany(i(48, 80), 1, 10, 0), e.addMany(i(81, 88), 1, 10, 0), e.addMany([89, 90, 92], 1, 10, 0), e.addMany(i(96, 127), 1, 10, 0), e.add(80, 1, 11, 9), e.addMany(r, 9, 0, 9), e.add(127, 9, 0, 9), e.addMany(i(28, 32), 9, 0, 9), e.addMany(i(32, 48), 9, 9, 12), e.addMany(i(48, 60), 9, 8, 10), e.addMany([60, 61, 62, 63], 9, 9, 10), e.addMany(r, 11, 0, 11), e.addMany(i(32, 128), 11, 0, 11), e.addMany(i(28, 32), 11, 0, 11), e.addMany(r, 10, 0, 10), e.add(127, 10, 0, 10), e.addMany(i(28, 32), 10, 0, 10), e.addMany(i(48, 60), 10, 8, 10), e.addMany([60, 61, 62, 63], 10, 0, 11), e.addMany(i(32, 48), 10, 9, 12), e.addMany(r, 12, 0, 12), e.add(127, 12, 0, 12), e.addMany(i(28, 32), 12, 0, 12), e.addMany(i(32, 48), 12, 9, 12), e.addMany(i(48, 64), 12, 0, 11), e.addMany(i(64, 127), 12, 12, 13), e.addMany(i(64, 127), 10, 12, 13), e.addMany(i(64, 127), 9, 12, 13), e.addMany(r, 13, 13, 13), e.addMany(s, 13, 13, 13), e.add(127, 13, 0, 13), e.addMany([27, 156, 24, 26], 13, 14, 0), e.add(h, 0, 2, 0), e.add(h, 8, 5, 8), e.add(h, 6, 0, 6), e.add(h, 11, 0, 11), e.add(h, 13, 13, 13), e + }(); + class c extends s.Disposable { + constructor(e = t.VT500_TRANSITION_TABLE) { + super(), this._transitions = e, this._parseStack = { + state: 0, + handlers: [], + handlerPos: 0, + transition: 0, + chunkPos: 0 + }, this.initialState = 0, this.currentState = this.initialState, this._params = new r.Params, this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0, this._printHandlerFb = (e, t, i) => {}, this._executeHandlerFb = e => {}, this._csiHandlerFb = (e, t) => {}, this._escHandlerFb = e => {}, this._errorHandlerFb = e => e, this._printHandler = this._printHandlerFb, this._executeHandlers = Object.create(null), this._csiHandlers = Object.create(null), this._escHandlers = Object.create(null), this.register((0, s.toDisposable)((() => { + this._csiHandlers = Object.create(null), this._executeHandlers = Object.create(null), this._escHandlers = Object.create(null) + }))), this._oscParser = this.register(new n.OscParser), this._dcsParser = this.register(new o.DcsParser), this._errorHandler = this._errorHandlerFb, this.registerEscHandler({ + final: "\\" + }, (() => !0)) + } + _identifier(e, t = [64, 126]) { + let i = 0; + if (e.prefix) { + if (e.prefix.length > 1) throw new Error("only one byte as prefix supported"); + if (i = e.prefix.charCodeAt(0), i && 60 > i || i > 63) throw new Error("prefix must be in range 0x3c .. 0x3f") + } + if (e.intermediates) { + if (e.intermediates.length > 2) throw new Error("only two bytes as intermediates are supported"); + for (let t = 0; t < e.intermediates.length; ++t) { + const s = e.intermediates.charCodeAt(t); + if (32 > s || s > 47) throw new Error("intermediate must be in range 0x20 .. 0x2f"); + i <<= 8, i |= s + } + } + if (1 !== e.final.length) throw new Error("final must be a single byte"); + const s = e.final.charCodeAt(0); + if (t[0] > s || s > t[1]) throw new Error(`final must be in range ${t[0]} .. ${t[1]}`); + return i <<= 8, i |= s, i + } + identToString(e) { + const t = []; + for (; e;) t.push(String.fromCharCode(255 & e)), e >>= 8; + return t.reverse().join("") + } + setPrintHandler(e) { + this._printHandler = e + } + clearPrintHandler() { + this._printHandler = this._printHandlerFb + } + registerEscHandler(e, t) { + const i = this._identifier(e, [48, 126]); + void 0 === this._escHandlers[i] && (this._escHandlers[i] = []); + const s = this._escHandlers[i]; + return s.push(t), { + dispose: () => { + const e = s.indexOf(t); - 1 !== e && s.splice(e, 1) + } + } + } + clearEscHandler(e) { + this._escHandlers[this._identifier(e, [48, 126])] && delete this._escHandlers[this._identifier(e, [48, 126])] + } + setEscHandlerFallback(e) { + this._escHandlerFb = e + } + setExecuteHandler(e, t) { + this._executeHandlers[e.charCodeAt(0)] = t + } + clearExecuteHandler(e) { + this._executeHandlers[e.charCodeAt(0)] && delete this._executeHandlers[e.charCodeAt(0)] + } + setExecuteHandlerFallback(e) { + this._executeHandlerFb = e + } + registerCsiHandler(e, t) { + const i = this._identifier(e); + void 0 === this._csiHandlers[i] && (this._csiHandlers[i] = []); + const s = this._csiHandlers[i]; + return s.push(t), { + dispose: () => { + const e = s.indexOf(t); - 1 !== e && s.splice(e, 1) + } + } + } + clearCsiHandler(e) { + this._csiHandlers[this._identifier(e)] && delete this._csiHandlers[this._identifier(e)] + } + setCsiHandlerFallback(e) { + this._csiHandlerFb = e + } + registerDcsHandler(e, t) { + return this._dcsParser.registerHandler(this._identifier(e), t) + } + clearDcsHandler(e) { + this._dcsParser.clearHandler(this._identifier(e)) + } + setDcsHandlerFallback(e) { + this._dcsParser.setHandlerFallback(e) + } + registerOscHandler(e, t) { + return this._oscParser.registerHandler(e, t) + } + clearOscHandler(e) { + this._oscParser.clearHandler(e) + } + setOscHandlerFallback(e) { + this._oscParser.setHandlerFallback(e) + } + setErrorHandler(e) { + this._errorHandler = e + } + clearErrorHandler() { + this._errorHandler = this._errorHandlerFb + } + reset() { + this.currentState = this.initialState, this._oscParser.reset(), this._dcsParser.reset(), this._params.reset(), this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0, 0 !== this._parseStack.state && (this._parseStack.state = 2, this._parseStack.handlers = []) + } + _preserveStack(e, t, i, s, r) { + this._parseStack.state = e, this._parseStack.handlers = t, this._parseStack.handlerPos = i, this._parseStack.transition = s, this._parseStack.chunkPos = r + } + parse(e, t, i) { + let s, r = 0, + n = 0, + o = 0; + if (this._parseStack.state) + if (2 === this._parseStack.state) this._parseStack.state = 0, o = this._parseStack.chunkPos + 1; + else { + if (void 0 === i || 1 === this._parseStack.state) throw this._parseStack.state = 1, new Error("improper continuation due to previous async handler, giving up parsing"); + const t = this._parseStack.handlers; + let n = this._parseStack.handlerPos - 1; + switch (this._parseStack.state) { + case 3: + if (!1 === i && n > -1) + for (; n >= 0 && (s = t[n](this._params), !0 !== s); n--) + if (s instanceof Promise) return this._parseStack.handlerPos = n, s; + this._parseStack.handlers = []; + break; + case 4: + if (!1 === i && n > -1) + for (; n >= 0 && (s = t[n](), !0 !== s); n--) + if (s instanceof Promise) return this._parseStack.handlerPos = n, s; + this._parseStack.handlers = []; + break; + case 6: + if (r = e[this._parseStack.chunkPos], s = this._dcsParser.unhook(24 !== r && 26 !== r, i), s) return s; + 27 === r && (this._parseStack.transition |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0; + break; + case 5: + if (r = e[this._parseStack.chunkPos], s = this._oscParser.end(24 !== r && 26 !== r, i), s) return s; + 27 === r && (this._parseStack.transition |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0 + } + this._parseStack.state = 0, o = this._parseStack.chunkPos + 1, this.precedingJoinState = 0, this.currentState = 15 & this._parseStack.transition + } for (let i = o; i < t; ++i) { + switch (r = e[i], n = this._transitions.table[this.currentState << 8 | (r < 160 ? r : h)], n >> 4) { + case 2: + for (let s = i + 1;; ++s) { + if (s >= t || (r = e[s]) < 32 || r > 126 && r < h) { + this._printHandler(e, i, s), i = s - 1; + break + } + if (++s >= t || (r = e[s]) < 32 || r > 126 && r < h) { + this._printHandler(e, i, s), i = s - 1; + break + } + if (++s >= t || (r = e[s]) < 32 || r > 126 && r < h) { + this._printHandler(e, i, s), i = s - 1; + break + } + if (++s >= t || (r = e[s]) < 32 || r > 126 && r < h) { + this._printHandler(e, i, s), i = s - 1; + break + } + } + break; + case 3: + this._executeHandlers[r] ? this._executeHandlers[r]() : this._executeHandlerFb(r), this.precedingJoinState = 0; + break; + case 0: + break; + case 1: + if (this._errorHandler({ + position: i, + code: r, + currentState: this.currentState, + collect: this._collect, + params: this._params, + abort: !1 + }).abort) return; + break; + case 7: + const o = this._csiHandlers[this._collect << 8 | r]; + let a = o ? o.length - 1 : -1; + for (; a >= 0 && (s = o[a](this._params), !0 !== s); a--) + if (s instanceof Promise) return this._preserveStack(3, o, a, n, i), s; + a < 0 && this._csiHandlerFb(this._collect << 8 | r, this._params), this.precedingJoinState = 0; + break; + case 8: + do { + switch (r) { + case 59: + this._params.addParam(0); + break; + case 58: + this._params.addSubParam(-1); + break; + default: + this._params.addDigit(r - 48) + } + } while (++i < t && (r = e[i]) > 47 && r < 60); + i--; + break; + case 9: + this._collect <<= 8, this._collect |= r; + break; + case 10: + const c = this._escHandlers[this._collect << 8 | r]; + let l = c ? c.length - 1 : -1; + for (; l >= 0 && (s = c[l](), !0 !== s); l--) + if (s instanceof Promise) return this._preserveStack(4, c, l, n, i), s; + l < 0 && this._escHandlerFb(this._collect << 8 | r), this.precedingJoinState = 0; + break; + case 11: + this._params.reset(), this._params.addParam(0), this._collect = 0; + break; + case 12: + this._dcsParser.hook(this._collect << 8 | r, this._params); + break; + case 13: + for (let s = i + 1;; ++s) + if (s >= t || 24 === (r = e[s]) || 26 === r || 27 === r || r > 127 && r < h) { + this._dcsParser.put(e, i, s), i = s - 1; + break + } break; + case 14: + if (s = this._dcsParser.unhook(24 !== r && 26 !== r), s) return this._preserveStack(6, [], 0, n, i), s; + 27 === r && (n |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0; + break; + case 4: + this._oscParser.start(); + break; + case 5: + for (let s = i + 1;; s++) + if (s >= t || (r = e[s]) < 32 || r > 127 && r < h) { + this._oscParser.put(e, i, s), i = s - 1; + break + } break; + case 6: + if (s = this._oscParser.end(24 !== r && 26 !== r), s) return this._preserveStack(5, [], 0, n, i), s; + 27 === r && (n |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0 + } + this.currentState = 15 & n + } + } + } + t.EscapeSequenceParser = c + }, + 6242: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.OscHandler = t.OscParser = void 0; + const s = i(5770), + r = i(482), + n = []; + t.OscParser = class { + constructor() { + this._state = 0, this._active = n, this._id = -1, this._handlers = Object.create(null), this._handlerFb = () => {}, this._stack = { + paused: !1, + loopPosition: 0, + fallThrough: !1 + } + } + registerHandler(e, t) { + void 0 === this._handlers[e] && (this._handlers[e] = []); + const i = this._handlers[e]; + return i.push(t), { + dispose: () => { + const e = i.indexOf(t); - 1 !== e && i.splice(e, 1) + } + } + } + clearHandler(e) { + this._handlers[e] && delete this._handlers[e] + } + setHandlerFallback(e) { + this._handlerFb = e + } + dispose() { + this._handlers = Object.create(null), this._handlerFb = () => {}, this._active = n + } + reset() { + if (2 === this._state) + for (let e = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; e >= 0; --e) this._active[e].end(!1); + this._stack.paused = !1, this._active = n, this._id = -1, this._state = 0 + } + _start() { + if (this._active = this._handlers[this._id] || n, this._active.length) + for (let e = this._active.length - 1; e >= 0; e--) this._active[e].start(); + else this._handlerFb(this._id, "START") + } + _put(e, t, i) { + if (this._active.length) + for (let s = this._active.length - 1; s >= 0; s--) this._active[s].put(e, t, i); + else this._handlerFb(this._id, "PUT", (0, r.utf32ToString)(e, t, i)) + } + start() { + this.reset(), this._state = 1 + } + put(e, t, i) { + if (3 !== this._state) { + if (1 === this._state) + for (; t < i;) { + const i = e[t++]; + if (59 === i) { + this._state = 2, this._start(); + break + } + if (i < 48 || 57 < i) return void(this._state = 3); - 1 === this._id && (this._id = 0), this._id = 10 * this._id + i - 48 + } + 2 === this._state && i - t > 0 && this._put(e, t, i) + } + } + end(e, t = !0) { + if (0 !== this._state) { + if (3 !== this._state) + if (1 === this._state && this._start(), this._active.length) { + let i = !1, + s = this._active.length - 1, + r = !1; + if (this._stack.paused && (s = this._stack.loopPosition - 1, i = t, r = this._stack.fallThrough, this._stack.paused = !1), !r && !1 === i) { + for (; s >= 0 && (i = this._active[s].end(e), !0 !== i); s--) + if (i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !1, i; + s-- + } + for (; s >= 0; s--) + if (i = this._active[s].end(!1), i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !0, i + } else this._handlerFb(this._id, "END", e); + this._active = n, this._id = -1, this._state = 0 + } + } + }, t.OscHandler = class { + constructor(e) { + this._handler = e, this._data = "", this._hitLimit = !1 + } + start() { + this._data = "", this._hitLimit = !1 + } + put(e, t, i) { + this._hitLimit || (this._data += (0, r.utf32ToString)(e, t, i), this._data.length > s.PAYLOAD_LIMIT && (this._data = "", this._hitLimit = !0)) + } + end(e) { + let t = !1; + if (this._hitLimit) t = !1; + else if (e && (t = this._handler(this._data), t instanceof Promise)) return t.then((e => (this._data = "", this._hitLimit = !1, e))); + return this._data = "", this._hitLimit = !1, t + } + } + }, + 8742: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.Params = void 0; + const i = 2147483647; + class s { + static fromArray(e) { + const t = new s; + if (!e.length) return t; + for (let i = Array.isArray(e[0]) ? 1 : 0; i < e.length; ++i) { + const s = e[i]; + if (Array.isArray(s)) + for (let e = 0; e < s.length; ++e) t.addSubParam(s[e]); + else t.addParam(s) + } + return t + } + constructor(e = 32, t = 32) { + if (this.maxLength = e, this.maxSubParamsLength = t, t > 256) throw new Error("maxSubParamsLength must not be greater than 256"); + this.params = new Int32Array(e), this.length = 0, this._subParams = new Int32Array(t), this._subParamsLength = 0, this._subParamsIdx = new Uint16Array(e), this._rejectDigits = !1, this._rejectSubDigits = !1, this._digitIsSub = !1 + } + clone() { + const e = new s(this.maxLength, this.maxSubParamsLength); + return e.params.set(this.params), e.length = this.length, e._subParams.set(this._subParams), e._subParamsLength = this._subParamsLength, e._subParamsIdx.set(this._subParamsIdx), e._rejectDigits = this._rejectDigits, e._rejectSubDigits = this._rejectSubDigits, e._digitIsSub = this._digitIsSub, e + } + toArray() { + const e = []; + for (let t = 0; t < this.length; ++t) { + e.push(this.params[t]); + const i = this._subParamsIdx[t] >> 8, + s = 255 & this._subParamsIdx[t]; + s - i > 0 && e.push(Array.prototype.slice.call(this._subParams, i, s)) + } + return e + } + reset() { + this.length = 0, this._subParamsLength = 0, this._rejectDigits = !1, this._rejectSubDigits = !1, this._digitIsSub = !1 + } + addParam(e) { + if (this._digitIsSub = !1, this.length >= this.maxLength) this._rejectDigits = !0; + else { + if (e < -1) throw new Error("values lesser than -1 are not allowed"); + this._subParamsIdx[this.length] = this._subParamsLength << 8 | this._subParamsLength, this.params[this.length++] = e > i ? i : e + } + } + addSubParam(e) { + if (this._digitIsSub = !0, this.length) + if (this._rejectDigits || this._subParamsLength >= this.maxSubParamsLength) this._rejectSubDigits = !0; + else { + if (e < -1) throw new Error("values lesser than -1 are not allowed"); + this._subParams[this._subParamsLength++] = e > i ? i : e, this._subParamsIdx[this.length - 1]++ + } + } + hasSubParams(e) { + return (255 & this._subParamsIdx[e]) - (this._subParamsIdx[e] >> 8) > 0 + } + getSubParams(e) { + const t = this._subParamsIdx[e] >> 8, + i = 255 & this._subParamsIdx[e]; + return i - t > 0 ? this._subParams.subarray(t, i) : null + } + getSubParamsAll() { + const e = {}; + for (let t = 0; t < this.length; ++t) { + const i = this._subParamsIdx[t] >> 8, + s = 255 & this._subParamsIdx[t]; + s - i > 0 && (e[t] = this._subParams.slice(i, s)) + } + return e + } + addDigit(e) { + let t; + if (this._rejectDigits || !(t = this._digitIsSub ? this._subParamsLength : this.length) || this._digitIsSub && this._rejectSubDigits) return; + const s = this._digitIsSub ? this._subParams : this.params, + r = s[t - 1]; + s[t - 1] = ~r ? Math.min(10 * r + e, i) : e + } + } + t.Params = s + }, + 5741: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.AddonManager = void 0, t.AddonManager = class { + constructor() { + this._addons = [] + } + dispose() { + for (let e = this._addons.length - 1; e >= 0; e--) this._addons[e].instance.dispose() + } + loadAddon(e, t) { + const i = { + instance: t, + dispose: t.dispose, + isDisposed: !1 + }; + this._addons.push(i), t.dispose = () => this._wrappedAddonDispose(i), t.activate(e) + } + _wrappedAddonDispose(e) { + if (e.isDisposed) return; + let t = -1; + for (let i = 0; i < this._addons.length; i++) + if (this._addons[i] === e) { + t = i; + break + } if (-1 === t) throw new Error("Could not dispose an addon that has not been loaded"); + e.isDisposed = !0, e.dispose.apply(e.instance), this._addons.splice(t, 1) + } + } + }, + 8771: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.BufferApiView = void 0; + const s = i(3785), + r = i(511); + t.BufferApiView = class { + constructor(e, t) { + this._buffer = e, this.type = t + } + init(e) { + return this._buffer = e, this + } + get cursorY() { + return this._buffer.y + } + get cursorX() { + return this._buffer.x + } + get viewportY() { + return this._buffer.ydisp + } + get baseY() { + return this._buffer.ybase + } + get length() { + return this._buffer.lines.length + } + getLine(e) { + const t = this._buffer.lines.get(e); + if (t) return new s.BufferLineApiView(t) + } + getNullCell() { + return new r.CellData + } + } + }, + 3785: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.BufferLineApiView = void 0; + const s = i(511); + t.BufferLineApiView = class { + constructor(e) { + this._line = e + } + get isWrapped() { + return this._line.isWrapped + } + get length() { + return this._line.length + } + getCell(e, t) { + if (!(e < 0 || e >= this._line.length)) return t ? (this._line.loadCell(e, t), t) : this._line.loadCell(e, new s.CellData) + } + translateToString(e, t, i) { + return this._line.translateToString(e, t, i) + } + } + }, + 8285: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.BufferNamespaceApi = void 0; + const s = i(8771), + r = i(8460), + n = i(844); + class o extends n.Disposable { + constructor(e) { + super(), this._core = e, this._onBufferChange = this.register(new r.EventEmitter), this.onBufferChange = this._onBufferChange.event, this._normal = new s.BufferApiView(this._core.buffers.normal, "normal"), this._alternate = new s.BufferApiView(this._core.buffers.alt, "alternate"), this._core.buffers.onBufferActivate((() => this._onBufferChange.fire(this.active))) + } + get active() { + if (this._core.buffers.active === this._core.buffers.normal) return this.normal; + if (this._core.buffers.active === this._core.buffers.alt) return this.alternate; + throw new Error("Active buffer is neither normal nor alternate") + } + get normal() { + return this._normal.init(this._core.buffers.normal) + } + get alternate() { + return this._alternate.init(this._core.buffers.alt) + } + } + t.BufferNamespaceApi = o + }, + 7975: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.ParserApi = void 0, t.ParserApi = class { + constructor(e) { + this._core = e + } + registerCsiHandler(e, t) { + return this._core.registerCsiHandler(e, (e => t(e.toArray()))) + } + addCsiHandler(e, t) { + return this.registerCsiHandler(e, t) + } + registerDcsHandler(e, t) { + return this._core.registerDcsHandler(e, ((e, i) => t(e, i.toArray()))) + } + addDcsHandler(e, t) { + return this.registerDcsHandler(e, t) + } + registerEscHandler(e, t) { + return this._core.registerEscHandler(e, t) + } + addEscHandler(e, t) { + return this.registerEscHandler(e, t) + } + registerOscHandler(e, t) { + return this._core.registerOscHandler(e, t) + } + addOscHandler(e, t) { + return this.registerOscHandler(e, t) + } + } + }, + 7090: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.UnicodeApi = void 0, t.UnicodeApi = class { + constructor(e) { + this._core = e + } + register(e) { + this._core.unicodeService.register(e) + } + get versions() { + return this._core.unicodeService.versions + } + get activeVersion() { + return this._core.unicodeService.activeVersion + } + set activeVersion(e) { + this._core.unicodeService.activeVersion = e + } + } + }, + 744: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.BufferService = t.MINIMUM_ROWS = t.MINIMUM_COLS = void 0; + const n = i(8460), + o = i(844), + a = i(5295), + h = i(2585); + t.MINIMUM_COLS = 2, t.MINIMUM_ROWS = 1; + let c = t.BufferService = class extends o.Disposable { + get buffer() { + return this.buffers.active + } + constructor(e) { + super(), this.isUserScrolling = !1, this._onResize = this.register(new n.EventEmitter), this.onResize = this._onResize.event, this._onScroll = this.register(new n.EventEmitter), this.onScroll = this._onScroll.event, this.cols = Math.max(e.rawOptions.cols || 0, t.MINIMUM_COLS), this.rows = Math.max(e.rawOptions.rows || 0, t.MINIMUM_ROWS), this.buffers = this.register(new a.BufferSet(e, this)) + } + resize(e, t) { + this.cols = e, this.rows = t, this.buffers.resize(e, t), this._onResize.fire({ + cols: e, + rows: t + }) + } + reset() { + this.buffers.reset(), this.isUserScrolling = !1 + } + scroll(e, t = !1) { + const i = this.buffer; + let s; + s = this._cachedBlankLine, s && s.length === this.cols && s.getFg(0) === e.fg && s.getBg(0) === e.bg || (s = i.getBlankLine(e, t), this._cachedBlankLine = s), s.isWrapped = t; + const r = i.ybase + i.scrollTop, + n = i.ybase + i.scrollBottom; + if (0 === i.scrollTop) { + const e = i.lines.isFull; + n === i.lines.length - 1 ? e ? i.lines.recycle().copyFrom(s) : i.lines.push(s.clone()) : i.lines.splice(n + 1, 0, s.clone()), e ? this.isUserScrolling && (i.ydisp = Math.max(i.ydisp - 1, 0)) : (i.ybase++, this.isUserScrolling || i.ydisp++) + } else { + const e = n - r + 1; + i.lines.shiftElements(r + 1, e - 1, -1), i.lines.set(n, s.clone()) + } + this.isUserScrolling || (i.ydisp = i.ybase), this._onScroll.fire(i.ydisp) + } + scrollLines(e, t, i) { + const s = this.buffer; + if (e < 0) { + if (0 === s.ydisp) return; + this.isUserScrolling = !0 + } else e + s.ydisp >= s.ybase && (this.isUserScrolling = !1); + const r = s.ydisp; + s.ydisp = Math.max(Math.min(s.ydisp + e, s.ybase), 0), r !== s.ydisp && (t || this._onScroll.fire(s.ydisp)) + } + }; + t.BufferService = c = s([r(0, h.IOptionsService)], c) + }, + 7994: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CharsetService = void 0, t.CharsetService = class { + constructor() { + this.glevel = 0, this._charsets = [] + } + reset() { + this.charset = void 0, this._charsets = [], this.glevel = 0 + } + setgLevel(e) { + this.glevel = e, this.charset = this._charsets[e] + } + setgCharset(e, t) { + this._charsets[e] = t, this.glevel === e && (this.charset = t) + } + } + }, + 1753: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CoreMouseService = void 0; + const n = i(2585), + o = i(8460), + a = i(844), + h = { + NONE: { + events: 0, + restrict: () => !1 + }, + X10: { + events: 1, + restrict: e => 4 !== e.button && 1 === e.action && (e.ctrl = !1, e.alt = !1, e.shift = !1, !0) + }, + VT200: { + events: 19, + restrict: e => 32 !== e.action + }, + DRAG: { + events: 23, + restrict: e => 32 !== e.action || 3 !== e.button + }, + ANY: { + events: 31, + restrict: e => !0 + } + }; + + function c(e, t) { + let i = (e.ctrl ? 16 : 0) | (e.shift ? 4 : 0) | (e.alt ? 8 : 0); + return 4 === e.button ? (i |= 64, i |= e.action) : (i |= 3 & e.button, 4 & e.button && (i |= 64), 8 & e.button && (i |= 128), 32 === e.action ? i |= 32 : 0 !== e.action || t || (i |= 3)), i + } + const l = String.fromCharCode, + d = { + DEFAULT: e => { + const t = [c(e, !1) + 32, e.col + 32, e.row + 32]; + return t[0] > 255 || t[1] > 255 || t[2] > 255 ? "" : `${l(t[0])}${l(t[1])}${l(t[2])}` + }, + SGR: e => { + const t = 0 === e.action && 4 !== e.button ? "m" : "M"; + return `[<${c(e, !0)};${e.col};${e.row}${t}` + }, + SGR_PIXELS: e => { + const t = 0 === e.action && 4 !== e.button ? "m" : "M"; + return `[<${c(e, !0)};${e.x};${e.y}${t}` + } + }; + let _ = t.CoreMouseService = class extends a.Disposable { + constructor(e, t) { + super(), this._bufferService = e, this._coreService = t, this._protocols = {}, this._encodings = {}, this._activeProtocol = "", this._activeEncoding = "", this._lastEvent = null, this._onProtocolChange = this.register(new o.EventEmitter), this.onProtocolChange = this._onProtocolChange.event; + for (const e of Object.keys(h)) this.addProtocol(e, h[e]); + for (const e of Object.keys(d)) this.addEncoding(e, d[e]); + this.reset() + } + addProtocol(e, t) { + this._protocols[e] = t + } + addEncoding(e, t) { + this._encodings[e] = t + } + get activeProtocol() { + return this._activeProtocol + } + get areMouseEventsActive() { + return 0 !== this._protocols[this._activeProtocol].events + } + set activeProtocol(e) { + if (!this._protocols[e]) throw new Error(`unknown protocol "${e}"`); + this._activeProtocol = e, this._onProtocolChange.fire(this._protocols[e].events) + } + get activeEncoding() { + return this._activeEncoding + } + set activeEncoding(e) { + if (!this._encodings[e]) throw new Error(`unknown encoding "${e}"`); + this._activeEncoding = e + } + reset() { + this.activeProtocol = "NONE", this.activeEncoding = "DEFAULT", this._lastEvent = null + } + triggerMouseEvent(e) { + if (e.col < 0 || e.col >= this._bufferService.cols || e.row < 0 || e.row >= this._bufferService.rows) return !1; + if (4 === e.button && 32 === e.action) return !1; + if (3 === e.button && 32 !== e.action) return !1; + if (4 !== e.button && (2 === e.action || 3 === e.action)) return !1; + if (e.col++, e.row++, 32 === e.action && this._lastEvent && this._equalEvents(this._lastEvent, e, "SGR_PIXELS" === this._activeEncoding)) return !1; + if (!this._protocols[this._activeProtocol].restrict(e)) return !1; + const t = this._encodings[this._activeEncoding](e); + return t && ("DEFAULT" === this._activeEncoding ? this._coreService.triggerBinaryEvent(t) : this._coreService.triggerDataEvent(t, !0)), this._lastEvent = e, !0 + } + explainEvents(e) { + return { + down: !!(1 & e), + up: !!(2 & e), + drag: !!(4 & e), + move: !!(8 & e), + wheel: !!(16 & e) + } + } + _equalEvents(e, t, i) { + if (i) { + if (e.x !== t.x) return !1; + if (e.y !== t.y) return !1 + } else { + if (e.col !== t.col) return !1; + if (e.row !== t.row) return !1 + } + return e.button === t.button && e.action === t.action && e.ctrl === t.ctrl && e.alt === t.alt && e.shift === t.shift + } + }; + t.CoreMouseService = _ = s([r(0, n.IBufferService), r(1, n.ICoreService)], _) + }, + 6975: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CoreService = void 0; + const n = i(1439), + o = i(8460), + a = i(844), + h = i(2585), + c = Object.freeze({ + insertMode: !1 + }), + l = Object.freeze({ + applicationCursorKeys: !1, + applicationKeypad: !1, + bracketedPasteMode: !1, + origin: !1, + reverseWraparound: !1, + sendFocus: !1, + wraparound: !0 + }); + let d = t.CoreService = class extends a.Disposable { + constructor(e, t, i) { + super(), this._bufferService = e, this._logService = t, this._optionsService = i, this.isCursorInitialized = !1, this.isCursorHidden = !1, this._onData = this.register(new o.EventEmitter), this.onData = this._onData.event, this._onUserInput = this.register(new o.EventEmitter), this.onUserInput = this._onUserInput.event, this._onBinary = this.register(new o.EventEmitter), this.onBinary = this._onBinary.event, this._onRequestScrollToBottom = this.register(new o.EventEmitter), this.onRequestScrollToBottom = this._onRequestScrollToBottom.event, this.modes = (0, n.clone)(c), this.decPrivateModes = (0, n.clone)(l) + } + reset() { + this.modes = (0, n.clone)(c), this.decPrivateModes = (0, n.clone)(l) + } + triggerDataEvent(e, t = !1) { + if (this._optionsService.rawOptions.disableStdin) return; + const i = this._bufferService.buffer; + t && this._optionsService.rawOptions.scrollOnUserInput && i.ybase !== i.ydisp && this._onRequestScrollToBottom.fire(), t && this._onUserInput.fire(), this._logService.debug(`sending data "${e}"`, (() => e.split("").map((e => e.charCodeAt(0))))), this._onData.fire(e) + } + triggerBinaryEvent(e) { + this._optionsService.rawOptions.disableStdin || (this._logService.debug(`sending binary "${e}"`, (() => e.split("").map((e => e.charCodeAt(0))))), this._onBinary.fire(e)) + } + }; + t.CoreService = d = s([r(0, h.IBufferService), r(1, h.ILogService), r(2, h.IOptionsService)], d) + }, + 9074: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.DecorationService = void 0; + const s = i(8055), + r = i(8460), + n = i(844), + o = i(6106); + let a = 0, + h = 0; + class c extends n.Disposable { + get decorations() { + return this._decorations.values() + } + constructor() { + super(), this._decorations = new o.SortedList((e => e?.marker.line)), this._onDecorationRegistered = this.register(new r.EventEmitter), this.onDecorationRegistered = this._onDecorationRegistered.event, this._onDecorationRemoved = this.register(new r.EventEmitter), this.onDecorationRemoved = this._onDecorationRemoved.event, this.register((0, n.toDisposable)((() => this.reset()))) + } + registerDecoration(e) { + if (e.marker.isDisposed) return; + const t = new l(e); + if (t) { + const e = t.marker.onDispose((() => t.dispose())); + t.onDispose((() => { + t && (this._decorations.delete(t) && this._onDecorationRemoved.fire(t), e.dispose()) + })), this._decorations.insert(t), this._onDecorationRegistered.fire(t) + } + return t + } + reset() { + for (const e of this._decorations.values()) e.dispose(); + this._decorations.clear() + }* getDecorationsAtCell(e, t, i) { + let s = 0, + r = 0; + for (const n of this._decorations.getKeyIterator(t)) s = n.options.x ?? 0, r = s + (n.options.width ?? 1), e >= s && e < r && (!i || (n.options.layer ?? "bottom") === i) && (yield n) + } + forEachDecorationAtCell(e, t, i, s) { + this._decorations.forEachByKey(t, (t => { + a = t.options.x ?? 0, h = a + (t.options.width ?? 1), e >= a && e < h && (!i || (t.options.layer ?? "bottom") === i) && s(t) + })) + } + } + t.DecorationService = c; + class l extends n.Disposable { + get isDisposed() { + return this._isDisposed + } + get backgroundColorRGB() { + return null === this._cachedBg && (this.options.backgroundColor ? this._cachedBg = s.css.toColor(this.options.backgroundColor) : this._cachedBg = void 0), this._cachedBg + } + get foregroundColorRGB() { + return null === this._cachedFg && (this.options.foregroundColor ? this._cachedFg = s.css.toColor(this.options.foregroundColor) : this._cachedFg = void 0), this._cachedFg + } + constructor(e) { + super(), this.options = e, this.onRenderEmitter = this.register(new r.EventEmitter), this.onRender = this.onRenderEmitter.event, this._onDispose = this.register(new r.EventEmitter), this.onDispose = this._onDispose.event, this._cachedBg = null, this._cachedFg = null, this.marker = e.marker, this.options.overviewRulerOptions && !this.options.overviewRulerOptions.position && (this.options.overviewRulerOptions.position = "full") + } + dispose() { + this._onDispose.fire(), super.dispose() + } + } + }, + 4348: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.InstantiationService = t.ServiceCollection = void 0; + const s = i(2585), + r = i(8343); + class n { + 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 + } + forEach(e) { + for (const [t, i] of this._entries.entries()) e(t, i) + } + has(e) { + return this._entries.has(e) + } + get(e) { + return this._entries.get(e) + } + } + t.ServiceCollection = n, t.InstantiationService = class { + constructor() { + this._services = new n, this._services.set(s.IInstantiationService, this) + } + setService(e, t) { + this._services.set(e, t) + } + getService(e) { + return this._services.get(e) + } + createInstance(e, ...t) { + const i = (0, r.getServiceDependencies)(e).sort(((e, t) => e.index - t.index)), + s = []; + for (const t of i) { + const i = this._services.get(t.id); + if (!i) throw new Error(`[createInstance] ${e.name} depends on UNKNOWN service ${t.id}.`); + s.push(i) + } + const n = i.length > 0 ? i[0].index : t.length; + if (t.length !== n) throw new Error(`[createInstance] First service dependency of ${e.name} at position ${n + 1} conflicts with ${t.length} static arguments`); + return new e(...[...t, ...s]) + } + } + }, + 7866: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.traceCall = t.setTraceLogger = t.LogService = void 0; + const n = i(844), + o = i(2585), + a = { + trace: o.LogLevelEnum.TRACE, + debug: o.LogLevelEnum.DEBUG, + info: o.LogLevelEnum.INFO, + warn: o.LogLevelEnum.WARN, + error: o.LogLevelEnum.ERROR, + off: o.LogLevelEnum.OFF + }; + let h, c = t.LogService = class extends n.Disposable { + get logLevel() { + return this._logLevel + } + constructor(e) { + super(), this._optionsService = e, this._logLevel = o.LogLevelEnum.OFF, this._updateLogLevel(), this.register(this._optionsService.onSpecificOptionChange("logLevel", (() => this._updateLogLevel()))), h = this + } + _updateLogLevel() { + this._logLevel = a[this._optionsService.rawOptions.logLevel] + } + _evalLazyOptionalParams(e) { + for (let t = 0; t < e.length; t++) "function" == typeof e[t] && (e[t] = e[t]()) + } + _log(e, t, i) { + this._evalLazyOptionalParams(i), e.call(console, (this._optionsService.options.logger ? "" : "xterm.js: ") + t, ...i) + } + trace(e, ...t) { + this._logLevel <= o.LogLevelEnum.TRACE && this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger) ?? console.log, e, t) + } + debug(e, ...t) { + this._logLevel <= o.LogLevelEnum.DEBUG && this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger) ?? console.log, e, t) + } + info(e, ...t) { + this._logLevel <= o.LogLevelEnum.INFO && this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger) ?? console.info, e, t) + } + warn(e, ...t) { + this._logLevel <= o.LogLevelEnum.WARN && this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger) ?? console.warn, e, t) + } + error(e, ...t) { + this._logLevel <= o.LogLevelEnum.ERROR && this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger) ?? console.error, e, t) + } + }; + t.LogService = c = s([r(0, o.IOptionsService)], c), t.setTraceLogger = function(e) { + h = e + }, t.traceCall = function(e, t, i) { + if ("function" != typeof i.value) throw new Error("not supported"); + const s = i.value; + i.value = function(...e) { + if (h.logLevel !== o.LogLevelEnum.TRACE) return s.apply(this, e); + h.trace(`GlyphRenderer#${s.name}(${e.map((e => JSON.stringify(e))).join(", ")})`); + const t = s.apply(this, e); + return h.trace(`GlyphRenderer#${s.name} return`, t), t + } + } + }, + 7302: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.OptionsService = t.DEFAULT_OPTIONS = void 0; + const s = i(8460), + r = i(844), + n = i(6114); + t.DEFAULT_OPTIONS = { + cols: 80, + rows: 24, + cursorBlink: !1, + cursorStyle: "block", + cursorWidth: 1, + cursorInactiveStyle: "outline", + customGlyphs: !0, + drawBoldTextInBrightColors: !0, + documentOverride: null, + fastScrollModifier: "alt", + fastScrollSensitivity: 5, + fontFamily: "courier-new, courier, monospace", + fontSize: 15, + fontWeight: "normal", + fontWeightBold: "bold", + ignoreBracketedPasteMode: !1, + lineHeight: 1, + letterSpacing: 0, + linkHandler: null, + logLevel: "info", + logger: null, + scrollback: 1e3, + scrollOnUserInput: !0, + scrollSensitivity: 1, + screenReaderMode: !1, + smoothScrollDuration: 0, + macOptionIsMeta: !1, + macOptionClickForcesSelection: !1, + minimumContrastRatio: 1, + disableStdin: !1, + allowProposedApi: !1, + allowTransparency: !1, + tabStopWidth: 8, + theme: {}, + rescaleOverlappingGlyphs: !1, + rightClickSelectsWord: n.isMac, + windowOptions: {}, + windowsMode: !1, + windowsPty: {}, + wordSeparator: " ()[]{}',\"`", + altClickMovesCursor: !0, + convertEol: !1, + termName: "xterm", + cancelEvents: !1, + overviewRulerWidth: 0 + }; + const o = ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"]; + class a extends r.Disposable { + constructor(e) { + super(), this._onOptionChange = this.register(new s.EventEmitter), this.onOptionChange = this._onOptionChange.event; + const i = { + ...t.DEFAULT_OPTIONS + }; + for (const t in e) + if (t in i) try { + const s = e[t]; + i[t] = this._sanitizeAndValidateOption(t, s) + } catch (e) { + console.error(e) + } + this.rawOptions = i, this.options = { + ...i + }, this._setupOptions(), this.register((0, r.toDisposable)((() => { + this.rawOptions.linkHandler = null, this.rawOptions.documentOverride = null + }))) + } + onSpecificOptionChange(e, t) { + return this.onOptionChange((i => { + i === e && t(this.rawOptions[e]) + })) + } + onMultipleOptionChange(e, t) { + return this.onOptionChange((i => { + -1 !== e.indexOf(i) && t() + })) + } + _setupOptions() { + const e = e => { + if (!(e in t.DEFAULT_OPTIONS)) throw new Error(`No option with key "${e}"`); + return this.rawOptions[e] + }, + i = (e, i) => { + if (!(e in t.DEFAULT_OPTIONS)) throw new Error(`No option with key "${e}"`); + i = this._sanitizeAndValidateOption(e, i), this.rawOptions[e] !== i && (this.rawOptions[e] = i, this._onOptionChange.fire(e)) + }; + for (const t in this.rawOptions) { + const s = { + get: e.bind(this, t), + set: i.bind(this, t) + }; + Object.defineProperty(this.options, t, s) + } + } + _sanitizeAndValidateOption(e, i) { + switch (e) { + case "cursorStyle": + if (i || (i = t.DEFAULT_OPTIONS[e]), ! function(e) { + return "block" === e || "underline" === e || "bar" === e + }(i)) throw new Error(`"${i}" is not a valid value for ${e}`); + break; + case "wordSeparator": + i || (i = t.DEFAULT_OPTIONS[e]); + break; + case "fontWeight": + case "fontWeightBold": + if ("number" == typeof i && 1 <= i && i <= 1e3) break; + i = o.includes(i) ? i : t.DEFAULT_OPTIONS[e]; + break; + case "cursorWidth": + i = Math.floor(i); + case "lineHeight": + case "tabStopWidth": + if (i < 1) throw new Error(`${e} cannot be less than 1, value: ${i}`); + break; + case "minimumContrastRatio": + i = Math.max(1, Math.min(21, Math.round(10 * i) / 10)); + break; + case "scrollback": + if ((i = Math.min(i, 4294967295)) < 0) throw new Error(`${e} cannot be less than 0, value: ${i}`); + break; + case "fastScrollSensitivity": + case "scrollSensitivity": + if (i <= 0) throw new Error(`${e} cannot be less than or equal to 0, value: ${i}`); + break; + case "rows": + case "cols": + if (!i && 0 !== i) throw new Error(`${e} must be numeric, value: ${i}`); + break; + case "windowsPty": + i = i ?? {} + } + return i + } + } + t.OptionsService = a + }, + 2660: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.OscLinkService = void 0; + const n = i(2585); + let o = t.OscLinkService = class { + constructor(e) { + this._bufferService = e, this._nextId = 1, this._entriesWithId = new Map, this._dataByLinkId = new Map + } + registerLink(e) { + const t = this._bufferService.buffer; + if (void 0 === e.id) { + const i = t.addMarker(t.ybase + t.y), + s = { + data: e, + id: this._nextId++, + lines: [i] + }; + return i.onDispose((() => this._removeMarkerFromLink(s, i))), this._dataByLinkId.set(s.id, s), s.id + } + const i = e, + s = this._getEntryIdKey(i), + r = this._entriesWithId.get(s); + if (r) return this.addLineToLink(r.id, t.ybase + t.y), r.id; + const n = t.addMarker(t.ybase + t.y), + o = { + id: this._nextId++, + key: this._getEntryIdKey(i), + data: i, + lines: [n] + }; + return n.onDispose((() => this._removeMarkerFromLink(o, n))), this._entriesWithId.set(o.key, o), this._dataByLinkId.set(o.id, o), o.id + } + addLineToLink(e, t) { + const i = this._dataByLinkId.get(e); + if (i && i.lines.every((e => e.line !== t))) { + const e = this._bufferService.buffer.addMarker(t); + i.lines.push(e), e.onDispose((() => this._removeMarkerFromLink(i, e))) + } + } + getLinkData(e) { + return this._dataByLinkId.get(e)?.data + } + _getEntryIdKey(e) { + return `${e.id};;${e.uri}` + } + _removeMarkerFromLink(e, t) { + const i = e.lines.indexOf(t); - 1 !== i && (e.lines.splice(i, 1), 0 === e.lines.length && (void 0 !== e.data.id && this._entriesWithId.delete(e.key), this._dataByLinkId.delete(e.id))) + } + }; + t.OscLinkService = o = s([r(0, n.IBufferService)], o) + }, + 8343: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.createDecorator = t.getServiceDependencies = t.serviceRegistry = void 0; + const i = "di$target", + s = "di$dependencies"; + t.serviceRegistry = new Map, t.getServiceDependencies = function(e) { + return e[s] || [] + }, t.createDecorator = function(e) { + if (t.serviceRegistry.has(e)) return t.serviceRegistry.get(e); + const r = function(e, t, n) { + if (3 !== arguments.length) throw new Error("@IServiceName-decorator can only be used to decorate a parameter"); + ! function(e, t, r) { + t[i] === t ? t[s].push({ + id: e, + index: r + }) : (t[s] = [{ + id: e, + index: r + }], t[i] = t) + }(r, e, n) + }; + return r.toString = () => e, t.serviceRegistry.set(e, r), r + } + }, + 2585: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.IDecorationService = t.IUnicodeService = t.IOscLinkService = t.IOptionsService = t.ILogService = t.LogLevelEnum = t.IInstantiationService = t.ICharsetService = t.ICoreService = t.ICoreMouseService = t.IBufferService = void 0; + const s = i(8343); + var r; + t.IBufferService = (0, s.createDecorator)("BufferService"), t.ICoreMouseService = (0, s.createDecorator)("CoreMouseService"), t.ICoreService = (0, s.createDecorator)("CoreService"), t.ICharsetService = (0, s.createDecorator)("CharsetService"), t.IInstantiationService = (0, s.createDecorator)("InstantiationService"), + function(e) { + e[e.TRACE = 0] = "TRACE", e[e.DEBUG = 1] = "DEBUG", e[e.INFO = 2] = "INFO", e[e.WARN = 3] = "WARN", e[e.ERROR = 4] = "ERROR", e[e.OFF = 5] = "OFF" + }(r || (t.LogLevelEnum = r = {})), t.ILogService = (0, s.createDecorator)("LogService"), t.IOptionsService = (0, s.createDecorator)("OptionsService"), t.IOscLinkService = (0, s.createDecorator)("OscLinkService"), t.IUnicodeService = (0, s.createDecorator)("UnicodeService"), t.IDecorationService = (0, s.createDecorator)("DecorationService") + }, + 1480: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.UnicodeService = void 0; + const s = i(8460), + r = i(225); + class n { + static extractShouldJoin(e) { + return !!(1 & e) + } + static extractWidth(e) { + return e >> 1 & 3 + } + static extractCharKind(e) { + return e >> 3 + } + static createPropertyValue(e, t, i = !1) { + return (16777215 & e) << 3 | (3 & t) << 1 | (i ? 1 : 0) + } + constructor() { + this._providers = Object.create(null), this._active = "", this._onChange = new s.EventEmitter, this.onChange = this._onChange.event; + const e = new r.UnicodeV6; + this.register(e), this._active = e.version, this._activeProvider = e + } + dispose() { + this._onChange.dispose() + } + get versions() { + return Object.keys(this._providers) + } + get activeVersion() { + return this._active + } + set activeVersion(e) { + if (!this._providers[e]) throw new Error(`unknown Unicode version "${e}"`); + this._active = e, this._activeProvider = this._providers[e], this._onChange.fire(e) + } + register(e) { + this._providers[e.version] = e + } + wcwidth(e) { + return this._activeProvider.wcwidth(e) + } + getStringCellWidth(e) { + let t = 0, + i = 0; + const s = e.length; + for (let r = 0; r < s; ++r) { + let o = e.charCodeAt(r); + if (55296 <= o && o <= 56319) { + if (++r >= s) return t + this.wcwidth(o); + const i = e.charCodeAt(r); + 56320 <= i && i <= 57343 ? o = 1024 * (o - 55296) + i - 56320 + 65536 : t += this.wcwidth(i) + } + const a = this.charProperties(o, i); + let h = n.extractWidth(a); + n.extractShouldJoin(a) && (h -= n.extractWidth(i)), t += h, i = a + } + return t + } + charProperties(e, t) { + return this._activeProvider.charProperties(e, t) + } + } + t.UnicodeService = n + } + }, + t = {}; + + function i(s) { + var r = t[s]; + if (void 0 !== r) return r.exports; + var n = t[s] = { + exports: {} + }; + return e[s].call(n.exports, n, n.exports, i), n.exports + } + var s = {}; + return (() => { + var e = s; + Object.defineProperty(e, "__esModule", { + value: !0 + }), e.Terminal = void 0; + const t = i(9042), + r = i(3236), + n = i(844), + o = i(5741), + a = i(8285), + h = i(7975), + c = i(7090), + l = ["cols", "rows"]; + class d extends n.Disposable { + constructor(e) { + super(), this._core = this.register(new r.Terminal(e)), this._addonManager = this.register(new o.AddonManager), this._publicOptions = { + ...this._core.options + }; + const t = e => this._core.options[e], + i = (e, t) => { + this._checkReadonlyOptions(e), this._core.options[e] = t + }; + for (const e in this._core.options) { + const s = { + get: t.bind(this, e), + set: i.bind(this, e) + }; + Object.defineProperty(this._publicOptions, e, s) + } + } + _checkReadonlyOptions(e) { + if (l.includes(e)) throw new Error(`Option "${e}" can only be set in the constructor`) + } + _checkProposedApi() { + if (!this._core.optionsService.rawOptions.allowProposedApi) throw new Error("You must set the allowProposedApi option to true to use proposed API") + } + get onBell() { + return this._core.onBell + } + get onBinary() { + return this._core.onBinary + } + get onCursorMove() { + return this._core.onCursorMove + } + get onData() { + return this._core.onData + } + get onKey() { + return this._core.onKey + } + get onLineFeed() { + return this._core.onLineFeed + } + get onRender() { + return this._core.onRender + } + get onResize() { + return this._core.onResize + } + get onScroll() { + return this._core.onScroll + } + get onSelectionChange() { + return this._core.onSelectionChange + } + get onTitleChange() { + return this._core.onTitleChange + } + get onWriteParsed() { + return this._core.onWriteParsed + } + get element() { + return this._core.element + } + get parser() { + return this._parser || (this._parser = new h.ParserApi(this._core)), this._parser + } + get unicode() { + return this._checkProposedApi(), new c.UnicodeApi(this._core) + } + get textarea() { + return this._core.textarea + } + get rows() { + return this._core.rows + } + get cols() { + return this._core.cols + } + get buffer() { + return this._buffer || (this._buffer = this.register(new a.BufferNamespaceApi(this._core))), this._buffer + } + get markers() { + return this._checkProposedApi(), this._core.markers + } + get modes() { + const e = this._core.coreService.decPrivateModes; + let t = "none"; + switch (this._core.coreMouseService.activeProtocol) { + case "X10": + t = "x10"; + break; + case "VT200": + t = "vt200"; + break; + case "DRAG": + t = "drag"; + break; + case "ANY": + t = "any" + } + return { + applicationCursorKeysMode: e.applicationCursorKeys, + applicationKeypadMode: e.applicationKeypad, + bracketedPasteMode: e.bracketedPasteMode, + insertMode: this._core.coreService.modes.insertMode, + mouseTrackingMode: t, + originMode: e.origin, + reverseWraparoundMode: e.reverseWraparound, + sendFocusMode: e.sendFocus, + wraparoundMode: e.wraparound + } + } + get options() { + return this._publicOptions + } + set options(e) { + for (const t in e) this._publicOptions[t] = e[t] + } + blur() { + this._core.blur() + } + focus() { + this._core.focus() + } + input(e, t = !0) { + this._core.input(e, t) + } + resize(e, t) { + this._verifyIntegers(e, t), this._core.resize(e, t) + } + open(e) { + this._core.open(e) + } + attachCustomKeyEventHandler(e) { + this._core.attachCustomKeyEventHandler(e) + } + attachCustomWheelEventHandler(e) { + this._core.attachCustomWheelEventHandler(e) + } + registerLinkProvider(e) { + return this._core.registerLinkProvider(e) + } + registerCharacterJoiner(e) { + return this._checkProposedApi(), this._core.registerCharacterJoiner(e) + } + deregisterCharacterJoiner(e) { + this._checkProposedApi(), this._core.deregisterCharacterJoiner(e) + } + registerMarker(e = 0) { + return this._verifyIntegers(e), this._core.registerMarker(e) + } + registerDecoration(e) { + return this._checkProposedApi(), this._verifyPositiveIntegers(e.x ?? 0, e.width ?? 0, e.height ?? 0), this._core.registerDecoration(e) + } + hasSelection() { + return this._core.hasSelection() + } + select(e, t, i) { + this._verifyIntegers(e, t, i), this._core.select(e, t, i) + } + getSelection() { + return this._core.getSelection() + } + getSelectionPosition() { + return this._core.getSelectionPosition() + } + clearSelection() { + this._core.clearSelection() + } + selectAll() { + this._core.selectAll() + } + selectLines(e, t) { + this._verifyIntegers(e, t), this._core.selectLines(e, t) + } + dispose() { + super.dispose() + } + scrollLines(e) { + this._verifyIntegers(e), this._core.scrollLines(e) + } + scrollPages(e) { + this._verifyIntegers(e), this._core.scrollPages(e) + } + scrollToTop() { + this._core.scrollToTop() + } + scrollToBottom() { + this._core.scrollToBottom() + } + scrollToLine(e) { + this._verifyIntegers(e), this._core.scrollToLine(e) + } + clear() { + this._core.clear() + } + write(e, t) { + this._core.write(e, t) + } + writeln(e, t) { + this._core.write(e), this._core.write("\r\n", t) + } + paste(e) { + this._core.paste(e) + } + refresh(e, t) { + this._verifyIntegers(e, t), this._core.refresh(e, t) + } + reset() { + this._core.reset() + } + clearTextureAtlas() { + this._core.clearTextureAtlas() + } + loadAddon(e) { + this._addonManager.loadAddon(this, e) + } + static get strings() { + return t + } + _verifyIntegers(...e) { + for (const t of e) + if (t === 1 / 0 || isNaN(t) || t % 1 != 0) throw new Error("This API only accepts integers") + } + _verifyPositiveIntegers(...e) { + for (const t of e) + if (t && (t === 1 / 0 || isNaN(t) || t % 1 != 0 || t < 0)) throw new Error("This API only accepts positive integers") + } + } + e.Terminal = d + })(), s + })(), e.exports = t() + }, + 880: e => { + var t; + self, t = () => (() => { + "use strict"; + var e = { + 903: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.BaseRenderLayer = void 0; + const s = i(274), + r = i(627), + n = i(237), + o = i(860), + a = i(374), + h = i(296), + c = i(345), + l = i(859), + d = i(399), + _ = i(855); + class u extends l.Disposable { + get canvas() { + return this._canvas + } + get cacheCanvas() { + return this._charAtlas?.pages[0].canvas + } + constructor(e, t, i, r, n, o, a, d, _, u) { + super(), this._terminal = e, this._container = t, this._alpha = n, this._themeService = o, this._bufferService = a, this._optionsService = d, this._decorationService = _, this._coreBrowserService = u, this._deviceCharWidth = 0, this._deviceCharHeight = 0, this._deviceCellWidth = 0, this._deviceCellHeight = 0, this._deviceCharLeft = 0, this._deviceCharTop = 0, this._selectionModel = (0, h.createSelectionRenderModel)(), this._bitmapGenerator = [], this._charAtlasDisposable = this.register(new l.MutableDisposable), this._onAddTextureAtlasCanvas = this.register(new c.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._cellColorResolver = new s.CellColorResolver(this._terminal, this._optionsService, this._selectionModel, this._decorationService, this._coreBrowserService, this._themeService), this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add(`xterm-${i}-layer`), this._canvas.style.zIndex = r.toString(), this._initCanvas(), this._container.appendChild(this._canvas), this._refreshCharAtlas(this._themeService.colors), this.register(this._themeService.onChangeColors((e => { + this._refreshCharAtlas(e), this.reset(), this.handleSelectionChanged(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode) + }))), this.register((0, l.toDisposable)((() => { + this._canvas.remove() + }))) + } + _initCanvas() { + this._ctx = (0, a.throwIfFalsy)(this._canvas.getContext("2d", { + alpha: this._alpha + })), this._alpha || this._clearAll() + } + handleBlur() {} + handleFocus() {} + handleCursorMove() {} + handleGridChanged(e, t) {} + handleSelectionChanged(e, t, i = !1) { + this._selectionModel.update(this._terminal._core, e, t, i) + } + _setTransparency(e) { + if (e === this._alpha) return; + const t = this._canvas; + this._alpha = e, this._canvas = this._canvas.cloneNode(), this._initCanvas(), this._container.replaceChild(this._canvas, t), this._refreshCharAtlas(this._themeService.colors), this.handleGridChanged(0, this._bufferService.rows - 1) + } + _refreshCharAtlas(e) { + if (!(this._deviceCharWidth <= 0 && this._deviceCharHeight <= 0)) { + this._charAtlas = (0, r.acquireTextureAtlas)(this._terminal, this._optionsService.rawOptions, e, this._deviceCellWidth, this._deviceCellHeight, this._deviceCharWidth, this._deviceCharHeight, this._coreBrowserService.dpr), this._charAtlasDisposable.value = (0, c.forwardEvent)(this._charAtlas.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas), this._charAtlas.warmUp(); + for (let e = 0; e < this._charAtlas.pages.length; e++) this._bitmapGenerator[e] = new f(this._charAtlas.pages[e].canvas) + } + } + resize(e) { + this._deviceCellWidth = e.device.cell.width, this._deviceCellHeight = e.device.cell.height, this._deviceCharWidth = e.device.char.width, this._deviceCharHeight = e.device.char.height, this._deviceCharLeft = e.device.char.left, this._deviceCharTop = e.device.char.top, this._canvas.width = e.device.canvas.width, this._canvas.height = e.device.canvas.height, this._canvas.style.width = `${e.css.canvas.width}px`, this._canvas.style.height = `${e.css.canvas.height}px`, this._alpha || this._clearAll(), this._refreshCharAtlas(this._themeService.colors) + } + clearTextureAtlas() { + this._charAtlas?.clearTexture() + } + _fillCells(e, t, i, s) { + this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight) + } + _fillMiddleLineAtCells(e, t, i = 1) { + const s = Math.ceil(.5 * this._deviceCellHeight); + this._ctx.fillRect(e * this._deviceCellWidth, (t + 1) * this._deviceCellHeight - s - this._coreBrowserService.dpr, i * this._deviceCellWidth, this._coreBrowserService.dpr) + } + _fillBottomLineAtCells(e, t, i = 1, s = 0) { + this._ctx.fillRect(e * this._deviceCellWidth, (t + 1) * this._deviceCellHeight + s - this._coreBrowserService.dpr - 1, i * this._deviceCellWidth, this._coreBrowserService.dpr) + } + _curlyUnderlineAtCell(e, t, i = 1) { + this._ctx.save(), this._ctx.beginPath(), this._ctx.strokeStyle = this._ctx.fillStyle; + const s = this._coreBrowserService.dpr; + this._ctx.lineWidth = s; + for (let r = 0; r < i; r++) { + const i = (e + r) * this._deviceCellWidth, + n = (e + r + .5) * this._deviceCellWidth, + o = (e + r + 1) * this._deviceCellWidth, + a = (t + 1) * this._deviceCellHeight - s - 1, + h = a - s, + c = a + s; + this._ctx.moveTo(i, a), this._ctx.bezierCurveTo(i, h, n, h, n, a), this._ctx.bezierCurveTo(n, c, o, c, o, a) + } + this._ctx.stroke(), this._ctx.restore() + } + _dottedUnderlineAtCell(e, t, i = 1) { + this._ctx.save(), this._ctx.beginPath(), this._ctx.strokeStyle = this._ctx.fillStyle; + const s = this._coreBrowserService.dpr; + this._ctx.lineWidth = s, this._ctx.setLineDash([2 * s, s]); + const r = e * this._deviceCellWidth, + n = (t + 1) * this._deviceCellHeight - s - 1; + this._ctx.moveTo(r, n); + for (let t = 0; t < i; t++) { + const s = (e + i + t) * this._deviceCellWidth; + this._ctx.lineTo(s, n) + } + this._ctx.stroke(), this._ctx.closePath(), this._ctx.restore() + } + _dashedUnderlineAtCell(e, t, i = 1) { + this._ctx.save(), this._ctx.beginPath(), this._ctx.strokeStyle = this._ctx.fillStyle; + const s = this._coreBrowserService.dpr; + this._ctx.lineWidth = s, this._ctx.setLineDash([4 * s, 3 * s]); + const r = e * this._deviceCellWidth, + n = (e + i) * this._deviceCellWidth, + o = (t + 1) * this._deviceCellHeight - s - 1; + this._ctx.moveTo(r, o), this._ctx.lineTo(n, o), this._ctx.stroke(), this._ctx.closePath(), this._ctx.restore() + } + _fillLeftLineAtCell(e, t, i) { + this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, this._coreBrowserService.dpr * i, this._deviceCellHeight) + } + _strokeRectAtCell(e, t, i, s) { + const r = this._coreBrowserService.dpr; + this._ctx.lineWidth = r, this._ctx.strokeRect(e * this._deviceCellWidth + r / 2, t * this._deviceCellHeight + r / 2, i * this._deviceCellWidth - r, s * this._deviceCellHeight - r) + } + _clearAll() { + this._alpha ? this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height)) + } + _clearCells(e, t, i, s) { + this._alpha ? this._ctx.clearRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight)) + } + _fillCharTrueColor(e, t, i) { + this._ctx.font = this._getFont(!1, !1), this._ctx.textBaseline = n.TEXT_BASELINE, this._clipRow(i); + let s = !1; + !1 !== this._optionsService.rawOptions.customGlyphs && (s = (0, o.tryDrawCustomChar)(this._ctx, e.getChars(), t * this._deviceCellWidth, i * this._deviceCellHeight, this._deviceCellWidth, this._deviceCellHeight, this._optionsService.rawOptions.fontSize, this._coreBrowserService.dpr)), s || this._ctx.fillText(e.getChars(), t * this._deviceCellWidth + this._deviceCharLeft, i * this._deviceCellHeight + this._deviceCharTop + this._deviceCharHeight) + } + _drawChars(e, t, i) { + const s = e.getChars(), + r = e.getCode(), + n = e.getWidth(); + if (this._cellColorResolver.resolve(e, t, this._bufferService.buffer.ydisp + i, this._deviceCellWidth), !this._charAtlas) return; + let o; + if (o = s && s.length > 1 ? this._charAtlas.getRasterizedGlyphCombinedChar(s, this._cellColorResolver.result.bg, this._cellColorResolver.result.fg, this._cellColorResolver.result.ext, !0) : this._charAtlas.getRasterizedGlyph(e.getCode() || _.WHITESPACE_CELL_CODE, this._cellColorResolver.result.bg, this._cellColorResolver.result.fg, this._cellColorResolver.result.ext, !0), !o.size.x || !o.size.y) return; + this._ctx.save(), this._clipRow(i), this._bitmapGenerator[o.texturePage] && this._charAtlas.pages[o.texturePage].canvas !== this._bitmapGenerator[o.texturePage].canvas && (this._bitmapGenerator[o.texturePage]?.bitmap?.close(), delete this._bitmapGenerator[o.texturePage]), this._charAtlas.pages[o.texturePage].version !== this._bitmapGenerator[o.texturePage]?.version && (this._bitmapGenerator[o.texturePage] || (this._bitmapGenerator[o.texturePage] = new f(this._charAtlas.pages[o.texturePage].canvas)), this._bitmapGenerator[o.texturePage].refresh(), this._bitmapGenerator[o.texturePage].version = this._charAtlas.pages[o.texturePage].version); + let h = o.size.x; + this._optionsService.rawOptions.rescaleOverlappingGlyphs && (0, a.allowRescaling)(r, n, o.size.x, this._deviceCellWidth) && (h = this._deviceCellWidth - 1), this._ctx.drawImage(this._bitmapGenerator[o.texturePage]?.bitmap || this._charAtlas.pages[o.texturePage].canvas, o.texturePosition.x, o.texturePosition.y, o.size.x, o.size.y, t * this._deviceCellWidth + this._deviceCharLeft - o.offset.x, i * this._deviceCellHeight + this._deviceCharTop - o.offset.y, h, o.size.y), this._ctx.restore() + } + _clipRow(e) { + this._ctx.beginPath(), this._ctx.rect(0, e * this._deviceCellHeight, this._bufferService.cols * this._deviceCellWidth, this._deviceCellHeight), this._ctx.clip() + } + _getFont(e, t) { + return `${t ? "italic" : ""} ${e ? this._optionsService.rawOptions.fontWeightBold : this._optionsService.rawOptions.fontWeight} ${this._optionsService.rawOptions.fontSize * this._coreBrowserService.dpr}px ${this._optionsService.rawOptions.fontFamily}` + } + } + t.BaseRenderLayer = u; + class f { + get bitmap() { + return this._bitmap + } + constructor(e) { + this.canvas = e, this._state = 0, this._commitTimeout = void 0, this._bitmap = void 0, this.version = -1 + } + refresh() { + this._bitmap?.close(), this._bitmap = void 0, d.isSafari || (void 0 === this._commitTimeout && (this._commitTimeout = window.setTimeout((() => this._generate()), 100)), 1 === this._state && (this._state = 2)) + } + _generate() { + 0 === this._state && (this._bitmap?.close(), this._bitmap = void 0, this._state = 1, window.createImageBitmap(this.canvas).then((e => { + 2 === this._state ? this.refresh() : this._bitmap = e, this._state = 0 + })), this._commitTimeout && (this._commitTimeout = void 0)) + } + } + }, + 949: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CanvasRenderer = void 0; + const s = i(627), + r = i(56), + n = i(374), + o = i(345), + a = i(859), + h = i(873), + c = i(43), + l = i(630), + d = i(744); + class _ extends a.Disposable { + constructor(e, t, i, _, u, f, v, g, p, m, C) { + super(), this._terminal = e, this._screenElement = t, this._bufferService = _, this._charSizeService = u, this._optionsService = f, this._coreBrowserService = p, this._themeService = C, this._observerDisposable = this.register(new a.MutableDisposable), this._onRequestRedraw = this.register(new o.EventEmitter), this.onRequestRedraw = this._onRequestRedraw.event, this._onChangeTextureAtlas = this.register(new o.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new o.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event; + const S = this._optionsService.rawOptions.allowTransparency; + this._renderLayers = [new d.TextRenderLayer(this._terminal, this._screenElement, 0, S, this._bufferService, this._optionsService, v, m, this._coreBrowserService, C), new l.SelectionRenderLayer(this._terminal, this._screenElement, 1, this._bufferService, this._coreBrowserService, m, this._optionsService, C), new c.LinkRenderLayer(this._terminal, this._screenElement, 2, i, this._bufferService, this._optionsService, m, this._coreBrowserService, C), new h.CursorRenderLayer(this._terminal, this._screenElement, 3, this._onRequestRedraw, this._bufferService, this._optionsService, g, this._coreBrowserService, m, C)]; + for (const e of this._renderLayers)(0, o.forwardEvent)(e.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas); + this.dimensions = (0, n.createRenderDimensions)(), this._devicePixelRatio = this._coreBrowserService.dpr, this._updateDimensions(), this._observerDisposable.value = (0, r.observeDevicePixelDimensions)(this._renderLayers[0].canvas, this._coreBrowserService.window, ((e, t) => this._setCanvasDevicePixelDimensions(e, t))), this.register(this._coreBrowserService.onWindowChange((e => { + this._observerDisposable.value = (0, r.observeDevicePixelDimensions)(this._renderLayers[0].canvas, e, ((e, t) => this._setCanvasDevicePixelDimensions(e, t))) + }))), this.register((0, a.toDisposable)((() => { + for (const e of this._renderLayers) e.dispose(); + (0, s.removeTerminalFromCache)(this._terminal) + }))) + } + get textureAtlas() { + return this._renderLayers[0].cacheCanvas + } + handleDevicePixelRatioChange() { + this._devicePixelRatio !== this._coreBrowserService.dpr && (this._devicePixelRatio = this._coreBrowserService.dpr, this.handleResize(this._bufferService.cols, this._bufferService.rows)) + } + handleResize(e, t) { + this._updateDimensions(); + for (const e of this._renderLayers) e.resize(this.dimensions); + this._screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._screenElement.style.height = `${this.dimensions.css.canvas.height}px` + } + handleCharSizeChanged() { + this.handleResize(this._bufferService.cols, this._bufferService.rows) + } + handleBlur() { + this._runOperation((e => e.handleBlur())) + } + handleFocus() { + this._runOperation((e => e.handleFocus())) + } + handleSelectionChanged(e, t, i = !1) { + this._runOperation((s => s.handleSelectionChanged(e, t, i))), this._themeService.colors.selectionForeground && this._onRequestRedraw.fire({ + start: 0, + end: this._bufferService.rows - 1 + }) + } + handleCursorMove() { + this._runOperation((e => e.handleCursorMove())) + } + clear() { + this._runOperation((e => e.reset())) + } + _runOperation(e) { + for (const t of this._renderLayers) e(t) + } + renderRows(e, t) { + for (const i of this._renderLayers) i.handleGridChanged(e, t) + } + clearTextureAtlas() { + for (const e of this._renderLayers) e.clearTextureAtlas() + } + _updateDimensions() { + if (!this._charSizeService.hasValidSize) return; + const e = this._coreBrowserService.dpr; + this.dimensions.device.char.width = Math.floor(this._charSizeService.width * e), this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * e), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.top = 1 === this._optionsService.rawOptions.lineHeight ? 0 : Math.round((this.dimensions.device.cell.height - this.dimensions.device.char.height) / 2), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.char.left = Math.floor(this._optionsService.rawOptions.letterSpacing / 2), this.dimensions.device.canvas.height = this._bufferService.rows * this.dimensions.device.cell.height, this.dimensions.device.canvas.width = this._bufferService.cols * this.dimensions.device.cell.width, this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / e), this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / e), this.dimensions.css.cell.height = this.dimensions.css.canvas.height / this._bufferService.rows, this.dimensions.css.cell.width = this.dimensions.css.canvas.width / this._bufferService.cols + } + _setCanvasDevicePixelDimensions(e, t) { + this.dimensions.device.canvas.height = t, this.dimensions.device.canvas.width = e; + for (const e of this._renderLayers) e.resize(this.dimensions); + this._requestRedrawViewport() + } + _requestRedrawViewport() { + this._onRequestRedraw.fire({ + start: 0, + end: this._bufferService.rows - 1 + }) + } + } + t.CanvasRenderer = _ + }, + 873: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CursorRenderLayer = void 0; + const s = i(457), + r = i(859), + n = i(399), + o = i(782), + a = i(903); + class h extends a.BaseRenderLayer { + constructor(e, t, i, s, n, a, h, c, l, d) { + super(e, t, "cursor", i, !0, d, n, a, l, c), this._onRequestRedraw = s, this._coreService = h, this._cursorBlinkStateManager = this.register(new r.MutableDisposable), this._cell = new o.CellData, this._state = { + x: 0, + y: 0, + isFocused: !1, + style: "", + width: 0 + }, this._cursorRenderers = { + bar: this._renderBarCursor.bind(this), + block: this._renderBlockCursor.bind(this), + underline: this._renderUnderlineCursor.bind(this), + outline: this._renderOutlineCursor.bind(this) + }, this.register(a.onOptionChange((() => this._handleOptionsChanged()))), this._handleOptionsChanged() + } + resize(e) { + super.resize(e), this._state = { + x: 0, + y: 0, + isFocused: !1, + style: "", + width: 0 + } + } + reset() { + this._clearCursor(), this._cursorBlinkStateManager.value?.restartBlinkAnimation(), this._handleOptionsChanged() + } + handleBlur() { + this._cursorBlinkStateManager.value?.pause(), this._onRequestRedraw.fire({ + start: this._bufferService.buffer.y, + end: this._bufferService.buffer.y + }) + } + handleFocus() { + this._cursorBlinkStateManager.value?.resume(), this._onRequestRedraw.fire({ + start: this._bufferService.buffer.y, + end: this._bufferService.buffer.y + }) + } + _handleOptionsChanged() { + this._optionsService.rawOptions.cursorBlink ? this._cursorBlinkStateManager.value || (this._cursorBlinkStateManager.value = new s.CursorBlinkStateManager((() => this._render(!0)), this._coreBrowserService)) : this._cursorBlinkStateManager.clear(), this._onRequestRedraw.fire({ + start: this._bufferService.buffer.y, + end: this._bufferService.buffer.y + }) + } + handleCursorMove() { + this._cursorBlinkStateManager.value?.restartBlinkAnimation() + } + handleGridChanged(e, t) { + !this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isPaused ? this._render(!1) : this._cursorBlinkStateManager.value.restartBlinkAnimation() + } + _render(e) { + if (!this._coreService.isCursorInitialized || this._coreService.isCursorHidden) return void this._clearCursor(); + const t = this._bufferService.buffer.ybase + this._bufferService.buffer.y, + i = t - this._bufferService.buffer.ydisp; + if (i < 0 || i >= this._bufferService.rows) return void this._clearCursor(); + const s = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1); + if (this._bufferService.buffer.lines.get(t).loadCell(s, this._cell), void 0 !== this._cell.content) { + if (!this._coreBrowserService.isFocused) { + this._clearCursor(), this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css; + const e = this._optionsService.rawOptions.cursorStyle, + t = this._optionsService.rawOptions.cursorInactiveStyle; + return t && "none" !== t && this._cursorRenderers[t](s, i, this._cell), this._ctx.restore(), this._state.x = s, this._state.y = i, this._state.isFocused = !1, this._state.style = e, void(this._state.width = this._cell.getWidth()) + } + if (!this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isCursorVisible) { + if (this._state) { + if (this._state.x === s && this._state.y === i && this._state.isFocused === this._coreBrowserService.isFocused && this._state.style === this._optionsService.rawOptions.cursorStyle && this._state.width === this._cell.getWidth()) return; + this._clearCursor() + } + this._ctx.save(), this._cursorRenderers[this._optionsService.rawOptions.cursorStyle || "block"](s, i, this._cell), this._ctx.restore(), this._state.x = s, this._state.y = i, this._state.isFocused = !1, this._state.style = this._optionsService.rawOptions.cursorStyle, this._state.width = this._cell.getWidth() + } else this._clearCursor() + } + } + _clearCursor() { + this._state && (n.isFirefox || this._coreBrowserService.dpr < 1 ? this._clearAll() : this._clearCells(this._state.x, this._state.y, this._state.width, 1), this._state = { + x: 0, + y: 0, + isFocused: !1, + style: "", + width: 0 + }) + } + _renderBarCursor(e, t, i) { + this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css, this._fillLeftLineAtCell(e, t, this._optionsService.rawOptions.cursorWidth), this._ctx.restore() + } + _renderBlockCursor(e, t, i) { + this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css, this._fillCells(e, t, i.getWidth(), 1), this._ctx.fillStyle = this._themeService.colors.cursorAccent.css, this._fillCharTrueColor(i, e, t), this._ctx.restore() + } + _renderUnderlineCursor(e, t, i) { + this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css, this._fillBottomLineAtCells(e, t), this._ctx.restore() + } + _renderOutlineCursor(e, t, i) { + this._ctx.save(), this._ctx.strokeStyle = this._themeService.colors.cursor.css, this._strokeRectAtCell(e, t, i.getWidth(), 1), this._ctx.restore() + } + } + t.CursorRenderLayer = h + }, + 574: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.GridCache = void 0, t.GridCache = class { + constructor() { + this.cache = [] + } + resize(e, t) { + for (let i = 0; i < e; i++) { + this.cache.length <= i && this.cache.push([]); + for (let e = this.cache[i].length; e < t; e++) this.cache[i].push(void 0); + this.cache[i].length = t + } + this.cache.length = e + } + clear() { + for (let e = 0; e < this.cache.length; e++) + for (let t = 0; t < this.cache[e].length; t++) this.cache[e][t] = void 0 + } + } + }, + 43: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.LinkRenderLayer = void 0; + const s = i(197), + r = i(237), + n = i(903); + class o extends n.BaseRenderLayer { + constructor(e, t, i, s, r, n, o, a, h) { + super(e, t, "link", i, !0, h, r, n, o, a), this.register(s.onShowLinkUnderline((e => this._handleShowLinkUnderline(e)))), this.register(s.onHideLinkUnderline((e => this._handleHideLinkUnderline(e)))) + } + resize(e) { + super.resize(e), this._state = void 0 + } + reset() { + this._clearCurrentLink() + } + _clearCurrentLink() { + if (this._state) { + this._clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1); + const e = this._state.y2 - this._state.y1 - 1; + e > 0 && this._clearCells(0, this._state.y1 + 1, this._state.cols, e), this._clearCells(0, this._state.y2, this._state.x2, 1), this._state = void 0 + } + } + _handleShowLinkUnderline(e) { + if (e.fg === r.INVERTED_DEFAULT_COLOR ? this._ctx.fillStyle = this._themeService.colors.background.css : e.fg && (0, s.is256Color)(e.fg) ? this._ctx.fillStyle = this._themeService.colors.ansi[e.fg].css : this._ctx.fillStyle = this._themeService.colors.foreground.css, e.y1 === e.y2) this._fillBottomLineAtCells(e.x1, e.y1, e.x2 - e.x1); + else { + this._fillBottomLineAtCells(e.x1, e.y1, e.cols - e.x1); + for (let t = e.y1 + 1; t < e.y2; t++) this._fillBottomLineAtCells(0, t, e.cols); + this._fillBottomLineAtCells(0, e.y2, e.x2) + } + this._state = e + } + _handleHideLinkUnderline(e) { + this._clearCurrentLink() + } + } + t.LinkRenderLayer = o + }, + 630: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.SelectionRenderLayer = void 0; + const s = i(903); + class r extends s.BaseRenderLayer { + constructor(e, t, i, s, r, n, o, a) { + super(e, t, "selection", i, !0, a, s, o, n, r), this._clearState() + } + _clearState() { + this._state = { + start: void 0, + end: void 0, + columnSelectMode: void 0, + ydisp: void 0 + } + } + resize(e) { + super.resize(e), this._selectionModel.selectionStart && this._selectionModel.selectionEnd && (this._clearState(), this._redrawSelection(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode)) + } + reset() { + this._state.start && this._state.end && (this._clearState(), this._clearAll()) + } + handleBlur() { + this.reset(), this._redrawSelection(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode) + } + handleFocus() { + this.reset(), this._redrawSelection(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode) + } + handleSelectionChanged(e, t, i) { + super.handleSelectionChanged(e, t, i), this._redrawSelection(e, t, i) + } + _redrawSelection(e, t, i) { + if (!this._didStateChange(e, t, i, this._bufferService.buffer.ydisp)) return; + if (this._clearAll(), !e || !t) return void this._clearState(); + const s = e[1] - this._bufferService.buffer.ydisp, + r = t[1] - this._bufferService.buffer.ydisp, + n = Math.max(s, 0), + o = Math.min(r, this._bufferService.rows - 1); + if (n >= this._bufferService.rows || o < 0) this._state.ydisp = this._bufferService.buffer.ydisp; + else { + if (this._ctx.fillStyle = (this._coreBrowserService.isFocused ? this._themeService.colors.selectionBackgroundTransparent : this._themeService.colors.selectionInactiveBackgroundTransparent).css, i) { + const i = e[0], + s = t[0] - i, + r = o - n + 1; + this._fillCells(i, n, s, r) + } else { + const i = s === n ? e[0] : 0, + a = n === r ? t[0] : this._bufferService.cols; + this._fillCells(i, n, a - i, 1); + const h = Math.max(o - n - 1, 0); + if (this._fillCells(0, n + 1, this._bufferService.cols, h), n !== o) { + const e = r === o ? t[0] : this._bufferService.cols; + this._fillCells(0, o, e, 1) + } + } + this._state.start = [e[0], e[1]], this._state.end = [t[0], t[1]], this._state.columnSelectMode = i, this._state.ydisp = this._bufferService.buffer.ydisp + } + } + _didStateChange(e, t, i, s) { + return !this._areCoordinatesEqual(e, this._state.start) || !this._areCoordinatesEqual(t, this._state.end) || i !== this._state.columnSelectMode || s !== this._state.ydisp + } + _areCoordinatesEqual(e, t) { + return !(!e || !t) && e[0] === t[0] && e[1] === t[1] + } + } + t.SelectionRenderLayer = r + }, + 744: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.TextRenderLayer = void 0; + const s = i(577), + r = i(147), + n = i(782), + o = i(855), + a = i(903), + h = i(574); + class c extends a.BaseRenderLayer { + constructor(e, t, i, s, r, o, a, c, l, d) { + super(e, t, "text", i, s, d, r, o, c, l), this._characterJoinerService = a, this._characterWidth = 0, this._characterFont = "", this._characterOverlapCache = {}, this._workCell = new n.CellData, this._state = new h.GridCache, this.register(o.onSpecificOptionChange("allowTransparency", (e => this._setTransparency(e)))) + } + resize(e) { + super.resize(e); + const t = this._getFont(!1, !1); + this._characterWidth === e.device.char.width && this._characterFont === t || (this._characterWidth = e.device.char.width, this._characterFont = t, this._characterOverlapCache = {}), this._state.clear(), this._state.resize(this._bufferService.cols, this._bufferService.rows) + } + reset() { + this._state.clear(), this._clearAll() + } + _forEachCell(e, t, i) { + for (let r = e; r <= t; r++) { + const e = r + this._bufferService.buffer.ydisp, + t = this._bufferService.buffer.lines.get(e), + n = this._characterJoinerService.getJoinedCharacters(e); + for (let e = 0; e < this._bufferService.cols; e++) { + t.loadCell(e, this._workCell); + let a = this._workCell, + h = !1, + c = e; + if (0 !== a.getWidth()) { + if (n.length > 0 && e === n[0][0]) { + h = !0; + const e = n.shift(); + a = new s.JoinedCellData(this._workCell, t.translateToString(!0, e[0], e[1]), e[1] - e[0]), c = e[1] - 1 + }!h && this._isOverlapping(a) && c < t.length - 1 && t.getCodePoint(c + 1) === o.NULL_CELL_CODE && (a.content &= -12582913, a.content |= 2 << 22), i(a, e, r), e = c + } + } + } + } + _drawBackground(e, t) { + const i = this._ctx, + s = this._bufferService.cols; + let n = 0, + o = 0, + a = null; + i.save(), this._forEachCell(e, t, ((e, t, h) => { + let c = null; + e.isInverse() ? c = e.isFgDefault() ? this._themeService.colors.foreground.css : e.isFgRGB() ? `rgb(${r.AttributeData.toColorRGB(e.getFgColor()).join(",")})` : this._themeService.colors.ansi[e.getFgColor()].css : e.isBgRGB() ? c = `rgb(${r.AttributeData.toColorRGB(e.getBgColor()).join(",")})` : e.isBgPalette() && (c = this._themeService.colors.ansi[e.getBgColor()].css); + let l = !1; + this._decorationService.forEachDecorationAtCell(t, this._bufferService.buffer.ydisp + h, void 0, (e => { + "top" !== e.options.layer && l || (e.backgroundColorRGB && (c = e.backgroundColorRGB.css), l = "top" === e.options.layer) + })), null === a && (n = t, o = h), h !== o ? (i.fillStyle = a || "", this._fillCells(n, o, s - n, 1), n = t, o = h) : a !== c && (i.fillStyle = a || "", this._fillCells(n, o, t - n, 1), n = t, o = h), a = c + })), null !== a && (i.fillStyle = a, this._fillCells(n, o, s - n, 1)), i.restore() + } + _drawForeground(e, t) { + this._forEachCell(e, t, ((e, t, i) => this._drawChars(e, t, i))) + } + handleGridChanged(e, t) { + 0 !== this._state.cache.length && (this._charAtlas && this._charAtlas.beginFrame(), this._clearCells(0, e, this._bufferService.cols, t - e + 1), this._drawBackground(e, t), this._drawForeground(e, t)) + } + _isOverlapping(e) { + if (1 !== e.getWidth()) return !1; + if (e.getCode() < 256) return !1; + const t = e.getChars(); + if (this._characterOverlapCache.hasOwnProperty(t)) return this._characterOverlapCache[t]; + this._ctx.save(), this._ctx.font = this._characterFont; + const i = Math.floor(this._ctx.measureText(t).width) > this._characterWidth; + return this._ctx.restore(), this._characterOverlapCache[t] = i, i + } + } + t.TextRenderLayer = c + }, + 274: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CellColorResolver = void 0; + const s = i(855), + r = i(160), + n = i(374); + let o, a = 0, + h = 0, + c = !1, + l = !1, + d = !1, + _ = 0; + t.CellColorResolver = class { + constructor(e, t, i, s, r, n) { + this._terminal = e, this._optionService = t, this._selectionRenderModel = i, this._decorationService = s, this._coreBrowserService = r, this._themeService = n, this.result = { + fg: 0, + bg: 0, + ext: 0 + } + } + resolve(e, t, i, u) { + if (this.result.bg = e.bg, this.result.fg = e.fg, this.result.ext = 268435456 & e.bg ? e.extended.ext : 0, h = 0, a = 0, l = !1, c = !1, d = !1, o = this._themeService.colors, _ = 0, e.getCode() !== s.NULL_CELL_CODE && 4 === e.extended.underlineStyle) { + const e = Math.max(1, Math.floor(this._optionService.rawOptions.fontSize * this._coreBrowserService.dpr / 15)); + _ = t * u % (2 * Math.round(e)) + } + if (this._decorationService.forEachDecorationAtCell(t, i, "bottom", (e => { + e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0) + })), d = this._selectionRenderModel.isCellSelected(this._terminal, t, i), d) { + if (67108864 & this.result.fg || 50331648 & this.result.bg) { + if (67108864 & this.result.fg) switch (50331648 & this.result.fg) { + case 16777216: + case 33554432: + h = this._themeService.colors.ansi[255 & this.result.fg].rgba; + break; + case 50331648: + h = (16777215 & this.result.fg) << 8 | 255; + break; + default: + h = this._themeService.colors.foreground.rgba + } else switch (50331648 & this.result.bg) { + case 16777216: + case 33554432: + h = this._themeService.colors.ansi[255 & this.result.bg].rgba; + break; + case 50331648: + h = (16777215 & this.result.bg) << 8 | 255 + } + h = r.rgba.blend(h, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215 + } else h = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215; + if (l = !0, o.selectionForeground && (a = o.selectionForeground.rgba >> 8 & 16777215, c = !0), (0, n.treatGlyphAsBackgroundColor)(e.getCode())) { + if (67108864 & this.result.fg && !(50331648 & this.result.bg)) a = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215; + else { + if (67108864 & this.result.fg) switch (50331648 & this.result.bg) { + case 16777216: + case 33554432: + a = this._themeService.colors.ansi[255 & this.result.bg].rgba; + break; + case 50331648: + a = (16777215 & this.result.bg) << 8 | 255 + } else switch (50331648 & this.result.fg) { + case 16777216: + case 33554432: + a = this._themeService.colors.ansi[255 & this.result.fg].rgba; + break; + case 50331648: + a = (16777215 & this.result.fg) << 8 | 255; + break; + default: + a = this._themeService.colors.foreground.rgba + } + a = r.rgba.blend(a, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215 + } + c = !0 + } + } + this._decorationService.forEachDecorationAtCell(t, i, "top", (e => { + e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0) + })), l && (h = d ? -16777216 & e.bg & -134217729 | h | 50331648 : -16777216 & e.bg | h | 50331648), c && (a = -16777216 & e.fg & -67108865 | a | 50331648), 67108864 & this.result.fg && (l && !c && (a = 50331648 & this.result.bg ? -134217728 & this.result.fg | 67108863 & this.result.bg : -134217728 & this.result.fg | 16777215 & o.background.rgba >> 8 | 50331648, c = !0), !l && c && (h = 50331648 & this.result.fg ? -67108864 & this.result.bg | 67108863 & this.result.fg : -67108864 & this.result.bg | 16777215 & o.foreground.rgba >> 8 | 50331648, l = !0)), o = void 0, this.result.bg = l ? h : this.result.bg, this.result.fg = c ? a : this.result.fg, this.result.ext &= 536870911, this.result.ext |= _ << 29 & 3758096384 + } + } + }, + 627: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.removeTerminalFromCache = t.acquireTextureAtlas = void 0; + const s = i(509), + r = i(197), + n = []; + t.acquireTextureAtlas = function(e, t, i, o, a, h, c, l) { + const d = (0, r.generateConfig)(o, a, h, c, t, i, l); + for (let t = 0; t < n.length; t++) { + const i = n[t], + s = i.ownedBy.indexOf(e); + if (s >= 0) { + if ((0, r.configEquals)(i.config, d)) return i.atlas; + 1 === i.ownedBy.length ? (i.atlas.dispose(), n.splice(t, 1)) : i.ownedBy.splice(s, 1); + break + } + } + for (let t = 0; t < n.length; t++) { + const i = n[t]; + if ((0, r.configEquals)(i.config, d)) return i.ownedBy.push(e), i.atlas + } + const _ = e._core, + u = { + atlas: new s.TextureAtlas(document, d, _.unicodeService), + config: d, + ownedBy: [e] + }; + return n.push(u), u.atlas + }, t.removeTerminalFromCache = function(e) { + for (let t = 0; t < n.length; t++) { + const i = n[t].ownedBy.indexOf(e); + if (-1 !== i) { + 1 === n[t].ownedBy.length ? (n[t].atlas.dispose(), n.splice(t, 1)) : n[t].ownedBy.splice(i, 1); + break + } + } + } + }, + 197: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.is256Color = t.configEquals = t.generateConfig = void 0; + const s = i(160); + t.generateConfig = function(e, t, i, r, n, o, a) { + const h = { + foreground: o.foreground, + background: o.background, + cursor: s.NULL_COLOR, + cursorAccent: s.NULL_COLOR, + selectionForeground: s.NULL_COLOR, + selectionBackgroundTransparent: s.NULL_COLOR, + selectionBackgroundOpaque: s.NULL_COLOR, + selectionInactiveBackgroundTransparent: s.NULL_COLOR, + selectionInactiveBackgroundOpaque: s.NULL_COLOR, + ansi: o.ansi.slice(), + contrastCache: o.contrastCache, + halfContrastCache: o.halfContrastCache + }; + return { + customGlyphs: n.customGlyphs, + devicePixelRatio: a, + letterSpacing: n.letterSpacing, + lineHeight: n.lineHeight, + deviceCellWidth: e, + deviceCellHeight: t, + deviceCharWidth: i, + deviceCharHeight: r, + fontFamily: n.fontFamily, + fontSize: n.fontSize, + fontWeight: n.fontWeight, + fontWeightBold: n.fontWeightBold, + allowTransparency: n.allowTransparency, + drawBoldTextInBrightColors: n.drawBoldTextInBrightColors, + minimumContrastRatio: n.minimumContrastRatio, + colors: h + } + }, t.configEquals = function(e, t) { + for (let i = 0; i < e.colors.ansi.length; i++) + if (e.colors.ansi[i].rgba !== t.colors.ansi[i].rgba) return !1; + return e.devicePixelRatio === t.devicePixelRatio && e.customGlyphs === t.customGlyphs && e.lineHeight === t.lineHeight && e.letterSpacing === t.letterSpacing && e.fontFamily === t.fontFamily && e.fontSize === t.fontSize && e.fontWeight === t.fontWeight && e.fontWeightBold === t.fontWeightBold && e.allowTransparency === t.allowTransparency && e.deviceCharWidth === t.deviceCharWidth && e.deviceCharHeight === t.deviceCharHeight && e.drawBoldTextInBrightColors === t.drawBoldTextInBrightColors && e.minimumContrastRatio === t.minimumContrastRatio && e.colors.foreground.rgba === t.colors.foreground.rgba && e.colors.background.rgba === t.colors.background.rgba + }, t.is256Color = function(e) { + return 16777216 == (50331648 & e) || 33554432 == (50331648 & e) + } + }, + 237: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.TEXT_BASELINE = t.DIM_OPACITY = t.INVERTED_DEFAULT_COLOR = void 0; + const s = i(399); + t.INVERTED_DEFAULT_COLOR = 257, t.DIM_OPACITY = .5, t.TEXT_BASELINE = s.isFirefox || s.isLegacyEdge ? "bottom" : "ideographic" + }, + 457: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CursorBlinkStateManager = void 0, t.CursorBlinkStateManager = class { + constructor(e, t) { + this._renderCallback = e, this._coreBrowserService = t, this.isCursorVisible = !0, this._coreBrowserService.isFocused && this._restartInterval() + } + get isPaused() { + return !(this._blinkStartTimeout || this._blinkInterval) + } + dispose() { + this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0) + } + restartBlinkAnimation() { + this.isPaused || (this._animationTimeRestarted = Date.now(), this.isCursorVisible = !0, this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { + this._renderCallback(), this._animationFrame = void 0 + })))) + } + _restartInterval(e = 600) { + this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout = this._coreBrowserService.window.setTimeout((() => { + if (this._animationTimeRestarted) { + const e = 600 - (Date.now() - this._animationTimeRestarted); + if (this._animationTimeRestarted = void 0, e > 0) return void this._restartInterval(e) + } + this.isCursorVisible = !1, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { + this._renderCallback(), this._animationFrame = void 0 + })), this._blinkInterval = this._coreBrowserService.window.setInterval((() => { + if (this._animationTimeRestarted) { + const e = 600 - (Date.now() - this._animationTimeRestarted); + return this._animationTimeRestarted = void 0, void this._restartInterval(e) + } + this.isCursorVisible = !this.isCursorVisible, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => { + this._renderCallback(), this._animationFrame = void 0 + })) + }), 600) + }), e) + } + pause() { + this.isCursorVisible = !0, this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0) + } + resume() { + this.pause(), this._animationTimeRestarted = void 0, this._restartInterval(), this.restartBlinkAnimation() + } + } + }, + 860: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.tryDrawCustomChar = t.powerlineDefinitions = t.boxDrawingDefinitions = t.blockElementDefinitions = void 0; + const s = i(374); + t.blockElementDefinitions = { + "▀": [{ + x: 0, + y: 0, + w: 8, + h: 4 + }], + "▁": [{ + x: 0, + y: 7, + w: 8, + h: 1 + }], + "▂": [{ + x: 0, + y: 6, + w: 8, + h: 2 + }], + "▃": [{ + x: 0, + y: 5, + w: 8, + h: 3 + }], + "▄": [{ + x: 0, + y: 4, + w: 8, + h: 4 + }], + "▅": [{ + x: 0, + y: 3, + w: 8, + h: 5 + }], + "▆": [{ + x: 0, + y: 2, + w: 8, + h: 6 + }], + "▇": [{ + x: 0, + y: 1, + w: 8, + h: 7 + }], + "█": [{ + x: 0, + y: 0, + w: 8, + h: 8 + }], + "▉": [{ + x: 0, + y: 0, + w: 7, + h: 8 + }], + "▊": [{ + x: 0, + y: 0, + w: 6, + h: 8 + }], + "▋": [{ + x: 0, + y: 0, + w: 5, + h: 8 + }], + "▌": [{ + x: 0, + y: 0, + w: 4, + h: 8 + }], + "▍": [{ + x: 0, + y: 0, + w: 3, + h: 8 + }], + "▎": [{ + x: 0, + y: 0, + w: 2, + h: 8 + }], + "▏": [{ + x: 0, + y: 0, + w: 1, + h: 8 + }], + "▐": [{ + x: 4, + y: 0, + w: 4, + h: 8 + }], + "▔": [{ + x: 0, + y: 0, + w: 8, + h: 1 + }], + "▕": [{ + x: 7, + y: 0, + w: 1, + h: 8 + }], + "▖": [{ + x: 0, + y: 4, + w: 4, + h: 4 + }], + "▗": [{ + x: 4, + y: 4, + w: 4, + h: 4 + }], + "▘": [{ + x: 0, + y: 0, + w: 4, + h: 4 + }], + "▙": [{ + x: 0, + y: 0, + w: 4, + h: 8 + }, { + x: 0, + y: 4, + w: 8, + h: 4 + }], + "▚": [{ + x: 0, + y: 0, + w: 4, + h: 4 + }, { + x: 4, + y: 4, + w: 4, + h: 4 + }], + "▛": [{ + x: 0, + y: 0, + w: 4, + h: 8 + }, { + x: 4, + y: 0, + w: 4, + h: 4 + }], + "▜": [{ + x: 0, + y: 0, + w: 8, + h: 4 + }, { + x: 4, + y: 0, + w: 4, + h: 8 + }], + "▝": [{ + x: 4, + y: 0, + w: 4, + h: 4 + }], + "▞": [{ + x: 4, + y: 0, + w: 4, + h: 4 + }, { + x: 0, + y: 4, + w: 4, + h: 4 + }], + "▟": [{ + x: 4, + y: 0, + w: 4, + h: 8 + }, { + x: 0, + y: 4, + w: 8, + h: 4 + }], + "🭰": [{ + x: 1, + y: 0, + w: 1, + h: 8 + }], + "🭱": [{ + x: 2, + y: 0, + w: 1, + h: 8 + }], + "🭲": [{ + x: 3, + y: 0, + w: 1, + h: 8 + }], + "🭳": [{ + x: 4, + y: 0, + w: 1, + h: 8 + }], + "🭴": [{ + x: 5, + y: 0, + w: 1, + h: 8 + }], + "🭵": [{ + x: 6, + y: 0, + w: 1, + h: 8 + }], + "🭶": [{ + x: 0, + y: 1, + w: 8, + h: 1 + }], + "🭷": [{ + x: 0, + y: 2, + w: 8, + h: 1 + }], + "🭸": [{ + x: 0, + y: 3, + w: 8, + h: 1 + }], + "🭹": [{ + x: 0, + y: 4, + w: 8, + h: 1 + }], + "🭺": [{ + x: 0, + y: 5, + w: 8, + h: 1 + }], + "🭻": [{ + x: 0, + y: 6, + w: 8, + h: 1 + }], + "🭼": [{ + x: 0, + y: 0, + w: 1, + h: 8 + }, { + x: 0, + y: 7, + w: 8, + h: 1 + }], + "🭽": [{ + x: 0, + y: 0, + w: 1, + h: 8 + }, { + x: 0, + y: 0, + w: 8, + h: 1 + }], + "🭾": [{ + x: 7, + y: 0, + w: 1, + h: 8 + }, { + x: 0, + y: 0, + w: 8, + h: 1 + }], + "🭿": [{ + x: 7, + y: 0, + w: 1, + h: 8 + }, { + x: 0, + y: 7, + w: 8, + h: 1 + }], + "🮀": [{ + x: 0, + y: 0, + w: 8, + h: 1 + }, { + x: 0, + y: 7, + w: 8, + h: 1 + }], + "🮁": [{ + x: 0, + y: 0, + w: 8, + h: 1 + }, { + x: 0, + y: 2, + w: 8, + h: 1 + }, { + x: 0, + y: 4, + w: 8, + h: 1 + }, { + x: 0, + y: 7, + w: 8, + h: 1 + }], + "🮂": [{ + x: 0, + y: 0, + w: 8, + h: 2 + }], + "🮃": [{ + x: 0, + y: 0, + w: 8, + h: 3 + }], + "🮄": [{ + x: 0, + y: 0, + w: 8, + h: 5 + }], + "🮅": [{ + x: 0, + y: 0, + w: 8, + h: 6 + }], + "🮆": [{ + x: 0, + y: 0, + w: 8, + h: 7 + }], + "🮇": [{ + x: 6, + y: 0, + w: 2, + h: 8 + }], + "🮈": [{ + x: 5, + y: 0, + w: 3, + h: 8 + }], + "🮉": [{ + x: 3, + y: 0, + w: 5, + h: 8 + }], + "🮊": [{ + x: 2, + y: 0, + w: 6, + h: 8 + }], + "🮋": [{ + x: 1, + y: 0, + w: 7, + h: 8 + }], + "🮕": [{ + x: 0, + y: 0, + w: 2, + h: 2 + }, { + x: 4, + y: 0, + w: 2, + h: 2 + }, { + x: 2, + y: 2, + w: 2, + h: 2 + }, { + x: 6, + y: 2, + w: 2, + h: 2 + }, { + x: 0, + y: 4, + w: 2, + h: 2 + }, { + x: 4, + y: 4, + w: 2, + h: 2 + }, { + x: 2, + y: 6, + w: 2, + h: 2 + }, { + x: 6, + y: 6, + w: 2, + h: 2 + }], + "🮖": [{ + x: 2, + y: 0, + w: 2, + h: 2 + }, { + x: 6, + y: 0, + w: 2, + h: 2 + }, { + x: 0, + y: 2, + w: 2, + h: 2 + }, { + x: 4, + y: 2, + w: 2, + h: 2 + }, { + x: 2, + y: 4, + w: 2, + h: 2 + }, { + x: 6, + y: 4, + w: 2, + h: 2 + }, { + x: 0, + y: 6, + w: 2, + h: 2 + }, { + x: 4, + y: 6, + w: 2, + h: 2 + }], + "🮗": [{ + x: 0, + y: 2, + w: 8, + h: 2 + }, { + x: 0, + y: 6, + w: 8, + h: 2 + }] + }; + const r = { + "░": [ + [1, 0, 0, 0], + [0, 0, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 0] + ], + "▒": [ + [1, 0], + [0, 0], + [0, 1], + [0, 0] + ], + "▓": [ + [0, 1], + [1, 1], + [1, 0], + [1, 1] + ] + }; + t.boxDrawingDefinitions = { + "─": { + 1: "M0,.5 L1,.5" + }, + "━": { + 3: "M0,.5 L1,.5" + }, + "│": { + 1: "M.5,0 L.5,1" + }, + "┃": { + 3: "M.5,0 L.5,1" + }, + "┌": { + 1: "M0.5,1 L.5,.5 L1,.5" + }, + "┏": { + 3: "M0.5,1 L.5,.5 L1,.5" + }, + "┐": { + 1: "M0,.5 L.5,.5 L.5,1" + }, + "┓": { + 3: "M0,.5 L.5,.5 L.5,1" + }, + "└": { + 1: "M.5,0 L.5,.5 L1,.5" + }, + "┗": { + 3: "M.5,0 L.5,.5 L1,.5" + }, + "┘": { + 1: "M.5,0 L.5,.5 L0,.5" + }, + "┛": { + 3: "M.5,0 L.5,.5 L0,.5" + }, + "├": { + 1: "M.5,0 L.5,1 M.5,.5 L1,.5" + }, + "┣": { + 3: "M.5,0 L.5,1 M.5,.5 L1,.5" + }, + "┤": { + 1: "M.5,0 L.5,1 M.5,.5 L0,.5" + }, + "┫": { + 3: "M.5,0 L.5,1 M.5,.5 L0,.5" + }, + "┬": { + 1: "M0,.5 L1,.5 M.5,.5 L.5,1" + }, + "┳": { + 3: "M0,.5 L1,.5 M.5,.5 L.5,1" + }, + "┴": { + 1: "M0,.5 L1,.5 M.5,.5 L.5,0" + }, + "┻": { + 3: "M0,.5 L1,.5 M.5,.5 L.5,0" + }, + "┼": { + 1: "M0,.5 L1,.5 M.5,0 L.5,1" + }, + "╋": { + 3: "M0,.5 L1,.5 M.5,0 L.5,1" + }, + "╴": { + 1: "M.5,.5 L0,.5" + }, + "╸": { + 3: "M.5,.5 L0,.5" + }, + "╵": { + 1: "M.5,.5 L.5,0" + }, + "╹": { + 3: "M.5,.5 L.5,0" + }, + "╶": { + 1: "M.5,.5 L1,.5" + }, + "╺": { + 3: "M.5,.5 L1,.5" + }, + "╷": { + 1: "M.5,.5 L.5,1" + }, + "╻": { + 3: "M.5,.5 L.5,1" + }, + "═": { + 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` + }, + "║": { + 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` + }, + "╒": { + 1: (e, t) => `M.5,1 L.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}` + }, + "╓": { + 1: (e, t) => `M${.5 - e},1 L${.5 - e},.5 L1,.5 M${.5 + e},.5 L${.5 + e},1` + }, + "╔": { + 1: (e, t) => `M1,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1` + }, + "╕": { + 1: (e, t) => `M0,${.5 - t} L.5,${.5 - t} L.5,1 M0,${.5 + t} L.5,${.5 + t}` + }, + "╖": { + 1: (e, t) => `M${.5 + e},1 L${.5 + e},.5 L0,.5 M${.5 - e},.5 L${.5 - e},1` + }, + "╗": { + 1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},1` + }, + "╘": { + 1: (e, t) => `M.5,0 L.5,${.5 + t} L1,${.5 + t} M.5,${.5 - t} L1,${.5 - t}` + }, + "╙": { + 1: (e, t) => `M1,.5 L${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0` + }, + "╚": { + 1: (e, t) => `M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0 M1,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},0` + }, + "╛": { + 1: (e, t) => `M0,${.5 + t} L.5,${.5 + t} L.5,0 M0,${.5 - t} L.5,${.5 - t}` + }, + "╜": { + 1: (e, t) => `M0,.5 L${.5 + e},.5 L${.5 + e},0 M${.5 - e},.5 L${.5 - e},0` + }, + "╝": { + 1: (e, t) => `M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M0,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},0` + }, + "╞": { + 1: (e, t) => `M.5,0 L.5,1 M.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}` + }, + "╟": { + 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1 M${.5 + e},.5 L1,.5` + }, + "╠": { + 1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` + }, + "╡": { + 1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L.5,${.5 - t} M0,${.5 + t} L.5,${.5 + t}` + }, + "╢": { + 1: (e, t) => `M0,.5 L${.5 - e},.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` + }, + "╣": { + 1: (e, t) => `M${.5 + e},0 L${.5 + e},1 M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0` + }, + "╤": { + 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t} M.5,${.5 + t} L.5,1` + }, + "╥": { + 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},1 M${.5 + e},.5 L${.5 + e},1` + }, + "╦": { + 1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1` + }, + "╧": { + 1: (e, t) => `M.5,0 L.5,${.5 - t} M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` + }, + "╨": { + 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0` + }, + "╩": { + 1: (e, t) => `M0,${.5 + t} L1,${.5 + t} M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` + }, + "╪": { + 1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}` + }, + "╫": { + 1: (e, t) => `M0,.5 L1,.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1` + }, + "╬": { + 1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0` + }, + "╱": { + 1: "M1,0 L0,1" + }, + "╲": { + 1: "M0,0 L1,1" + }, + "╳": { + 1: "M1,0 L0,1 M0,0 L1,1" + }, + "╼": { + 1: "M.5,.5 L0,.5", + 3: "M.5,.5 L1,.5" + }, + "╽": { + 1: "M.5,.5 L.5,0", + 3: "M.5,.5 L.5,1" + }, + "╾": { + 1: "M.5,.5 L1,.5", + 3: "M.5,.5 L0,.5" + }, + "╿": { + 1: "M.5,.5 L.5,1", + 3: "M.5,.5 L.5,0" + }, + "┍": { + 1: "M.5,.5 L.5,1", + 3: "M.5,.5 L1,.5" + }, + "┎": { + 1: "M.5,.5 L1,.5", + 3: "M.5,.5 L.5,1" + }, + "┑": { + 1: "M.5,.5 L.5,1", + 3: "M.5,.5 L0,.5" + }, + "┒": { + 1: "M.5,.5 L0,.5", + 3: "M.5,.5 L.5,1" + }, + "┕": { + 1: "M.5,.5 L.5,0", + 3: "M.5,.5 L1,.5" + }, + "┖": { + 1: "M.5,.5 L1,.5", + 3: "M.5,.5 L.5,0" + }, + "┙": { + 1: "M.5,.5 L.5,0", + 3: "M.5,.5 L0,.5" + }, + "┚": { + 1: "M.5,.5 L0,.5", + 3: "M.5,.5 L.5,0" + }, + "┝": { + 1: "M.5,0 L.5,1", + 3: "M.5,.5 L1,.5" + }, + "┞": { + 1: "M0.5,1 L.5,.5 L1,.5", + 3: "M.5,.5 L.5,0" + }, + "┟": { + 1: "M.5,0 L.5,.5 L1,.5", + 3: "M.5,.5 L.5,1" + }, + "┠": { + 1: "M.5,.5 L1,.5", + 3: "M.5,0 L.5,1" + }, + "┡": { + 1: "M.5,.5 L.5,1", + 3: "M.5,0 L.5,.5 L1,.5" + }, + "┢": { + 1: "M.5,.5 L.5,0", + 3: "M0.5,1 L.5,.5 L1,.5" + }, + "┥": { + 1: "M.5,0 L.5,1", + 3: "M.5,.5 L0,.5" + }, + "┦": { + 1: "M0,.5 L.5,.5 L.5,1", + 3: "M.5,.5 L.5,0" + }, + "┧": { + 1: "M.5,0 L.5,.5 L0,.5", + 3: "M.5,.5 L.5,1" + }, + "┨": { + 1: "M.5,.5 L0,.5", + 3: "M.5,0 L.5,1" + }, + "┩": { + 1: "M.5,.5 L.5,1", + 3: "M.5,0 L.5,.5 L0,.5" + }, + "┪": { + 1: "M.5,.5 L.5,0", + 3: "M0,.5 L.5,.5 L.5,1" + }, + "┭": { + 1: "M0.5,1 L.5,.5 L1,.5", + 3: "M.5,.5 L0,.5" + }, + "┮": { + 1: "M0,.5 L.5,.5 L.5,1", + 3: "M.5,.5 L1,.5" + }, + "┯": { + 1: "M.5,.5 L.5,1", + 3: "M0,.5 L1,.5" + }, + "┰": { + 1: "M0,.5 L1,.5", + 3: "M.5,.5 L.5,1" + }, + "┱": { + 1: "M.5,.5 L1,.5", + 3: "M0,.5 L.5,.5 L.5,1" + }, + "┲": { + 1: "M.5,.5 L0,.5", + 3: "M0.5,1 L.5,.5 L1,.5" + }, + "┵": { + 1: "M.5,0 L.5,.5 L1,.5", + 3: "M.5,.5 L0,.5" + }, + "┶": { + 1: "M.5,0 L.5,.5 L0,.5", + 3: "M.5,.5 L1,.5" + }, + "┷": { + 1: "M.5,.5 L.5,0", + 3: "M0,.5 L1,.5" + }, + "┸": { + 1: "M0,.5 L1,.5", + 3: "M.5,.5 L.5,0" + }, + "┹": { + 1: "M.5,.5 L1,.5", + 3: "M.5,0 L.5,.5 L0,.5" + }, + "┺": { + 1: "M.5,.5 L0,.5", + 3: "M.5,0 L.5,.5 L1,.5" + }, + "┽": { + 1: "M.5,0 L.5,1 M.5,.5 L1,.5", + 3: "M.5,.5 L0,.5" + }, + "┾": { + 1: "M.5,0 L.5,1 M.5,.5 L0,.5", + 3: "M.5,.5 L1,.5" + }, + "┿": { + 1: "M.5,0 L.5,1", + 3: "M0,.5 L1,.5" + }, + "╀": { + 1: "M0,.5 L1,.5 M.5,.5 L.5,1", + 3: "M.5,.5 L.5,0" + }, + "╁": { + 1: "M.5,.5 L.5,0 M0,.5 L1,.5", + 3: "M.5,.5 L.5,1" + }, + "╂": { + 1: "M0,.5 L1,.5", + 3: "M.5,0 L.5,1" + }, + "╃": { + 1: "M0.5,1 L.5,.5 L1,.5", + 3: "M.5,0 L.5,.5 L0,.5" + }, + "╄": { + 1: "M0,.5 L.5,.5 L.5,1", + 3: "M.5,0 L.5,.5 L1,.5" + }, + "╅": { + 1: "M.5,0 L.5,.5 L1,.5", + 3: "M0,.5 L.5,.5 L.5,1" + }, + "╆": { + 1: "M.5,0 L.5,.5 L0,.5", + 3: "M0.5,1 L.5,.5 L1,.5" + }, + "╇": { + 1: "M.5,.5 L.5,1", + 3: "M.5,.5 L.5,0 M0,.5 L1,.5" + }, + "╈": { + 1: "M.5,.5 L.5,0", + 3: "M0,.5 L1,.5 M.5,.5 L.5,1" + }, + "╉": { + 1: "M.5,.5 L1,.5", + 3: "M.5,0 L.5,1 M.5,.5 L0,.5" + }, + "╊": { + 1: "M.5,.5 L0,.5", + 3: "M.5,0 L.5,1 M.5,.5 L1,.5" + }, + "╌": { + 1: "M.1,.5 L.4,.5 M.6,.5 L.9,.5" + }, + "╍": { + 3: "M.1,.5 L.4,.5 M.6,.5 L.9,.5" + }, + "┄": { + 1: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5" + }, + "┅": { + 3: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5" + }, + "┈": { + 1: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5" + }, + "┉": { + 3: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5" + }, + "╎": { + 1: "M.5,.1 L.5,.4 M.5,.6 L.5,.9" + }, + "╏": { + 3: "M.5,.1 L.5,.4 M.5,.6 L.5,.9" + }, + "┆": { + 1: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333" + }, + "┇": { + 3: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333" + }, + "┊": { + 1: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95" + }, + "┋": { + 3: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95" + }, + "╭": { + 1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,1,.5` + }, + "╮": { + 1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,0,.5` + }, + "╯": { + 1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,0,.5` + }, + "╰": { + 1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,1,.5` + } + }, t.powerlineDefinitions = { + "": { + d: "M0,0 L1,.5 L0,1", + type: 0, + rightPadding: 2 + }, + "": { + d: "M-1,-.5 L1,.5 L-1,1.5", + type: 1, + leftPadding: 1, + rightPadding: 1 + }, + "": { + d: "M1,0 L0,.5 L1,1", + type: 0, + leftPadding: 2 + }, + "": { + d: "M2,-.5 L0,.5 L2,1.5", + type: 1, + leftPadding: 1, + rightPadding: 1 + }, + "": { + d: "M0,0 L0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0", + type: 0, + rightPadding: 1 + }, + "": { + d: "M.2,1 C.422,1,.8,.826,.78,.5 C.8,.174,0.422,0,.2,0", + type: 1, + rightPadding: 1 + }, + "": { + d: "M1,0 L1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0", + type: 0, + leftPadding: 1 + }, + "": { + d: "M.8,1 C0.578,1,0.2,.826,.22,.5 C0.2,0.174,0.578,0,0.8,0", + type: 1, + leftPadding: 1 + }, + "": { + d: "M-.5,-.5 L1.5,1.5 L-.5,1.5", + type: 0 + }, + "": { + d: "M-.5,-.5 L1.5,1.5", + type: 1, + leftPadding: 1, + rightPadding: 1 + }, + "": { + d: "M1.5,-.5 L-.5,1.5 L1.5,1.5", + type: 0 + }, + "": { + d: "M1.5,-.5 L-.5,1.5 L-.5,-.5", + type: 0 + }, + "": { + d: "M1.5,-.5 L-.5,1.5", + type: 1, + leftPadding: 1, + rightPadding: 1 + }, + "": { + d: "M-.5,-.5 L1.5,1.5 L1.5,-.5", + type: 0 + } + }, t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.tryDrawCustomChar = function(e, i, o, c, l, d, _, u) { + const f = t.blockElementDefinitions[i]; + if (f) return function(e, t, i, s, r, n) { + for (let o = 0; o < t.length; o++) { + const a = t[o], + h = r / 8, + c = n / 8; + e.fillRect(i + a.x * h, s + a.y * c, a.w * h, a.h * c) + } + }(e, f, o, c, l, d), !0; + const v = r[i]; + if (v) return function(e, t, i, r, o, a) { + let h = n.get(t); + h || (h = new Map, n.set(t, h)); + const c = e.fillStyle; + if ("string" != typeof c) throw new Error(`Unexpected fillStyle type "${c}"`); + let l = h.get(c); + if (!l) { + const i = t[0].length, + r = t.length, + n = e.canvas.ownerDocument.createElement("canvas"); + n.width = i, n.height = r; + const o = (0, s.throwIfFalsy)(n.getContext("2d")), + a = new ImageData(i, r); + let d, _, u, f; + if (c.startsWith("#")) d = parseInt(c.slice(1, 3), 16), _ = parseInt(c.slice(3, 5), 16), u = parseInt(c.slice(5, 7), 16), f = c.length > 7 && parseInt(c.slice(7, 9), 16) || 1; + else { + if (!c.startsWith("rgba")) throw new Error(`Unexpected fillStyle color format "${c}" when drawing pattern glyph`); + [d, _, u, f] = c.substring(5, c.length - 1).split(",").map((e => parseFloat(e))) + } + for (let e = 0; e < r; e++) + for (let s = 0; s < i; s++) a.data[4 * (e * i + s)] = d, a.data[4 * (e * i + s) + 1] = _, a.data[4 * (e * i + s) + 2] = u, a.data[4 * (e * i + s) + 3] = t[e][s] * (255 * f); + o.putImageData(a, 0, 0), l = (0, s.throwIfFalsy)(e.createPattern(n, null)), h.set(c, l) + } + e.fillStyle = l, e.fillRect(i, r, o, a) + }(e, v, o, c, l, d), !0; + const g = t.boxDrawingDefinitions[i]; + if (g) return function(e, t, i, s, r, n, o) { + e.strokeStyle = e.fillStyle; + for (const [c, l] of Object.entries(t)) { + let t; + e.beginPath(), e.lineWidth = o * Number.parseInt(c), t = "function" == typeof l ? l(.15, .15 / n * r) : l; + for (const c of t.split(" ")) { + const t = c[0], + l = a[t]; + if (!l) { + console.error(`Could not find drawing instructions for "${t}"`); + continue + } + const d = c.substring(1).split(","); + d[0] && d[1] && l(e, h(d, r, n, i, s, !0, o)) + } + e.stroke(), e.closePath() + } + }(e, g, o, c, l, d, u), !0; + const p = t.powerlineDefinitions[i]; + return !!p && (function(e, t, i, s, r, n, o, c) { + const l = new Path2D; + l.rect(i, s, r, n), e.clip(l), e.beginPath(); + const d = o / 12; + e.lineWidth = c * d; + for (const o of t.d.split(" ")) { + const l = o[0], + _ = a[l]; + if (!_) { + console.error(`Could not find drawing instructions for "${l}"`); + continue + } + const u = o.substring(1).split(","); + u[0] && u[1] && _(e, h(u, r, n, i, s, !1, c, (t.leftPadding ?? 0) * (d / 2), (t.rightPadding ?? 0) * (d / 2))) + } + 1 === t.type ? (e.strokeStyle = e.fillStyle, e.stroke()) : e.fill(), e.closePath() + }(e, p, o, c, l, d, _, u), !0) + }; + const n = new Map; + + function o(e, t, i = 0) { + return Math.max(Math.min(e, t), i) + } + const a = { + C: (e, t) => e.bezierCurveTo(t[0], t[1], t[2], t[3], t[4], t[5]), + L: (e, t) => e.lineTo(t[0], t[1]), + M: (e, t) => e.moveTo(t[0], t[1]) + }; + + function h(e, t, i, s, r, n, a, h = 0, c = 0) { + const l = e.map((e => parseFloat(e) || parseInt(e))); + if (l.length < 2) throw new Error("Too few arguments for instruction"); + for (let e = 0; e < l.length; e += 2) l[e] *= t - h * a - c * a, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, t, 0)), l[e] += s + h * a; + for (let e = 1; e < l.length; e += 2) l[e] *= i, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, i, 0)), l[e] += r; + return l + } + }, + 56: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.observeDevicePixelDimensions = void 0; + const s = i(859); + t.observeDevicePixelDimensions = function(e, t, i) { + let r = new t.ResizeObserver((t => { + const s = t.find((t => t.target === e)); + if (!s) return; + if (!("devicePixelContentBoxSize" in s)) return r?.disconnect(), void(r = void 0); + const n = s.devicePixelContentBoxSize[0].inlineSize, + o = s.devicePixelContentBoxSize[0].blockSize; + n > 0 && o > 0 && i(n, o) + })); + try { + r.observe(e, { + box: ["device-pixel-content-box"] + }) + } catch { + r.disconnect(), r = void 0 + } + return (0, s.toDisposable)((() => r?.disconnect())) + } + }, + 374: (e, t) => { + function i(e) { + return 57508 <= e && e <= 57558 + } + + function s(e) { + return e >= 128512 && e <= 128591 || e >= 127744 && e <= 128511 || e >= 128640 && e <= 128767 || e >= 9728 && e <= 9983 || e >= 9984 && e <= 10175 || e >= 65024 && e <= 65039 || e >= 129280 && e <= 129535 || e >= 127462 && e <= 127487 + } + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.computeNextVariantOffset = t.createRenderDimensions = t.treatGlyphAsBackgroundColor = t.allowRescaling = t.isEmoji = t.isRestrictedPowerlineGlyph = t.isPowerlineGlyph = t.throwIfFalsy = void 0, t.throwIfFalsy = function(e) { + if (!e) throw new Error("value must not be falsy"); + return e + }, t.isPowerlineGlyph = i, t.isRestrictedPowerlineGlyph = function(e) { + return 57520 <= e && e <= 57527 + }, t.isEmoji = s, t.allowRescaling = function(e, t, r, n) { + return 1 === t && r > Math.ceil(1.5 * n) && void 0 !== e && e > 255 && !s(e) && !i(e) && ! function(e) { + return 57344 <= e && e <= 63743 + }(e) + }, t.treatGlyphAsBackgroundColor = function(e) { + return i(e) || function(e) { + return 9472 <= e && e <= 9631 + }(e) + }, t.createRenderDimensions = function() { + return { + css: { + canvas: { + width: 0, + height: 0 + }, + cell: { + width: 0, + height: 0 + } + }, + device: { + canvas: { + width: 0, + height: 0 + }, + cell: { + width: 0, + height: 0 + }, + char: { + width: 0, + height: 0, + left: 0, + top: 0 + } + } + } + }, t.computeNextVariantOffset = function(e, t, i = 0) { + return (e - (2 * Math.round(t) - i)) % (2 * Math.round(t)) + } + }, + 296: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.createSelectionRenderModel = void 0; + class i { + constructor() { + this.clear() + } + clear() { + this.hasSelection = !1, this.columnSelectMode = !1, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0 + } + update(e, t, i, s = !1) { + if (this.selectionStart = t, this.selectionEnd = i, !t || !i || t[0] === i[0] && t[1] === i[1]) return void this.clear(); + const r = e.buffers.active.ydisp, + n = t[1] - r, + o = i[1] - r, + a = Math.max(n, 0), + h = Math.min(o, e.rows - 1); + a >= e.rows || h < 0 ? this.clear() : (this.hasSelection = !0, this.columnSelectMode = s, this.viewportStartRow = n, this.viewportEndRow = o, this.viewportCappedStartRow = a, this.viewportCappedEndRow = h, this.startCol = t[0], this.endCol = i[0]) + } + isCellSelected(e, t, i) { + return !!this.hasSelection && (i -= e.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? t >= this.startCol && i >= this.viewportCappedStartRow && t < this.endCol && i <= this.viewportCappedEndRow : t < this.startCol && i >= this.viewportCappedStartRow && t >= this.endCol && i <= this.viewportCappedEndRow : i > this.viewportStartRow && i < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportEndRow && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol) + } + } + t.createSelectionRenderModel = function() { + return new i + } + }, + 509: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.TextureAtlas = void 0; + const s = i(237), + r = i(860), + n = i(374), + o = i(160), + a = i(345), + h = i(485), + c = i(385), + l = i(147), + d = i(855), + _ = { + texturePage: 0, + texturePosition: { + x: 0, + y: 0 + }, + texturePositionClipSpace: { + x: 0, + y: 0 + }, + offset: { + x: 0, + y: 0 + }, + size: { + x: 0, + y: 0 + }, + sizeClipSpace: { + x: 0, + y: 0 + } + }; + let u; + class f { + get pages() { + return this._pages + } + constructor(e, t, i) { + this._document = e, this._config = t, this._unicodeService = i, this._didWarmUp = !1, this._cacheMap = new h.FourKeyMap, this._cacheMapCombined = new h.FourKeyMap, this._pages = [], this._activePages = [], this._workBoundingBox = { + top: 0, + left: 0, + bottom: 0, + right: 0 + }, this._workAttributeData = new l.AttributeData, this._textureSize = 512, this._onAddTextureAtlasCanvas = new a.EventEmitter, this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = new a.EventEmitter, this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._requestClearModel = !1, this._createNewPage(), this._tmpCanvas = p(e, 4 * this._config.deviceCellWidth + 4, this._config.deviceCellHeight + 4), this._tmpCtx = (0, n.throwIfFalsy)(this._tmpCanvas.getContext("2d", { + alpha: this._config.allowTransparency, + willReadFrequently: !0 + })) + } + dispose() { + for (const e of this.pages) e.canvas.remove(); + this._onAddTextureAtlasCanvas.dispose() + } + warmUp() { + this._didWarmUp || (this._doWarmUp(), this._didWarmUp = !0) + } + _doWarmUp() { + const e = new c.IdleTaskQueue; + for (let t = 33; t < 126; t++) e.enqueue((() => { + if (!this._cacheMap.get(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT)) { + const e = this._drawToCache(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT); + this._cacheMap.set(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT, e) + } + })) + } + beginFrame() { + return this._requestClearModel + } + clearTexture() { + if (0 !== this._pages[0].currentRow.x || 0 !== this._pages[0].currentRow.y) { + for (const e of this._pages) e.clear(); + this._cacheMap.clear(), this._cacheMapCombined.clear(), this._didWarmUp = !1 + } + } + _createNewPage() { + if (f.maxAtlasPages && this._pages.length >= Math.max(4, f.maxAtlasPages)) { + const e = this._pages.filter((e => 2 * e.canvas.width <= (f.maxTextureSize || 4096))).sort(((e, t) => t.canvas.width !== e.canvas.width ? t.canvas.width - e.canvas.width : t.percentageUsed - e.percentageUsed)); + let t = -1, + i = 0; + for (let s = 0; s < e.length; s++) + if (e[s].canvas.width !== i) t = s, i = e[s].canvas.width; + else if (s - t == 3) break; + const s = e.slice(t, t + 4), + r = s.map((e => e.glyphs[0].texturePage)).sort(((e, t) => e > t ? 1 : -1)), + n = this.pages.length - s.length, + o = this._mergePages(s, n); + o.version++; + for (let e = r.length - 1; e >= 0; e--) this._deletePage(r[e]); + this.pages.push(o), this._requestClearModel = !0, this._onAddTextureAtlasCanvas.fire(o.canvas) + } + const e = new v(this._document, this._textureSize); + return this._pages.push(e), this._activePages.push(e), this._onAddTextureAtlasCanvas.fire(e.canvas), e + } + _mergePages(e, t) { + const i = 2 * e[0].canvas.width, + s = new v(this._document, i, e); + for (const [r, n] of e.entries()) { + const e = r * n.canvas.width % i, + o = Math.floor(r / 2) * n.canvas.height; + s.ctx.drawImage(n.canvas, e, o); + for (const s of n.glyphs) s.texturePage = t, s.sizeClipSpace.x = s.size.x / i, s.sizeClipSpace.y = s.size.y / i, s.texturePosition.x += e, s.texturePosition.y += o, s.texturePositionClipSpace.x = s.texturePosition.x / i, s.texturePositionClipSpace.y = s.texturePosition.y / i; + this._onRemoveTextureAtlasCanvas.fire(n.canvas); + const a = this._activePages.indexOf(n); - 1 !== a && this._activePages.splice(a, 1) + } + return s + } + _deletePage(e) { + this._pages.splice(e, 1); + for (let t = e; t < this._pages.length; t++) { + const e = this._pages[t]; + for (const t of e.glyphs) t.texturePage--; + e.version++ + } + } + getRasterizedGlyphCombinedChar(e, t, i, s, r) { + return this._getFromCacheMap(this._cacheMapCombined, e, t, i, s, r) + } + getRasterizedGlyph(e, t, i, s, r) { + return this._getFromCacheMap(this._cacheMap, e, t, i, s, r) + } + _getFromCacheMap(e, t, i, s, r, n = !1) { + return u = e.get(t, i, s, r), u || (u = this._drawToCache(t, i, s, r, n), e.set(t, i, s, r, u)), u + } + _getColorFromAnsiIndex(e) { + if (e >= this._config.colors.ansi.length) throw new Error("No color found for idx " + e); + return this._config.colors.ansi[e] + } + _getBackgroundColor(e, t, i, s) { + if (this._config.allowTransparency) return o.NULL_COLOR; + let r; + switch (e) { + case 16777216: + case 33554432: + r = this._getColorFromAnsiIndex(t); + break; + case 50331648: + const e = l.AttributeData.toColorRGB(t); + r = o.channels.toColor(e[0], e[1], e[2]); + break; + default: + r = i ? o.color.opaque(this._config.colors.foreground) : this._config.colors.background + } + return r + } + _getForegroundColor(e, t, i, r, n, a, h, c, d, _) { + const u = this._getMinimumContrastColor(e, t, i, r, n, a, h, d, c, _); + if (u) return u; + let f; + switch (n) { + case 16777216: + case 33554432: + this._config.drawBoldTextInBrightColors && d && a < 8 && (a += 8), f = this._getColorFromAnsiIndex(a); + break; + case 50331648: + const e = l.AttributeData.toColorRGB(a); + f = o.channels.toColor(e[0], e[1], e[2]); + break; + default: + f = h ? this._config.colors.background : this._config.colors.foreground + } + return this._config.allowTransparency && (f = o.color.opaque(f)), c && (f = o.color.multiplyOpacity(f, s.DIM_OPACITY)), f + } + _resolveBackgroundRgba(e, t, i) { + switch (e) { + case 16777216: + case 33554432: + return this._getColorFromAnsiIndex(t).rgba; + case 50331648: + return t << 8; + default: + return i ? this._config.colors.foreground.rgba : this._config.colors.background.rgba + } + } + _resolveForegroundRgba(e, t, i, s) { + switch (e) { + case 16777216: + case 33554432: + return this._config.drawBoldTextInBrightColors && s && t < 8 && (t += 8), this._getColorFromAnsiIndex(t).rgba; + case 50331648: + return t << 8; + default: + return i ? this._config.colors.background.rgba : this._config.colors.foreground.rgba + } + } + _getMinimumContrastColor(e, t, i, s, r, n, a, h, c, l) { + if (1 === this._config.minimumContrastRatio || l) return; + const d = this._getContrastCache(c), + _ = d.getColor(e, s); + if (void 0 !== _) return _ || void 0; + const u = this._resolveBackgroundRgba(t, i, a), + f = this._resolveForegroundRgba(r, n, a, h), + v = o.rgba.ensureContrastRatio(u, f, this._config.minimumContrastRatio / (c ? 2 : 1)); + if (!v) return void d.setColor(e, s, null); + const g = o.channels.toColor(v >> 24 & 255, v >> 16 & 255, v >> 8 & 255); + return d.setColor(e, s, g), g + } + _getContrastCache(e) { + return e ? this._config.colors.halfContrastCache : this._config.colors.contrastCache + } + _drawToCache(e, t, i, o, a = !1) { + const h = "number" == typeof e ? String.fromCharCode(e) : e, + c = Math.min(this._config.deviceCellWidth * Math.max(h.length, 2) + 4, this._textureSize); + this._tmpCanvas.width < c && (this._tmpCanvas.width = c); + const d = Math.min(this._config.deviceCellHeight + 8, this._textureSize); + if (this._tmpCanvas.height < d && (this._tmpCanvas.height = d), this._tmpCtx.save(), this._workAttributeData.fg = i, this._workAttributeData.bg = t, this._workAttributeData.extended.ext = o, this._workAttributeData.isInvisible()) return _; + const u = !!this._workAttributeData.isBold(), + v = !!this._workAttributeData.isInverse(), + p = !!this._workAttributeData.isDim(), + m = !!this._workAttributeData.isItalic(), + C = !!this._workAttributeData.isUnderline(), + S = !!this._workAttributeData.isStrikethrough(), + b = !!this._workAttributeData.isOverline(); + let w = this._workAttributeData.getFgColor(), + y = this._workAttributeData.getFgColorMode(), + L = this._workAttributeData.getBgColor(), + x = this._workAttributeData.getBgColorMode(); + if (v) { + const e = w; + w = L, L = e; + const t = y; + y = x, x = t + } + const E = this._getBackgroundColor(x, L, v, p); + this._tmpCtx.globalCompositeOperation = "copy", this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.globalCompositeOperation = "source-over"; + const R = u ? this._config.fontWeightBold : this._config.fontWeight, + M = m ? "italic" : ""; + this._tmpCtx.font = `${M} ${R} ${this._config.fontSize * this._config.devicePixelRatio}px ${this._config.fontFamily}`, this._tmpCtx.textBaseline = s.TEXT_BASELINE; + const A = 1 === h.length && (0, n.isPowerlineGlyph)(h.charCodeAt(0)), + D = 1 === h.length && (0, n.isRestrictedPowerlineGlyph)(h.charCodeAt(0)), + k = this._getForegroundColor(t, x, L, i, y, w, v, p, u, (0, n.treatGlyphAsBackgroundColor)(h.charCodeAt(0))); + this._tmpCtx.fillStyle = k.css; + const T = D ? 0 : 4; + let B = !1; + !1 !== this._config.customGlyphs && (B = (0, r.tryDrawCustomChar)(this._tmpCtx, h, T, T, this._config.deviceCellWidth, this._config.deviceCellHeight, this._config.fontSize, this._config.devicePixelRatio)); + let O, P = !A; + if (O = "number" == typeof e ? this._unicodeService.wcwidth(e) : this._unicodeService.getStringCellWidth(e), C) { + this._tmpCtx.save(); + const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)), + t = e % 2 == 1 ? .5 : 0; + if (this._tmpCtx.lineWidth = e, this._workAttributeData.isUnderlineColorDefault()) this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle; + else if (this._workAttributeData.isUnderlineColorRGB()) P = !1, this._tmpCtx.strokeStyle = `rgb(${l.AttributeData.toColorRGB(this._workAttributeData.getUnderlineColor()).join(",")})`; + else { + P = !1; + let e = this._workAttributeData.getUnderlineColor(); + this._config.drawBoldTextInBrightColors && this._workAttributeData.isBold() && e < 8 && (e += 8), this._tmpCtx.strokeStyle = this._getColorFromAnsiIndex(e).css + } + this._tmpCtx.beginPath(); + const i = T, + s = Math.ceil(T + this._config.deviceCharHeight) - t - (a ? 2 * e : 0), + r = s + e, + o = s + 2 * e; + let c = this._workAttributeData.getUnderlineVariantOffset(); + for (let a = 0; a < O; a++) { + this._tmpCtx.save(); + const h = i + a * this._config.deviceCellWidth, + l = i + (a + 1) * this._config.deviceCellWidth, + d = h + this._config.deviceCellWidth / 2; + switch (this._workAttributeData.extended.underlineStyle) { + case 2: + this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s), this._tmpCtx.moveTo(h, o), this._tmpCtx.lineTo(l, o); + break; + case 3: + const i = e <= 1 ? o : Math.ceil(T + this._config.deviceCharHeight - e / 2) - t, + a = e <= 1 ? s : Math.ceil(T + this._config.deviceCharHeight + e / 2) - t, + _ = new Path2D; + _.rect(h, s, this._config.deviceCellWidth, o - s), this._tmpCtx.clip(_), this._tmpCtx.moveTo(h - this._config.deviceCellWidth / 2, r), this._tmpCtx.bezierCurveTo(h - this._config.deviceCellWidth / 2, a, h, a, h, r), this._tmpCtx.bezierCurveTo(h, i, d, i, d, r), this._tmpCtx.bezierCurveTo(d, a, l, a, l, r), this._tmpCtx.bezierCurveTo(l, i, l + this._config.deviceCellWidth / 2, i, l + this._config.deviceCellWidth / 2, r); + break; + case 4: + const u = 0 === c ? 0 : c >= e ? 2 * e - c : e - c; + 0 == !(c >= e) || 0 === u ? (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h + u, s), this._tmpCtx.lineTo(l, s)) : (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(h + u, s), this._tmpCtx.moveTo(h + u + e, s), this._tmpCtx.lineTo(l, s)), c = (0, n.computeNextVariantOffset)(l - h, e, c); + break; + case 5: + const f = .6, + v = .3, + g = l - h, + p = Math.floor(f * g), + m = Math.floor(v * g), + C = g - p - m; + this._tmpCtx.setLineDash([p, m, C]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s); + break; + default: + this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s) + } + this._tmpCtx.stroke(), this._tmpCtx.restore() + } + if (this._tmpCtx.restore(), !B && this._config.fontSize >= 12 && !this._config.allowTransparency && " " !== h) { + this._tmpCtx.save(), this._tmpCtx.textBaseline = "alphabetic"; + const t = this._tmpCtx.measureText(h); + if (this._tmpCtx.restore(), "actualBoundingBoxDescent" in t && t.actualBoundingBoxDescent > 0) { + this._tmpCtx.save(); + const t = new Path2D; + t.rect(i, s - Math.ceil(e / 2), this._config.deviceCellWidth * O, o - s + Math.ceil(e / 2)), this._tmpCtx.clip(t), this._tmpCtx.lineWidth = 3 * this._config.devicePixelRatio, this._tmpCtx.strokeStyle = E.css, this._tmpCtx.strokeText(h, T, T + this._config.deviceCharHeight), this._tmpCtx.restore() + } + } + } + if (b) { + const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)), + t = e % 2 == 1 ? .5 : 0; + this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + t), this._tmpCtx.stroke() + } + if (B || this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight), "_" === h && !this._config.allowTransparency) { + let e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P); + if (e) + for (let t = 1; t <= 5 && (this._tmpCtx.save(), this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.restore(), this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight - t), e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P), e); t++); + } + if (S) { + const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 10)), + t = this._tmpCtx.lineWidth % 2 == 1 ? .5 : 0; + this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.stroke() + } + this._tmpCtx.restore(); + const I = this._tmpCtx.getImageData(0, 0, this._tmpCanvas.width, this._tmpCanvas.height); + let F; + if (F = this._config.allowTransparency ? function(e) { + for (let t = 0; t < e.data.length; t += 4) + if (e.data[t + 3] > 0) return !1; + return !0 + }(I) : g(I, E, k, P), F) return _; + const H = this._findGlyphBoundingBox(I, this._workBoundingBox, c, D, B, T); + let $, W; + for (;;) { + if (0 === this._activePages.length) { + const e = this._createNewPage(); + $ = e, W = e.currentRow, W.height = H.size.y; + break + } + $ = this._activePages[this._activePages.length - 1], W = $.currentRow; + for (const e of this._activePages) H.size.y <= e.currentRow.height && ($ = e, W = e.currentRow); + for (let e = this._activePages.length - 1; e >= 0; e--) + for (const t of this._activePages[e].fixedRows) t.height <= W.height && H.size.y <= t.height && ($ = this._activePages[e], W = t); + if (W.y + H.size.y >= $.canvas.height || W.height > H.size.y + 2) { + let e = !1; + if ($.currentRow.y + $.currentRow.height + H.size.y >= $.canvas.height) { + let t; + for (const e of this._activePages) + if (e.currentRow.y + e.currentRow.height + H.size.y < e.canvas.height) { + t = e; + break + } if (t) $ = t; + else if (f.maxAtlasPages && this._pages.length >= f.maxAtlasPages && W.y + H.size.y <= $.canvas.height && W.height >= H.size.y && W.x + H.size.x <= $.canvas.width) e = !0; + else { + const t = this._createNewPage(); + $ = t, W = t.currentRow, W.height = H.size.y, e = !0 + } + } + e || ($.currentRow.height > 0 && $.fixedRows.push($.currentRow), W = { + x: 0, + y: $.currentRow.y + $.currentRow.height, + height: H.size.y + }, $.fixedRows.push(W), $.currentRow = { + x: 0, + y: W.y + W.height, + height: 0 + }) + } + if (W.x + H.size.x <= $.canvas.width) break; + W === $.currentRow ? (W.x = 0, W.y += W.height, W.height = 0) : $.fixedRows.splice($.fixedRows.indexOf(W), 1) + } + return H.texturePage = this._pages.indexOf($), H.texturePosition.x = W.x, H.texturePosition.y = W.y, H.texturePositionClipSpace.x = W.x / $.canvas.width, H.texturePositionClipSpace.y = W.y / $.canvas.height, H.sizeClipSpace.x /= $.canvas.width, H.sizeClipSpace.y /= $.canvas.height, W.height = Math.max(W.height, H.size.y), W.x += H.size.x, $.ctx.putImageData(I, H.texturePosition.x - this._workBoundingBox.left, H.texturePosition.y - this._workBoundingBox.top, this._workBoundingBox.left, this._workBoundingBox.top, H.size.x, H.size.y), $.addGlyph(H), $.version++, H + } + _findGlyphBoundingBox(e, t, i, s, r, n) { + t.top = 0; + const o = s ? this._config.deviceCellHeight : this._tmpCanvas.height, + a = s ? this._config.deviceCellWidth : i; + let h = !1; + for (let i = 0; i < o; i++) { + for (let s = 0; s < a; s++) { + const r = i * this._tmpCanvas.width * 4 + 4 * s + 3; + if (0 !== e.data[r]) { + t.top = i, h = !0; + break + } + } + if (h) break + } + t.left = 0, h = !1; + for (let i = 0; i < n + a; i++) { + for (let s = 0; s < o; s++) { + const r = s * this._tmpCanvas.width * 4 + 4 * i + 3; + if (0 !== e.data[r]) { + t.left = i, h = !0; + break + } + } + if (h) break + } + t.right = a, h = !1; + for (let i = n + a - 1; i >= n; i--) { + for (let s = 0; s < o; s++) { + const r = s * this._tmpCanvas.width * 4 + 4 * i + 3; + if (0 !== e.data[r]) { + t.right = i, h = !0; + break + } + } + if (h) break + } + t.bottom = o, h = !1; + for (let i = o - 1; i >= 0; i--) { + for (let s = 0; s < a; s++) { + const r = i * this._tmpCanvas.width * 4 + 4 * s + 3; + if (0 !== e.data[r]) { + t.bottom = i, h = !0; + break + } + } + if (h) break + } + return { + texturePage: 0, + texturePosition: { + x: 0, + y: 0 + }, + texturePositionClipSpace: { + x: 0, + y: 0 + }, + size: { + x: t.right - t.left + 1, + y: t.bottom - t.top + 1 + }, + sizeClipSpace: { + x: t.right - t.left + 1, + y: t.bottom - t.top + 1 + }, + offset: { + x: -t.left + n + (s || r ? Math.floor((this._config.deviceCellWidth - this._config.deviceCharWidth) / 2) : 0), + y: -t.top + n + (s || r ? 1 === this._config.lineHeight ? 0 : Math.round((this._config.deviceCellHeight - this._config.deviceCharHeight) / 2) : 0) + } + } + } + } + t.TextureAtlas = f; + class v { + get percentageUsed() { + return this._usedPixels / (this.canvas.width * this.canvas.height) + } + get glyphs() { + return this._glyphs + } + addGlyph(e) { + this._glyphs.push(e), this._usedPixels += e.size.x * e.size.y + } + constructor(e, t, i) { + if (this._usedPixels = 0, this._glyphs = [], this.version = 0, this.currentRow = { + x: 0, + y: 0, + height: 0 + }, this.fixedRows = [], i) + for (const e of i) this._glyphs.push(...e.glyphs), this._usedPixels += e._usedPixels; + this.canvas = p(e, t, t), this.ctx = (0, n.throwIfFalsy)(this.canvas.getContext("2d", { + alpha: !0 + })) + } + clear() { + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.currentRow.x = 0, this.currentRow.y = 0, this.currentRow.height = 0, this.fixedRows.length = 0, this.version++ + } + } + + function g(e, t, i, s) { + const r = t.rgba >>> 24, + n = t.rgba >>> 16 & 255, + o = t.rgba >>> 8 & 255, + a = i.rgba >>> 24, + h = i.rgba >>> 16 & 255, + c = i.rgba >>> 8 & 255, + l = Math.floor((Math.abs(r - a) + Math.abs(n - h) + Math.abs(o - c)) / 12); + let d = !0; + for (let t = 0; t < e.data.length; t += 4) e.data[t] === r && e.data[t + 1] === n && e.data[t + 2] === o || s && Math.abs(e.data[t] - r) + Math.abs(e.data[t + 1] - n) + Math.abs(e.data[t + 2] - o) < l ? e.data[t + 3] = 0 : d = !1; + return d + } + + function p(e, t, i) { + const s = e.createElement("canvas"); + return s.width = t, s.height = i, s + } + }, + 577: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CharacterJoinerService = t.JoinedCellData = void 0; + const n = i(147), + o = i(855), + a = i(782), + h = i(97); + class c extends n.AttributeData { + constructor(e, t, i) { + super(), this.content = 0, this.combinedData = "", this.fg = e.fg, this.bg = e.bg, this.combinedData = t, this._width = i + } + isCombined() { + return 2097152 + } + getWidth() { + return this._width + } + getChars() { + return this.combinedData + } + getCode() { + return 2097151 + } + setFromCharData(e) { + throw new Error("not implemented") + } + getAsCharData() { + return [this.fg, this.getChars(), this.getWidth(), this.getCode()] + } + } + t.JoinedCellData = c; + let l = t.CharacterJoinerService = class e { + constructor(e) { + this._bufferService = e, this._characterJoiners = [], this._nextCharacterJoinerId = 0, this._workCell = new a.CellData + } + register(e) { + const t = { + id: this._nextCharacterJoinerId++, + handler: e + }; + return this._characterJoiners.push(t), t.id + } + deregister(e) { + for (let t = 0; t < this._characterJoiners.length; t++) + if (this._characterJoiners[t].id === e) return this._characterJoiners.splice(t, 1), !0; + return !1 + } + getJoinedCharacters(e) { + if (0 === this._characterJoiners.length) return []; + const t = this._bufferService.buffer.lines.get(e); + if (!t || 0 === t.length) return []; + const i = [], + s = t.translateToString(!0); + let r = 0, + n = 0, + a = 0, + h = t.getFg(0), + c = t.getBg(0); + for (let e = 0; e < t.getTrimmedLength(); e++) + if (t.loadCell(e, this._workCell), 0 !== this._workCell.getWidth()) { + if (this._workCell.fg !== h || this._workCell.bg !== c) { + if (e - r > 1) { + const e = this._getJoinedRanges(s, a, n, t, r); + for (let t = 0; t < e.length; t++) i.push(e[t]) + } + r = e, a = n, h = this._workCell.fg, c = this._workCell.bg + } + n += this._workCell.getChars().length || o.WHITESPACE_CELL_CHAR.length + } if (this._bufferService.cols - r > 1) { + const e = this._getJoinedRanges(s, a, n, t, r); + for (let t = 0; t < e.length; t++) i.push(e[t]) + } + return i + } + _getJoinedRanges(t, i, s, r, n) { + const o = t.substring(i, s); + let a = []; + try { + a = this._characterJoiners[0].handler(o) + } catch (e) { + console.error(e) + } + for (let t = 1; t < this._characterJoiners.length; t++) try { + const i = this._characterJoiners[t].handler(o); + for (let t = 0; t < i.length; t++) e._mergeRanges(a, i[t]) + } catch (e) { + console.error(e) + } + return this._stringRangesToCellRanges(a, r, n), a + } + _stringRangesToCellRanges(e, t, i) { + let s = 0, + r = !1, + n = 0, + a = e[s]; + if (a) { + for (let h = i; h < this._bufferService.cols; h++) { + const i = t.getWidth(h), + c = t.getString(h).length || o.WHITESPACE_CELL_CHAR.length; + if (0 !== i) { + if (!r && a[0] <= n && (a[0] = h, r = !0), a[1] <= n) { + if (a[1] = h, a = e[++s], !a) break; + a[0] <= n ? (a[0] = h, r = !0) : r = !1 + } + n += c + } + } + a && (a[1] = this._bufferService.cols) + } + } + static _mergeRanges(e, t) { + let i = !1; + for (let s = 0; s < e.length; s++) { + const r = e[s]; + if (i) { + if (t[1] <= r[0]) return e[s - 1][1] = t[1], e; + if (t[1] <= r[1]) return e[s - 1][1] = Math.max(t[1], r[1]), e.splice(s, 1), e; + e.splice(s, 1), s-- + } else { + if (t[1] <= r[0]) return e.splice(s, 0, t), e; + if (t[1] <= r[1]) return r[0] = Math.min(t[0], r[0]), e; + t[0] < r[1] && (r[0] = Math.min(t[0], r[0]), i = !0) + } + } + return i ? e[e.length - 1][1] = t[1] : e.push(t), e + } + }; + t.CharacterJoinerService = l = s([r(0, h.IBufferService)], l) + }, + 160: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.contrastRatio = t.toPaddedHex = t.rgba = t.rgb = t.css = t.color = t.channels = t.NULL_COLOR = void 0; + let i = 0, + s = 0, + r = 0, + n = 0; + var o, a, h, c, l; + + function d(e) { + const t = e.toString(16); + return t.length < 2 ? "0" + t : t + } + + function _(e, t) { + return e < t ? (t + .05) / (e + .05) : (e + .05) / (t + .05) + } + t.NULL_COLOR = { + css: "#00000000", + rgba: 0 + }, + function(e) { + e.toCss = function(e, t, i, s) { + return void 0 !== s ? `#${d(e)}${d(t)}${d(i)}${d(s)}` : `#${d(e)}${d(t)}${d(i)}` + }, e.toRgba = function(e, t, i, s = 255) { + return (e << 24 | t << 16 | i << 8 | s) >>> 0 + }, e.toColor = function(t, i, s, r) { + return { + css: e.toCss(t, i, s, r), + rgba: e.toRgba(t, i, s, r) + } + } + }(o || (t.channels = o = {})), + function(e) { + function t(e, t) { + return n = Math.round(255 * t), [i, s, r] = l.toChannels(e.rgba), { + css: o.toCss(i, s, r, n), + rgba: o.toRgba(i, s, r, n) + } + } + e.blend = function(e, t) { + if (n = (255 & t.rgba) / 255, 1 === n) return { + css: t.css, + rgba: t.rgba + }; + const a = t.rgba >> 24 & 255, + h = t.rgba >> 16 & 255, + c = t.rgba >> 8 & 255, + l = e.rgba >> 24 & 255, + d = e.rgba >> 16 & 255, + _ = e.rgba >> 8 & 255; + return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), { + css: o.toCss(i, s, r), + rgba: o.toRgba(i, s, r) + } + }, e.isOpaque = function(e) { + return !(255 & ~e.rgba) + }, e.ensureContrastRatio = function(e, t, i) { + const s = l.ensureContrastRatio(e.rgba, t.rgba, i); + if (s) return o.toColor(s >> 24 & 255, s >> 16 & 255, s >> 8 & 255) + }, e.opaque = function(e) { + const t = (255 | e.rgba) >>> 0; + return [i, s, r] = l.toChannels(t), { + css: o.toCss(i, s, r), + rgba: t + } + }, e.opacity = t, e.multiplyOpacity = function(e, i) { + return n = 255 & e.rgba, t(e, n * i / 255) + }, e.toColorRGB = function(e) { + return [e.rgba >> 24 & 255, e.rgba >> 16 & 255, e.rgba >> 8 & 255] + } + }(a || (t.color = a = {})), + function(e) { + let t, a; + try { + const e = document.createElement("canvas"); + e.width = 1, e.height = 1; + const i = e.getContext("2d", { + willReadFrequently: !0 + }); + i && (t = i, t.globalCompositeOperation = "copy", a = t.createLinearGradient(0, 0, 1, 1)) + } catch {} + e.toColor = function(e) { + if (e.match(/#[\da-f]{3,8}/i)) switch (e.length) { + case 4: + return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), o.toColor(i, s, r); + case 5: + return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), n = parseInt(e.slice(4, 5).repeat(2), 16), o.toColor(i, s, r, n); + case 7: + return { + css: e, rgba: (parseInt(e.slice(1), 16) << 8 | 255) >>> 0 + }; + case 9: + return { + css: e, rgba: parseInt(e.slice(1), 16) >>> 0 + } + } + const h = e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/); + if (h) return i = parseInt(h[1]), s = parseInt(h[2]), r = parseInt(h[3]), n = Math.round(255 * (void 0 === h[5] ? 1 : parseFloat(h[5]))), o.toColor(i, s, r, n); + if (!t || !a) throw new Error("css.toColor: Unsupported css format"); + if (t.fillStyle = a, t.fillStyle = e, "string" != typeof t.fillStyle) throw new Error("css.toColor: Unsupported css format"); + if (t.fillRect(0, 0, 1, 1), [i, s, r, n] = t.getImageData(0, 0, 1, 1).data, 255 !== n) throw new Error("css.toColor: Unsupported css format"); + return { + rgba: o.toRgba(i, s, r, n), + css: e + } + } + }(h || (t.css = h = {})), + function(e) { + function t(e, t, i) { + const s = e / 255, + r = t / 255, + n = i / 255; + return .2126 * (s <= .03928 ? s / 12.92 : Math.pow((s + .055) / 1.055, 2.4)) + .7152 * (r <= .03928 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4)) + .0722 * (n <= .03928 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4)) + } + e.relativeLuminance = function(e) { + return t(e >> 16 & 255, e >> 8 & 255, 255 & e) + }, e.relativeLuminance2 = t + }(c || (t.rgb = c = {})), + function(e) { + function t(e, t, i) { + const s = e >> 24 & 255, + r = e >> 16 & 255, + n = e >> 8 & 255; + let o = t >> 24 & 255, + a = t >> 16 & 255, + h = t >> 8 & 255, + l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + for (; l < i && (o > 0 || a > 0 || h > 0);) o -= Math.max(0, Math.ceil(.1 * o)), a -= Math.max(0, Math.ceil(.1 * a)), h -= Math.max(0, Math.ceil(.1 * h)), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + return (o << 24 | a << 16 | h << 8 | 255) >>> 0 + } + + function a(e, t, i) { + const s = e >> 24 & 255, + r = e >> 16 & 255, + n = e >> 8 & 255; + let o = t >> 24 & 255, + a = t >> 16 & 255, + h = t >> 8 & 255, + l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + for (; l < i && (o < 255 || a < 255 || h < 255);) o = Math.min(255, o + Math.ceil(.1 * (255 - o))), a = Math.min(255, a + Math.ceil(.1 * (255 - a))), h = Math.min(255, h + Math.ceil(.1 * (255 - h))), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n)); + return (o << 24 | a << 16 | h << 8 | 255) >>> 0 + } + e.blend = function(e, t) { + if (n = (255 & t) / 255, 1 === n) return t; + const a = t >> 24 & 255, + h = t >> 16 & 255, + c = t >> 8 & 255, + l = e >> 24 & 255, + d = e >> 16 & 255, + _ = e >> 8 & 255; + return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), o.toRgba(i, s, r) + }, e.ensureContrastRatio = function(e, i, s) { + const r = c.relativeLuminance(e >> 8), + n = c.relativeLuminance(i >> 8); + if (_(r, n) < s) { + if (n < r) { + const n = t(e, i, s), + o = _(r, c.relativeLuminance(n >> 8)); + if (o < s) { + const t = a(e, i, s); + return o > _(r, c.relativeLuminance(t >> 8)) ? n : t + } + return n + } + const o = a(e, i, s), + h = _(r, c.relativeLuminance(o >> 8)); + if (h < s) { + const n = t(e, i, s); + return h > _(r, c.relativeLuminance(n >> 8)) ? o : n + } + return o + } + }, e.reduceLuminance = t, e.increaseLuminance = a, e.toChannels = function(e) { + return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e] + } + }(l || (t.rgba = l = {})), t.toPaddedHex = d, t.contrastRatio = _ + }, + 345: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class { + constructor() { + this._listeners = [], this._disposed = !1 + } + get event() { + return this._event || (this._event = e => (this._listeners.push(e), { + dispose: () => { + if (!this._disposed) + for (let t = 0; t < this._listeners.length; t++) + if (this._listeners[t] === e) return void this._listeners.splice(t, 1) + } + })), this._event + } + fire(e, t) { + const i = []; + for (let e = 0; e < this._listeners.length; e++) i.push(this._listeners[e]); + for (let s = 0; s < i.length; s++) i[s].call(void 0, e, t) + } + dispose() { + this.clearListeners(), this._disposed = !0 + } + clearListeners() { + this._listeners && (this._listeners.length = 0) + } + }, t.forwardEvent = function(e, t) { + return e((e => t.fire(e))) + }, t.runAndSubscribe = function(e, t) { + return t(void 0), e((e => t(e))) + } + }, + 859: (e, t) => { + function i(e) { + for (const t of e) t.dispose(); + e.length = 0 + } + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.getDisposeArrayDisposable = t.disposeArray = t.toDisposable = t.MutableDisposable = t.Disposable = void 0, t.Disposable = class { + constructor() { + this._disposables = [], this._isDisposed = !1 + } + dispose() { + this._isDisposed = !0; + for (const e of this._disposables) e.dispose(); + this._disposables.length = 0 + } + register(e) { + return this._disposables.push(e), e + } + unregister(e) { + const t = this._disposables.indexOf(e); - 1 !== t && this._disposables.splice(t, 1) + } + }, t.MutableDisposable = class { + constructor() { + this._isDisposed = !1 + } + get value() { + return this._isDisposed ? void 0 : this._value + } + set value(e) { + this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e) + } + clear() { + this.value = void 0 + } + dispose() { + this._isDisposed = !0, this._value?.dispose(), this._value = void 0 + } + }, t.toDisposable = function(e) { + return { + dispose: e + } + }, t.disposeArray = i, t.getDisposeArrayDisposable = function(e) { + return { + dispose: () => i(e) + } + } + }, + 485: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.FourKeyMap = t.TwoKeyMap = void 0; + class i { + constructor() { + this._data = {} + } + set(e, t, i) { + this._data[e] || (this._data[e] = {}), this._data[e][t] = i + } + get(e, t) { + return this._data[e] ? this._data[e][t] : void 0 + } + clear() { + this._data = {} + } + } + t.TwoKeyMap = i, t.FourKeyMap = class { + constructor() { + this._data = new i + } + set(e, t, s, r, n) { + this._data.get(e, t) || this._data.set(e, t, new i), this._data.get(e, t).set(s, r, n) + } + get(e, t, i, s) { + return this._data.get(e, t)?.get(i, s) + } + clear() { + this._data.clear() + } + } + }, + 399: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.isChromeOS = t.isLinux = t.isWindows = t.isIphone = t.isIpad = t.isMac = t.getSafariVersion = t.isSafari = t.isLegacyEdge = t.isFirefox = t.isNode = void 0, t.isNode = "undefined" != typeof process && "title" in process; + const i = t.isNode ? "node" : navigator.userAgent, + s = t.isNode ? "node" : navigator.platform; + t.isFirefox = i.includes("Firefox"), t.isLegacyEdge = i.includes("Edge"), t.isSafari = /^((?!chrome|android).)*safari/i.test(i), t.getSafariVersion = function() { + if (!t.isSafari) return 0; + const e = i.match(/Version\/(\d+)/); + return null === e || e.length < 2 ? 0 : parseInt(e[1]) + }, t.isMac = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(s), t.isIpad = "iPad" === s, t.isIphone = "iPhone" === s, t.isWindows = ["Windows", "Win16", "Win32", "WinCE"].includes(s), t.isLinux = s.indexOf("Linux") >= 0, t.isChromeOS = /\bCrOS\b/.test(i) + }, + 385: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.DebouncedIdleTask = t.IdleTaskQueue = t.PriorityTaskQueue = void 0; + const s = i(399); + class r { + constructor() { + this._tasks = [], this._i = 0 + } + enqueue(e) { + this._tasks.push(e), this._start() + } + flush() { + for (; this._i < this._tasks.length;) this._tasks[this._i]() || this._i++; + this.clear() + } + clear() { + this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0 + } + _start() { + this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this))) + } + _process(e) { + this._idleCallback = void 0; + let t = 0, + i = 0, + s = e.timeRemaining(), + r = 0; + for (; this._i < this._tasks.length;) { + if (t = Date.now(), this._tasks[this._i]() || this._i++, t = Math.max(1, Date.now() - t), i = Math.max(t, i), r = e.timeRemaining(), 1.5 * i > r) return s - t < -20 && console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s - t))}ms`), void this._start(); + s = r + } + this.clear() + } + } + class n extends r { + _requestCallback(e) { + return setTimeout((() => e(this._createDeadline(16)))) + } + _cancelCallback(e) { + clearTimeout(e) + } + _createDeadline(e) { + const t = Date.now() + e; + return { + timeRemaining: () => Math.max(0, t - Date.now()) + } + } + } + t.PriorityTaskQueue = n, t.IdleTaskQueue = !s.isNode && "requestIdleCallback" in window ? class extends r { + _requestCallback(e) { + return requestIdleCallback(e) + } + _cancelCallback(e) { + cancelIdleCallback(e) + } + } : n, t.DebouncedIdleTask = class { + constructor() { + this._queue = new t.IdleTaskQueue + } + set(e) { + this._queue.clear(), this._queue.enqueue(e) + } + flush() { + this._queue.flush() + } + } + }, + 147: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.ExtendedAttrs = t.AttributeData = void 0; + class i { + constructor() { + this.fg = 0, this.bg = 0, this.extended = new s + } + static toColorRGB(e) { + return [e >>> 16 & 255, e >>> 8 & 255, 255 & e] + } + static fromColorRGB(e) { + return (255 & e[0]) << 16 | (255 & e[1]) << 8 | 255 & e[2] + } + clone() { + const e = new i; + return e.fg = this.fg, e.bg = this.bg, e.extended = this.extended.clone(), e + } + isInverse() { + return 67108864 & this.fg + } + isBold() { + return 134217728 & this.fg + } + isUnderline() { + return this.hasExtendedAttrs() && 0 !== this.extended.underlineStyle ? 1 : 268435456 & this.fg + } + isBlink() { + return 536870912 & this.fg + } + isInvisible() { + return 1073741824 & this.fg + } + isItalic() { + return 67108864 & this.bg + } + isDim() { + return 134217728 & this.bg + } + isStrikethrough() { + return 2147483648 & this.fg + } + isProtected() { + return 536870912 & this.bg + } + isOverline() { + return 1073741824 & this.bg + } + getFgColorMode() { + return 50331648 & this.fg + } + getBgColorMode() { + return 50331648 & this.bg + } + isFgRGB() { + return !(50331648 & ~this.fg) + } + isBgRGB() { + return !(50331648 & ~this.bg) + } + isFgPalette() { + return 16777216 == (50331648 & this.fg) || 33554432 == (50331648 & this.fg) + } + isBgPalette() { + return 16777216 == (50331648 & this.bg) || 33554432 == (50331648 & this.bg) + } + isFgDefault() { + return !(50331648 & this.fg) + } + isBgDefault() { + return !(50331648 & this.bg) + } + isAttributeDefault() { + return 0 === this.fg && 0 === this.bg + } + getFgColor() { + switch (50331648 & this.fg) { + case 16777216: + case 33554432: + return 255 & this.fg; + case 50331648: + return 16777215 & this.fg; + default: + return -1 + } + } + getBgColor() { + switch (50331648 & this.bg) { + case 16777216: + case 33554432: + return 255 & this.bg; + case 50331648: + return 16777215 & this.bg; + default: + return -1 + } + } + hasExtendedAttrs() { + return 268435456 & this.bg + } + updateExtended() { + this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456 + } + getUnderlineColor() { + if (268435456 & this.bg && ~this.extended.underlineColor) switch (50331648 & this.extended.underlineColor) { + case 16777216: + case 33554432: + return 255 & this.extended.underlineColor; + case 50331648: + return 16777215 & this.extended.underlineColor; + default: + return this.getFgColor() + } + return this.getFgColor() + } + getUnderlineColorMode() { + return 268435456 & this.bg && ~this.extended.underlineColor ? 50331648 & this.extended.underlineColor : this.getFgColorMode() + } + isUnderlineColorRGB() { + return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & ~this.extended.underlineColor) : this.isFgRGB() + } + isUnderlineColorPalette() { + return 268435456 & this.bg && ~this.extended.underlineColor ? 16777216 == (50331648 & this.extended.underlineColor) || 33554432 == (50331648 & this.extended.underlineColor) : this.isFgPalette() + } + isUnderlineColorDefault() { + return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & this.extended.underlineColor) : this.isFgDefault() + } + getUnderlineStyle() { + return 268435456 & this.fg ? 268435456 & this.bg ? this.extended.underlineStyle : 1 : 0 + } + getUnderlineVariantOffset() { + return this.extended.underlineVariantOffset + } + } + t.AttributeData = i; + class s { + get ext() { + return this._urlId ? -469762049 & this._ext | this.underlineStyle << 26 : this._ext + } + set ext(e) { + this._ext = e + } + get underlineStyle() { + return this._urlId ? 5 : (469762048 & this._ext) >> 26 + } + set underlineStyle(e) { + this._ext &= -469762049, this._ext |= e << 26 & 469762048 + } + get underlineColor() { + return 67108863 & this._ext + } + set underlineColor(e) { + this._ext &= -67108864, this._ext |= 67108863 & e + } + get urlId() { + return this._urlId + } + set urlId(e) { + this._urlId = e + } + get underlineVariantOffset() { + const e = (3758096384 & this._ext) >> 29; + return e < 0 ? 4294967288 ^ e : e + } + set underlineVariantOffset(e) { + this._ext &= 536870911, this._ext |= e << 29 & 3758096384 + } + constructor(e = 0, t = 0) { + this._ext = 0, this._urlId = 0, this._ext = e, this._urlId = t + } + clone() { + return new s(this._ext, this._urlId) + } + isEmpty() { + return 0 === this.underlineStyle && 0 === this._urlId + } + } + t.ExtendedAttrs = s + }, + 782: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.CellData = void 0; + const s = i(133), + r = i(855), + n = i(147); + class o extends n.AttributeData { + constructor() { + super(...arguments), this.content = 0, this.fg = 0, this.bg = 0, this.extended = new n.ExtendedAttrs, this.combinedData = "" + } + static fromCharData(e) { + const t = new o; + return t.setFromCharData(e), t + } + isCombined() { + return 2097152 & this.content + } + getWidth() { + return this.content >> 22 + } + getChars() { + return 2097152 & this.content ? this.combinedData : 2097151 & this.content ? (0, s.stringFromCodePoint)(2097151 & this.content) : "" + } + getCode() { + return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : 2097151 & this.content + } + setFromCharData(e) { + this.fg = e[r.CHAR_DATA_ATTR_INDEX], this.bg = 0; + let t = !1; + if (e[r.CHAR_DATA_CHAR_INDEX].length > 2) t = !0; + else if (2 === e[r.CHAR_DATA_CHAR_INDEX].length) { + const i = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0); + if (55296 <= i && i <= 56319) { + const s = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1); + 56320 <= s && s <= 57343 ? this.content = 1024 * (i - 55296) + s - 56320 + 65536 | e[r.CHAR_DATA_WIDTH_INDEX] << 22 : t = !0 + } else t = !0 + } else this.content = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | e[r.CHAR_DATA_WIDTH_INDEX] << 22; + t && (this.combinedData = e[r.CHAR_DATA_CHAR_INDEX], this.content = 2097152 | e[r.CHAR_DATA_WIDTH_INDEX] << 22) + } + getAsCharData() { + return [this.fg, this.getChars(), this.getWidth(), this.getCode()] + } + } + t.CellData = o + }, + 855: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.WHITESPACE_CELL_CODE = t.WHITESPACE_CELL_WIDTH = t.WHITESPACE_CELL_CHAR = t.NULL_CELL_CODE = t.NULL_CELL_WIDTH = t.NULL_CELL_CHAR = t.CHAR_DATA_CODE_INDEX = t.CHAR_DATA_WIDTH_INDEX = t.CHAR_DATA_CHAR_INDEX = t.CHAR_DATA_ATTR_INDEX = t.DEFAULT_EXT = t.DEFAULT_ATTR = t.DEFAULT_COLOR = void 0, t.DEFAULT_COLOR = 0, t.DEFAULT_ATTR = 256 | t.DEFAULT_COLOR << 9, t.DEFAULT_EXT = 0, t.CHAR_DATA_ATTR_INDEX = 0, t.CHAR_DATA_CHAR_INDEX = 1, t.CHAR_DATA_WIDTH_INDEX = 2, t.CHAR_DATA_CODE_INDEX = 3, t.NULL_CELL_CHAR = "", t.NULL_CELL_WIDTH = 1, t.NULL_CELL_CODE = 0, t.WHITESPACE_CELL_CHAR = " ", t.WHITESPACE_CELL_WIDTH = 1, t.WHITESPACE_CELL_CODE = 32 + }, + 133: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.Utf8ToUtf32 = t.StringToUtf32 = t.utf32ToString = t.stringFromCodePoint = void 0, t.stringFromCodePoint = function(e) { + return e > 65535 ? (e -= 65536, String.fromCharCode(55296 + (e >> 10)) + String.fromCharCode(e % 1024 + 56320)) : String.fromCharCode(e) + }, t.utf32ToString = function(e, t = 0, i = e.length) { + let s = ""; + for (let r = t; r < i; ++r) { + let t = e[r]; + t > 65535 ? (t -= 65536, s += String.fromCharCode(55296 + (t >> 10)) + String.fromCharCode(t % 1024 + 56320)) : s += String.fromCharCode(t) + } + return s + }, t.StringToUtf32 = class { + constructor() { + this._interim = 0 + } + clear() { + this._interim = 0 + } + decode(e, t) { + const i = e.length; + if (!i) return 0; + let s = 0, + r = 0; + if (this._interim) { + const i = e.charCodeAt(r++); + 56320 <= i && i <= 57343 ? t[s++] = 1024 * (this._interim - 55296) + i - 56320 + 65536 : (t[s++] = this._interim, t[s++] = i), this._interim = 0 + } + for (let n = r; n < i; ++n) { + const r = e.charCodeAt(n); + if (55296 <= r && r <= 56319) { + if (++n >= i) return this._interim = r, s; + const o = e.charCodeAt(n); + 56320 <= o && o <= 57343 ? t[s++] = 1024 * (r - 55296) + o - 56320 + 65536 : (t[s++] = r, t[s++] = o) + } else 65279 !== r && (t[s++] = r) + } + return s + } + }, t.Utf8ToUtf32 = class { + constructor() { + this.interim = new Uint8Array(3) + } + clear() { + this.interim.fill(0) + } + decode(e, t) { + const i = e.length; + if (!i) return 0; + let s, r, n, o, a = 0, + h = 0, + c = 0; + if (this.interim[0]) { + let s = !1, + r = this.interim[0]; + r &= 192 == (224 & r) ? 31 : 224 == (240 & r) ? 15 : 7; + let n, o = 0; + for (; + (n = 63 & this.interim[++o]) && o < 4;) r <<= 6, r |= n; + const h = 192 == (224 & this.interim[0]) ? 2 : 224 == (240 & this.interim[0]) ? 3 : 4, + l = h - o; + for (; c < l;) { + if (c >= i) return 0; + if (n = e[c++], 128 != (192 & n)) { + c--, s = !0; + break + } + this.interim[o++] = n, r <<= 6, r |= 63 & n + } + s || (2 === h ? r < 128 ? c-- : t[a++] = r : 3 === h ? r < 2048 || r >= 55296 && r <= 57343 || 65279 === r || (t[a++] = r) : r < 65536 || r > 1114111 || (t[a++] = r)), this.interim.fill(0) + } + const l = i - 4; + let d = c; + for (; d < i;) { + for (; !(!(d < l) || 128 & (s = e[d]) || 128 & (r = e[d + 1]) || 128 & (n = e[d + 2]) || 128 & (o = e[d + 3]));) t[a++] = s, t[a++] = r, t[a++] = n, t[a++] = o, d += 4; + if (s = e[d++], s < 128) t[a++] = s; + else if (192 == (224 & s)) { + if (d >= i) return this.interim[0] = s, a; + if (r = e[d++], 128 != (192 & r)) { + d--; + continue + } + if (h = (31 & s) << 6 | 63 & r, h < 128) { + d--; + continue + } + t[a++] = h + } else if (224 == (240 & s)) { + if (d >= i) return this.interim[0] = s, a; + if (r = e[d++], 128 != (192 & r)) { + d--; + continue + } + if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; + if (n = e[d++], 128 != (192 & n)) { + d--; + continue + } + if (h = (15 & s) << 12 | (63 & r) << 6 | 63 & n, h < 2048 || h >= 55296 && h <= 57343 || 65279 === h) continue; + t[a++] = h + } else if (240 == (248 & s)) { + if (d >= i) return this.interim[0] = s, a; + if (r = e[d++], 128 != (192 & r)) { + d--; + continue + } + if (d >= i) return this.interim[0] = s, this.interim[1] = r, a; + if (n = e[d++], 128 != (192 & n)) { + d--; + continue + } + if (d >= i) return this.interim[0] = s, this.interim[1] = r, this.interim[2] = n, a; + if (o = e[d++], 128 != (192 & o)) { + d--; + continue + } + if (h = (7 & s) << 18 | (63 & r) << 12 | (63 & n) << 6 | 63 & o, h < 65536 || h > 1114111) continue; + t[a++] = h + } + } + return a + } + } + }, + 776: function(e, t, i) { + var s = this && this.__decorate || function(e, t, i, s) { + var r, n = arguments.length, + o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s; + if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s); + else + for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o); + return n > 3 && o && Object.defineProperty(t, i, o), o + }, + r = this && this.__param || function(e, t) { + return function(i, s) { + t(i, s, e) + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.traceCall = t.setTraceLogger = t.LogService = void 0; + const n = i(859), + o = i(97), + a = { + trace: o.LogLevelEnum.TRACE, + debug: o.LogLevelEnum.DEBUG, + info: o.LogLevelEnum.INFO, + warn: o.LogLevelEnum.WARN, + error: o.LogLevelEnum.ERROR, + off: o.LogLevelEnum.OFF + }; + let h, c = t.LogService = class extends n.Disposable { + get logLevel() { + return this._logLevel + } + constructor(e) { + super(), this._optionsService = e, this._logLevel = o.LogLevelEnum.OFF, this._updateLogLevel(), this.register(this._optionsService.onSpecificOptionChange("logLevel", (() => this._updateLogLevel()))), h = this + } + _updateLogLevel() { + this._logLevel = a[this._optionsService.rawOptions.logLevel] + } + _evalLazyOptionalParams(e) { + for (let t = 0; t < e.length; t++) "function" == typeof e[t] && (e[t] = e[t]()) + } + _log(e, t, i) { + this._evalLazyOptionalParams(i), e.call(console, (this._optionsService.options.logger ? "" : "xterm.js: ") + t, ...i) + } + trace(e, ...t) { + this._logLevel <= o.LogLevelEnum.TRACE && this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger) ?? console.log, e, t) + } + debug(e, ...t) { + this._logLevel <= o.LogLevelEnum.DEBUG && this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger) ?? console.log, e, t) + } + info(e, ...t) { + this._logLevel <= o.LogLevelEnum.INFO && this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger) ?? console.info, e, t) + } + warn(e, ...t) { + this._logLevel <= o.LogLevelEnum.WARN && this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger) ?? console.warn, e, t) + } + error(e, ...t) { + this._logLevel <= o.LogLevelEnum.ERROR && this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger) ?? console.error, e, t) + } + }; + t.LogService = c = s([r(0, o.IOptionsService)], c), t.setTraceLogger = function(e) { + h = e + }, t.traceCall = function(e, t, i) { + if ("function" != typeof i.value) throw new Error("not supported"); + const s = i.value; + i.value = function(...e) { + if (h.logLevel !== o.LogLevelEnum.TRACE) return s.apply(this, e); + h.trace(`GlyphRenderer#${s.name}(${e.map((e => JSON.stringify(e))).join(", ")})`); + const t = s.apply(this, e); + return h.trace(`GlyphRenderer#${s.name} return`, t), t + } + } + }, + 726: (e, t) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.createDecorator = t.getServiceDependencies = t.serviceRegistry = void 0; + const i = "di$target", + s = "di$dependencies"; + t.serviceRegistry = new Map, t.getServiceDependencies = function(e) { + return e[s] || [] + }, t.createDecorator = function(e) { + if (t.serviceRegistry.has(e)) return t.serviceRegistry.get(e); + const r = function(e, t, n) { + if (3 !== arguments.length) throw new Error("@IServiceName-decorator can only be used to decorate a parameter"); + ! function(e, t, r) { + t[i] === t ? t[s].push({ + id: e, + index: r + }) : (t[s] = [{ + id: e, + index: r + }], t[i] = t) + }(r, e, n) + }; + return r.toString = () => e, t.serviceRegistry.set(e, r), r + } + }, + 97: (e, t, i) => { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.IDecorationService = t.IUnicodeService = t.IOscLinkService = t.IOptionsService = t.ILogService = t.LogLevelEnum = t.IInstantiationService = t.ICharsetService = t.ICoreService = t.ICoreMouseService = t.IBufferService = void 0; + const s = i(726); + var r; + t.IBufferService = (0, s.createDecorator)("BufferService"), t.ICoreMouseService = (0, s.createDecorator)("CoreMouseService"), t.ICoreService = (0, s.createDecorator)("CoreService"), t.ICharsetService = (0, s.createDecorator)("CharsetService"), t.IInstantiationService = (0, s.createDecorator)("InstantiationService"), + function(e) { + e[e.TRACE = 0] = "TRACE", e[e.DEBUG = 1] = "DEBUG", e[e.INFO = 2] = "INFO", e[e.WARN = 3] = "WARN", e[e.ERROR = 4] = "ERROR", e[e.OFF = 5] = "OFF" + }(r || (t.LogLevelEnum = r = {})), t.ILogService = (0, s.createDecorator)("LogService"), t.IOptionsService = (0, s.createDecorator)("OptionsService"), t.IOscLinkService = (0, s.createDecorator)("OscLinkService"), t.IUnicodeService = (0, s.createDecorator)("UnicodeService"), t.IDecorationService = (0, s.createDecorator)("DecorationService") + } + }, + t = {}; + + function i(s) { + var r = t[s]; + if (void 0 !== r) return r.exports; + var n = t[s] = { + exports: {} + }; + return e[s].call(n.exports, n, n.exports, i), n.exports + } + var s = {}; + return (() => { + var e = s; + Object.defineProperty(e, "__esModule", { + value: !0 + }), e.CanvasAddon = void 0; + const t = i(345), + r = i(859), + n = i(776), + o = i(949); + class a extends r.Disposable { + constructor() { + super(...arguments), this._onChangeTextureAtlas = this.register(new t.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new t.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event + } + get textureAtlas() { + return this._renderer?.textureAtlas + } + activate(e) { + const i = e._core; + if (!e.element) return void this.register(i.onWillOpen((() => this.activate(e)))); + this._terminal = e; + const s = i.coreService, + a = i.optionsService, + h = i.screenElement, + c = i.linkifier, + l = i, + d = l._bufferService, + _ = l._renderService, + u = l._characterJoinerService, + f = l._charSizeService, + v = l._coreBrowserService, + g = l._decorationService, + p = l._logService, + m = l._themeService; + (0, n.setTraceLogger)(p), this._renderer = new o.CanvasRenderer(e, h, c, d, f, a, u, s, v, g, m), this.register((0, t.forwardEvent)(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)), this.register((0, t.forwardEvent)(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)), _.setRenderer(this._renderer), _.handleResize(d.cols, d.rows), this.register((0, r.toDisposable)((() => { + _.setRenderer(this._terminal._core._createRenderer()), _.handleResize(e.cols, e.rows), this._renderer?.dispose(), this._renderer = void 0 + }))) + } + clearTextureAtlas() { + this._renderer?.clearTextureAtlas() + } + } + e.CanvasAddon = a + })(), s + })(), e.exports = t() + } + }, + t = {}; + + function i(s) { + var r = t[s]; + if (void 0 !== r) return r.exports; + var n = t[s] = { + id: s, + exports: {} + }; + return e[s].call(n.exports, n, n.exports, i), n.exports + } + i.n = e => { + var t = e && e.__esModule ? () => e.default : () => e; + return i.d(t, { + a: t + }), t + }, i.d = (e, t) => { + for (var s in t) i.o(t, s) && !i.o(e, s) && Object.defineProperty(e, s, { + enumerable: !0, + get: t[s] + }) + }, i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), i.nc = void 0, (() => { + "use strict"; + var e = i(72), + t = i.n(e), + s = i(825), + r = i.n(s), + n = i(659), + o = i.n(n), + a = i(56), + h = i.n(a), + c = i(540), + l = i.n(c), + d = i(113), + _ = i.n(d), + u = i(100), + f = {}; + f.styleTagTransform = _(), f.setAttributes = h(), f.insert = o().bind(null, "head"), f.domAPI = r(), f.insertStyleElement = l(), t()(u.A, f), u.A && u.A.locals && u.A.locals; + var v = i(856), + g = i(616), + p = i(180), + m = i(880), + C = i(544), + S = i(832), + b = i(372); + class w { + constructor(e, t) { + this.element = e, this.ping = t.ping, this.websocket_url = e.dataset.sessionWebsocketUrl, this.instance = void 0; + const i = e.dataset.fontSize; + this.terminal = new v.Terminal({ + allowProposedApi: !0, + fontSize: i, + scrollback: 0, + fontFamily: "'Roboto Mono', Monaco, 'Courier New', monospace" + }), this.fitAddon = new g.FitAddon, this.terminal.loadAddon(this.fitAddon), this.webglAddon = new p.WebglAddon, this.terminal.loadAddon(this.webglAddon), this.canvasAddon = new m.CanvasAddon, this.terminal.loadAddon(this.canvasAddon), this.unicode11Addon = new C.Unicode11Addon, this.terminal.loadAddon(this.unicode11Addon), this.weblinksAddon = new S.WebLinksAddon, this.terminal.loadAddon(this.weblinksAddon), this.terminal.unicode.activeVersion = "11"; + const s = new b.ClipboardAddon; + this.terminal.loadAddon(s), this.terminal.open(e), this.socket = null, this.bufferedBytes = 0, this.refreshBytes = 0, this.size = null, this.terminal.element.querySelector(".xterm-screen").addEventListener("blur", (e => { + this.onBlur() + }), !0), this.terminal.element.querySelector(".xterm-screen").addEventListener("focus", (e => { + this.onFocus() + }), !0), this.terminal.onResize((e => { + this.size = { + width: e.cols, + height: e.rows + }, this.sendSize() + })), this.terminal.onData((e => { + this.socket.send(JSON.stringify(["stdin", e])) + })), window.onresize = () => { + this.fit() + } + } + sendSize() { + if (this.size) { + const e = JSON.stringify(["resize", this.size]); + this.socket && this.socket.send(e) + } + } + sendPing() { + const e = (new Date).getTime(), + t = JSON.stringify(["ping", "" + e]); + this.socket && this.socket.send(t) + } + onPong(e) { + const t = (new Date).getTime() - parseInt(e); + console.log("ping=" + t + "ms") + } + onFocus() { + const e = JSON.stringify(["focus"]); + this.socket && this.socket.send(e) + } + onBlur() { + const e = JSON.stringify(["blur"]); + this.socket && this.socket.send(e) + } + fit() { + this.fitAddon.fit(this.element) + } + async connect() { + this.ping && await fetch(this.ping, { + method: "GET", + mode: "no-cors" + }), this.fit(); + const e = this.fitAddon.proposeDimensions(); + this.socket = new WebSocket(this.websocket_url + "?width=" + e.cols + "&height=" + e.rows), this.socket.binaryType = "arraybuffer", this.socket.addEventListener("open", (e => { + this.element.classList.add("-connected"), this.fit(), this.sendSize(), setTimeout((() => { + this.sendPing() + }), 3), document.querySelector("body").classList.add("-loaded") + })), this.socket.addEventListener("close", (e => { + console.log("CLOSED"), document.querySelector("body").classList.add("-closed") + })), this.socket.addEventListener("message", (e => { + if ("string" == typeof e.data) { + const t = JSON.parse(e.data), + i = t[0], + s = t[1]; + switch (i) { + case "log": + console.log("LOG", s); + break; + case "pong": + this.onPong(s); + break; + case "instance_id": + this.instance = s; + break; + case "open_url": + const e = s.url, + t = s.new_tab; + window.open(e, t ? "_blank" : "_self"); + break; + case "deliver_file_start": + const i = s, + r = this.instance ? `?instance=${this.instance}` : "", + n = `${window.location.origin}/download/${i}${r}`; + window.open(n, "_blank") + } + } else { + const t = new Uint8Array(e.data); + this.bufferedBytes += t.length, this.refreshBytes += t.length, this.terminal.write(t, (() => { + this.bufferedBytes -= t.length + })), t.length > 10 && document.querySelector("body").classList.add("-first-byte") + } + })) + } + } + window.onload = e => { + const t = document.querySelectorAll(".textual-terminal"), + i = new URLSearchParams(window.location.search), + s = i.get("delay"), + r = i.get("ping"); + s && document.querySelector("#start").classList.add("-delay"), t.forEach((e => { + const t = new w(e, { + ping: r + }); + t.fit(), s || t.connect() + })) + } + })() +})(); \ No newline at end of file