{"version":3,"file":"app-696e8daf-b1507ba6.js","mappings":"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","sources":["webpack://sshwifty-ui/./ui/commands/telnet.js","webpack://sshwifty-ui/./ui/control/telnet.js","webpack://sshwifty-ui/./ui/widgets/connector_field_builder.js","webpack://sshwifty-ui/ui/widgets/connector.vue","webpack://sshwifty-ui/./ui/widgets/connector.vue?bc9d","webpack://sshwifty-ui/./ui/widgets/connector.vue?2d46","webpack://sshwifty-ui/./ui/widgets/connector.vue","webpack://sshwifty-ui/ui/home.vue","webpack://sshwifty-ui/./ui/home_socketctl.js","webpack://sshwifty-ui/./ui/home_historyctl.js","webpack://sshwifty-ui/./ui/home.vue?7953","webpack://sshwifty-ui/./ui/home.vue?472a","webpack://sshwifty-ui/./ui/home.vue","webpack://sshwifty-ui/./ui/app.js","webpack://sshwifty-ui/./node_modules/base64-js/index.js","webpack://sshwifty-ui/./node_modules/buffer/index.js","webpack://sshwifty-ui/./node_modules/fontfaceobserver/fontfaceobserver.standalone.js","webpack://sshwifty-ui/./node_modules/iconv-lite/encodings/dbcs-data.js","webpack://sshwifty-ui/./node_modules/iconv-lite/encodings/index.js","webpack://sshwifty-ui/./node_modules/iconv-lite/encodings/internal.js","webpack://sshwifty-ui/./node_modules/iconv-lite/encodings/sbcs-data-generated.js","webpack://sshwifty-ui/./node_modules/iconv-lite/lib/index.js","webpack://sshwifty-ui/./node_modules/ieee754/index.js","webpack://sshwifty-ui/./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack://sshwifty-ui/./node_modules/@babel/runtime/regenerator/index.js"],"sourcesContent":["// Sshwifty - A Web SSH client\n//\n// Copyright (C) 2019-2023 Ni Rui <ranqus@gmail.com>\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n\nimport * as header from \"../stream/header.js\";\nimport * as reader from \"../stream/reader.js\";\nimport * as stream from \"../stream/stream.js\";\nimport * as address from \"./address.js\";\nimport * as command from \"./commands.js\";\nimport * as common from \"./common.js\";\nimport * as controls from \"./controls.js\";\nimport * as event from \"./events.js\";\nimport Exception from \"./exception.js\";\nimport * as history from \"./history.js\";\nimport * as presets from \"./presets.js\";\n\nconst COMMAND_ID = 0x00;\n\nconst SERVER_INITIAL_ERROR_BAD_ADDRESS = 0x01;\n\nconst SERVER_REMOTE_BAND = 0x00;\nconst SERVER_DIAL_FAILED = 0x01;\nconst SERVER_DIAL_CONNECTED = 0x02;\n\nconst DEFAULT_PORT = 23;\n\nconst HostMaxSearchResults = 3;\n\nclass Telnet {\n /**\n * constructor\n *\n * @param {stream.Sender} sd Stream sender\n * @param {object} config configuration\n * @param {object} callbacks Event callbacks\n *\n */\n constructor(sd, config, callbacks) {\n this.sender = sd;\n this.config = config;\n this.connected = false;\n this.events = new event.Events(\n [\n \"initialization.failed\",\n \"initialized\",\n \"connect.failed\",\n \"connect.succeed\",\n \"@inband\",\n \"close\",\n \"@completed\",\n ],\n callbacks\n );\n }\n\n /**\n * Send intial request\n *\n * @param {stream.InitialSender} initialSender Initial stream request sender\n *\n */\n run(initialSender) {\n let addr = new address.Address(\n this.config.host.type,\n this.config.host.address,\n this.config.host.port\n ),\n addrBuf = addr.buffer();\n\n let data = new Uint8Array(addrBuf.length);\n\n data.set(addrBuf, 0);\n\n initialSender.send(data);\n }\n\n /**\n * Receive the initial stream request\n *\n * @param {header.InitialStream} streamInitialHeader Server respond on the\n * initial stream request\n *\n */\n initialize(streamInitialHeader) {\n if (!streamInitialHeader.success()) {\n this.events.fire(\"initialization.failed\", streamInitialHeader);\n\n return;\n }\n\n this.events.fire(\"initialized\", streamInitialHeader);\n }\n\n /**\n * Tick the command\n *\n * @param {header.Stream} streamHeader Stream data header\n * @param {reader.Limited} rd Data reader\n *\n * @returns {any} The result of the ticking\n *\n * @throws {Exception} When the stream header type is unknown\n *\n */\n tick(streamHeader, rd) {\n switch (streamHeader.marker()) {\n case SERVER_DIAL_CONNECTED:\n if (!this.connected) {\n this.connected = true;\n\n return this.events.fire(\"connect.succeed\", rd, this);\n }\n break;\n\n case SERVER_DIAL_FAILED:\n if (!this.connected) {\n return this.events.fire(\"connect.failed\", rd);\n }\n break;\n\n case SERVER_REMOTE_BAND:\n if (this.connected) {\n return this.events.fire(\"inband\", rd);\n }\n break;\n }\n\n throw new Exception(\"Unknown stream header marker\");\n }\n\n /**\n * Send close signal to remote\n *\n */\n sendClose() {\n return this.sender.close();\n }\n\n /**\n * Send data to remote\n *\n * @param {Uint8Array} data\n *\n */\n sendData(data) {\n return this.sender.sendData(0x00, data);\n }\n\n /**\n * Close the command\n *\n */\n close() {\n this.sendClose();\n\n return this.events.fire(\"close\");\n }\n\n /**\n * Tear down the command completely\n *\n */\n completed() {\n return this.events.fire(\"completed\");\n }\n}\n\nconst initialFieldDef = {\n Host: {\n name: \"Host\",\n description:\n \"Looking for server to connect? Checkout \" +\n '<a href=\"http://www.telnet.org/htm/places.htm\" target=\"blank\">' +\n \"telnet.org</a> for public servers.\",\n type: \"text\",\n value: \"\",\n example: \"telnet.vaguly.com:23\",\n readonly: false,\n suggestions(input) {\n return [];\n },\n verify(d) {\n if (d.length <= 0) {\n throw new Error(\"Hostname must be specified\");\n }\n\n let addr = common.splitHostPort(d, DEFAULT_PORT);\n\n if (addr.addr.length <= 0) {\n throw new Error(\"Cannot be empty\");\n }\n\n if (addr.addr.length > address.MAX_ADDR_LEN) {\n throw new Error(\n \"Can no longer than \" + address.MAX_ADDR_LEN + \" bytes\"\n );\n }\n\n if (addr.port <= 0) {\n throw new Error(\"Port must be specified\");\n }\n\n return \"Look like \" + addr.type + \" address\";\n },\n },\n Encoding: {\n name: \"Encoding\",\n description: \"The character encoding of the server\",\n type: \"select\",\n value: \"utf-8\",\n example: common.charsetPresets.join(\",\"),\n readonly: false,\n suggestions(input) {\n return [];\n },\n verify(d) {\n for (let i in common.charsetPresets) {\n if (common.charsetPresets[i] !== d) {\n continue;\n }\n\n return \"\";\n }\n\n throw new Error('The character encoding \"' + d + '\" is not supported');\n },\n },\n};\n\nclass Wizard {\n /**\n * constructor\n *\n * @param {command.Info} info\n * @param {presets.Preset} preset\n * @param {object} session\n * @param {Array<string>} keptSessions\n * @param {streams.Streams} streams\n * @param {subscribe.Subscribe} subs\n * @param {controls.Controls} controls\n * @param {history.History} history\n *\n */\n constructor(\n info,\n preset,\n session,\n keptSessions,\n streams,\n subs,\n controls,\n history\n ) {\n this.info = info;\n this.preset = preset;\n this.hasStarted = false;\n this.streams = streams;\n this.session = session;\n this.keptSessions = keptSessions;\n this.step = subs;\n this.controls = controls.get(\"Telnet\");\n this.history = history;\n }\n\n run() {\n this.step.resolve(this.stepInitialPrompt());\n }\n\n started() {\n return this.hasStarted;\n }\n\n control() {\n return this.controls;\n }\n\n close() {\n this.step.resolve(\n this.stepErrorDone(\n \"Action cancelled\",\n \"Action has been cancelled without reach any success\"\n )\n );\n }\n\n stepErrorDone(title, message) {\n return command.done(false, null, title, message);\n }\n\n stepSuccessfulDone(data) {\n return command.done(\n true,\n data,\n \"Success!\",\n \"We have connected to the remote\"\n );\n }\n\n stepWaitForAcceptWait() {\n return command.wait(\n \"Requesting\",\n \"Waiting for the request to be accepted by the backend\"\n );\n }\n\n stepWaitForEstablishWait(host) {\n return command.wait(\n \"Connecting to \" + host,\n \"Establishing connection with the remote host, may take a while\"\n );\n }\n\n /**\n *\n * @param {stream.Sender} sender\n * @param {object} configInput\n * @param {object} sessionData\n *\n */\n buildCommand(sender, configInput, sessionData) {\n let self = this;\n\n let parsedConfig = {\n host: address.parseHostPort(configInput.host, DEFAULT_PORT),\n charset: configInput.charset,\n };\n\n // Copy the keptSessions from the record so it will not be overwritten here\n let keptSessions = self.keptSessions ? [].concat(...self.keptSessions) : [];\n\n return new Telnet(sender, parsedConfig, {\n \"initialization.failed\"(streamInitialHeader) {\n switch (streamInitialHeader.data()) {\n case SERVER_INITIAL_ERROR_BAD_ADDRESS:\n self.step.resolve(\n self.stepErrorDone(\"Request rejected\", \"Invalid address\")\n );\n\n return;\n }\n\n self.step.resolve(\n self.stepErrorDone(\n \"Request rejected\",\n \"Unknown error code: \" + streamInitialHeader.data()\n )\n );\n },\n initialized(streamInitialHeader) {\n self.step.resolve(self.stepWaitForEstablishWait(configInput.host));\n },\n \"connect.succeed\"(rd, commandHandler) {\n self.step.resolve(\n self.stepSuccessfulDone(\n new command.Result(\n configInput.host,\n self.info,\n self.controls.build({\n charset: parsedConfig.charset,\n send(data) {\n return commandHandler.sendData(data);\n },\n close() {\n return commandHandler.sendClose();\n },\n events: commandHandler.events,\n }),\n self.controls.ui()\n )\n )\n );\n\n self.history.save(\n self.info.name() + \":\" + configInput.host,\n configInput.host,\n new Date(),\n self.info,\n configInput,\n sessionData,\n keptSessions\n );\n },\n async \"connect.failed\"(rd) {\n let readed = await reader.readCompletely(rd),\n message = new TextDecoder(\"utf-8\").decode(readed.buffer);\n\n self.step.resolve(self.stepErrorDone(\"Connection failed\", message));\n },\n \"@inband\"(rd) {},\n close() {},\n \"@completed\"() {},\n });\n }\n\n stepInitialPrompt() {\n const self = this;\n\n return command.prompt(\n \"Telnet\",\n \"Teletype Network\",\n \"Connect\",\n (r) => {\n self.hasStarted = true;\n\n self.streams.request(COMMAND_ID, (sd) => {\n return self.buildCommand(\n sd,\n {\n host: r.host,\n charset: r.encoding,\n },\n self.session\n );\n });\n\n self.step.resolve(self.stepWaitForAcceptWait());\n },\n () => {},\n command.fieldsWithPreset(\n initialFieldDef,\n [\n {\n name: \"Host\",\n suggestions(input) {\n const hosts = self.history.search(\n \"Telnet\",\n \"host\",\n input,\n HostMaxSearchResults\n );\n\n let sugg = [];\n\n for (let i = 0; i < hosts.length; i++) {\n sugg.push({\n title: hosts[i].title,\n value: hosts[i].data.host,\n meta: {\n Encoding: hosts[i].data.charset,\n },\n });\n }\n\n return sugg;\n },\n },\n { name: \"Encoding\" },\n ],\n self.preset,\n (r) => {}\n )\n );\n }\n}\n\nclass Executor extends Wizard {\n /**\n * constructor\n *\n * @param {command.Info} info\n * @param {object} config\n * @param {object} session\n * @param {Array<string>} keptSessions\n * @param {streams.Streams} streams\n * @param {subscribe.Subscribe} subs\n * @param {controls.Controls} controls\n * @param {history.History} history\n *\n */\n constructor(\n info,\n config,\n session,\n keptSessions,\n streams,\n subs,\n controls,\n history\n ) {\n super(\n info,\n presets.emptyPreset(),\n session,\n keptSessions,\n streams,\n subs,\n controls,\n history\n );\n\n this.config = config;\n }\n\n stepInitialPrompt() {\n const self = this;\n\n self.hasStarted = true;\n\n self.streams.request(COMMAND_ID, (sd) => {\n return self.buildCommand(\n sd,\n {\n host: self.config.host,\n charset: self.config.charset ? self.config.charset : \"utf-8\",\n },\n self.session\n );\n });\n\n return self.stepWaitForAcceptWait();\n }\n}\n\nexport class Command {\n constructor() {}\n\n id() {\n return COMMAND_ID;\n }\n\n name() {\n return \"Telnet\";\n }\n\n description() {\n return \"Teletype Network\";\n }\n\n color() {\n return \"#6ac\";\n }\n\n wizard(\n info,\n preset,\n session,\n keptSessions,\n streams,\n subs,\n controls,\n history\n ) {\n return new Wizard(\n info,\n preset,\n session,\n keptSessions,\n streams,\n subs,\n controls,\n history\n );\n }\n\n execute(\n info,\n config,\n session,\n keptSessions,\n streams,\n subs,\n controls,\n history\n ) {\n return new Executor(\n info,\n config,\n session,\n keptSessions,\n streams,\n subs,\n controls,\n history\n );\n }\n\n launch(info, launcher, streams, subs, controls, history) {\n const d = launcher.split(\"|\", 2);\n\n if (d.length <= 0) {\n throw new Exception('Given launcher \"' + launcher + '\" was invalid');\n }\n\n try {\n initialFieldDef[\"Host\"].verify(d[0]);\n } catch (e) {\n throw new Exception(\n 'Given launcher \"' + launcher + '\" was invalid: ' + e\n );\n }\n\n let charset = \"utf-8\";\n\n if (d.length > 1) {\n // TODO: Remove this check after depreciation period.\n try {\n initialFieldDef[\"Encoding\"].verify(d[1]);\n\n charset = d[1];\n } catch (e) {\n throw new Exception(\n 'Given launcher \"' + launcher + '\" was invalid: ' + e\n );\n }\n }\n\n return this.execute(\n info,\n {\n host: d[0],\n charset: charset,\n },\n null,\n null,\n streams,\n subs,\n controls,\n history\n );\n }\n\n launcher(config) {\n return config.host + \"|\" + (config.charset ? config.charset : \"utf-8\");\n }\n\n represet(preset) {\n const host = preset.host();\n\n if (host.length > 0) {\n preset.insertMeta(\"Host\", host);\n }\n\n return preset;\n }\n}\n","// Sshwifty - A Web SSH client\n//\n// Copyright (C) 2019-2023 Ni Rui <ranqus@gmail.com>\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n\nimport * as iconv from \"iconv-lite\";\nimport * as color from \"../commands/color.js\";\nimport * as common from \"../commands/common.js\";\nimport Exception from \"../commands/exception.js\";\nimport * as reader from \"../stream/reader.js\";\nimport * as subscribe from \"../stream/subscribe.js\";\n\n// const maxReadBufSize = 1024;\n\nconst cmdSE = 240;\n// const cmdNOP = 241;\n// const cmdDataMark = 242;\n// const cmdBreak = 243;\n// const cmdInterrputProcess = 244;\n// const cmdAbortOutput = 245;\n// const cmdAreYouThere = 246;\n// const cmdEraseCharacter = 247;\n// const cmdEraseLine = 248;\nconst cmdGoAhead = 249;\nconst cmdSB = 250;\nconst cmdWill = 251;\nconst cmdWont = 252;\nconst cmdDo = 253;\nconst cmdDont = 254;\nconst cmdIAC = 255;\n\nconst optEcho = 1;\nconst optSuppressGoAhead = 3;\nconst optTerminalType = 24;\nconst optNAWS = 31;\n\nconst optTerminalTypeIs = 0;\nconst optTerminalTypeSend = 1;\n\nconst unknownTermTypeSendData = new Uint8Array([\n optTerminalTypeIs,\n 88,\n 84,\n 69,\n 82,\n 77,\n]);\n\n// Most of code of this class is directly from\n// https://github.com/ziutek/telnet/blob/master/conn.go#L122\n// Thank you!\nclass Parser {\n constructor(sender, flusher, callbacks) {\n this.sender = sender;\n this.flusher = flusher;\n this.callbacks = callbacks;\n this.reader = new reader.Multiple(() => {});\n this.options = {\n echoEnabled: false,\n suppressGoAhead: false,\n nawsAccpeted: false,\n };\n this.current = 0;\n }\n\n sendNego(cmd, option) {\n return this.sender(new Uint8Array([cmdIAC, cmd, option]));\n }\n\n sendDeny(cmd, o) {\n switch (cmd) {\n case cmdDo:\n return this.sendNego(cmdWont, o);\n\n case (cmdWill, cmdWont):\n return this.sendNego(cmdDont, o);\n }\n }\n\n sendWillSubNego(willCmd, data, option) {\n let b = new Uint8Array(6 + data.length + 2);\n\n b.set([cmdIAC, willCmd, option, cmdIAC, cmdSB, option], 0);\n b.set(data, 6);\n b.set([cmdIAC, cmdSE], data.length + 6);\n\n return this.sender(b);\n }\n\n sendSubNego(data, option) {\n let b = new Uint8Array(3 + data.length + 2);\n\n b.set([cmdIAC, cmdSB, option], 0);\n b.set(data, 3);\n b.set([cmdIAC, cmdSE], data.length + 3);\n\n return this.sender(b);\n }\n\n async handleTermTypeSubNego(rd) {\n let action = await reader.readOne(rd);\n\n if (action[0] !== optTerminalTypeSend) {\n return null;\n }\n\n let self = this;\n\n return () => {\n self.sendSubNego(unknownTermTypeSendData, optTerminalType);\n };\n }\n\n async handleSubNego(rd) {\n let endExec = null;\n\n for (;;) {\n let d = await reader.readOne(rd);\n\n switch (d[0]) {\n case optTerminalType:\n endExec = await this.handleTermTypeSubNego(rd);\n continue;\n\n case cmdIAC:\n break;\n\n default:\n continue;\n }\n\n let e = await reader.readOne(rd);\n\n if (e[0] !== cmdSE) {\n continue;\n }\n\n if (endExec !== null) {\n endExec();\n }\n\n return;\n }\n }\n\n handleOption(cmd, option, oldVal, newVal) {\n switch (cmd) {\n case cmdWill:\n if (!oldVal) {\n this.sendNego(cmdDo, option);\n }\n\n newVal(true, cmdWill);\n return;\n\n case cmdWont:\n if (oldVal) {\n this.sendNego(cmdDont, option);\n }\n\n newVal(false, cmdWont);\n return;\n\n case cmdDo:\n if (!oldVal) {\n this.sendNego(cmdWill, option);\n }\n\n newVal(true, cmdDo);\n return;\n\n case cmdDont:\n if (oldVal) {\n this.sendNego(cmdWont, option);\n }\n\n newVal(false, cmdDont);\n return;\n }\n }\n\n async handleCmd(rd) {\n let d = await reader.readOne(rd);\n\n switch (d[0]) {\n case cmdWill:\n case cmdWont:\n case cmdDo:\n case cmdDont:\n break;\n\n case cmdIAC:\n this.flusher(d);\n return;\n\n case cmdGoAhead:\n return;\n\n case cmdSB:\n await this.handleSubNego(rd);\n return;\n\n default:\n throw new Exception(\"Unknown command\");\n }\n\n let o = await reader.readOne(rd);\n\n switch (o[0]) {\n case optEcho:\n return this.handleOption(\n d[0],\n o[0],\n this.options.echoEnabled,\n (d, action) => {\n this.options.echoEnabled = d;\n\n switch (action) {\n case cmdWill:\n case cmdDont:\n this.callbacks.setEcho(false);\n break;\n\n case cmdWont:\n case cmdDo:\n this.callbacks.setEcho(true);\n break;\n }\n }\n );\n\n case optSuppressGoAhead:\n return this.handleOption(\n d[0],\n o[0],\n this.options.suppressGoAhead,\n (d, _action) => {\n this.options.suppressGoAhead = d;\n }\n );\n\n case optNAWS:\n // Window resize allowed?\n if (d[0] !== cmdDo) {\n this.sendDeny(d[0], o[0]);\n\n return;\n }\n\n {\n let dim = this.callbacks.getWindowDim(),\n dimData = new DataView(new ArrayBuffer(4));\n\n dimData.setUint16(0, dim.cols);\n dimData.setUint16(2, dim.rows);\n\n let dimBytes = new Uint8Array(dimData.buffer);\n\n if (this.options.nawsAccpeted) {\n this.sendSubNego(dimBytes, optNAWS);\n\n return;\n }\n\n this.options.nawsAccpeted = true;\n this.sendWillSubNego(cmdWill, dimBytes, optNAWS);\n }\n return;\n\n case optTerminalType:\n if (d[0] !== cmdDo) {\n this.sendDeny(d[0], o[0]);\n\n return;\n }\n\n this.sendNego(cmdWill, o[0]);\n return;\n }\n\n this.sendDeny(d[0], o[0]);\n }\n\n requestWindowResize() {\n this.options.nawsAccpeted = true;\n\n this.sendNego(cmdWill, optNAWS);\n }\n\n async run() {\n try {\n for (;;) {\n let d = await reader.readUntil(this.reader, cmdIAC);\n\n if (!d.found) {\n this.flusher(d.data);\n\n continue;\n }\n\n if (d.data.length > 1) {\n this.flusher(d.data.slice(0, d.data.length - 1));\n }\n\n await this.handleCmd(this.reader);\n }\n } catch (e) {\n // Do nothing\n }\n }\n\n feed(rd, cb) {\n this.reader.feed(rd, cb);\n }\n\n close() {\n this.reader.close();\n }\n}\n\nclass Control {\n constructor(data, color) {\n this.colorM = color;\n this.colors = this.colorM.get();\n\n this.charset = data.charset;\n\n if (this.charset === \"utf-8\") {\n let enc = new TextEncoder();\n\n this.charsetDecoder = (d) => {\n return d;\n };\n\n this.charsetEncoder = (dStr) => {\n return enc.encode(dStr);\n };\n } else {\n let dec = new TextDecoder(this.charset),\n enc = new TextEncoder();\n\n this.charsetDecoder = (d) => {\n return enc.encode(\n dec.decode(d, {\n stream: true,\n })\n );\n };\n\n this.charsetEncoder = (dStr) => {\n return iconv.encode(dStr, this.charset);\n };\n }\n\n this.sender = data.send;\n this.closer = data.close;\n this.closed = false;\n this.localEchoEnabled = true;\n this.subs = new subscribe.Subscribe();\n this.enable = false;\n this.windowDim = {\n cols: 65535,\n rows: 65535,\n };\n\n let self = this;\n\n this.parser = new Parser(\n this.sender,\n (d) => {\n self.subs.resolve(this.charsetDecoder(d));\n },\n {\n setEcho(newVal) {\n self.localEchoEnabled = newVal;\n },\n getWindowDim() {\n return self.windowDim;\n },\n }\n );\n\n let runWait = this.parser.run();\n\n data.events.place(\"inband\", (rd) => {\n return new Promise((resolve, _reject) => {\n self.parser.feed(rd, () => {\n resolve(true);\n });\n });\n });\n\n data.events.place(\"completed\", async () => {\n self.parser.close();\n self.closed = true;\n\n self.colorM.forget(self.colors.color);\n\n await runWait;\n\n self.subs.reject(\"Remote connection has been terminated\");\n });\n }\n\n echo() {\n return this.localEchoEnabled;\n }\n\n resize(dim) {\n if (this.closed) {\n return;\n }\n\n this.windowDim.cols = dim.cols;\n this.windowDim.rows = dim.rows;\n\n this.parser.requestWindowResize();\n }\n\n enabled() {\n this.enable = true;\n }\n\n disabled() {\n this.enable = false;\n }\n\n retap(_isOn) {}\n\n receive() {\n return this.subs.subscribe();\n }\n\n searchNextIAC(start, data) {\n for (let i = start; i < data.length; i++) {\n if (data[i] !== cmdIAC) {\n continue;\n }\n\n return i;\n }\n\n return -1;\n }\n\n sendSeg(enc) {\n let currentLen = 0;\n\n while (currentLen < enc.length) {\n const iacPos = this.searchNextIAC(currentLen, enc);\n\n if (iacPos < 0) {\n this.sender(enc.slice(currentLen, enc.length));\n\n return;\n }\n\n this.sender(enc.slice(currentLen, iacPos + 1));\n this.sender(enc.slice(iacPos, iacPos + 1));\n\n currentLen = iacPos + 1;\n }\n }\n\n send(data) {\n if (this.closed) {\n return;\n }\n\n this.sendSeg(this.charsetEncoder(data));\n }\n\n sendBinary(data) {\n if (this.closed) {\n return;\n }\n\n return this.sendSeg(common.strToBinary(data));\n }\n\n color() {\n return this.colors.dark;\n }\n\n activeColor() {\n return this.colors.color;\n }\n\n close() {\n if (this.closer === null) {\n return;\n }\n\n let cc = this.closer;\n this.closer = null;\n\n return cc();\n }\n}\n\nexport class Telnet {\n /**\n * constructor\n *\n * @param {color.Color} c\n */\n constructor(c) {\n this.color = c;\n }\n\n type() {\n return \"Telnet\";\n }\n\n ui() {\n return \"Console\";\n }\n\n build(data) {\n return new Control(data, this.color);\n }\n}\n","// Sshwifty - A Web SSH client\n//\n// Copyright (C) 2019-2023 Ni Rui <ranqus@gmail.com>\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n\nfunction getTabIndex(tabIndex, field) {\n if (field.readonly) {\n return 0;\n }\n\n switch (field.type) {\n case \"text\":\n case \"password\":\n case \"checkbox\":\n case \"textarea\":\n case \"textfile\":\n case \"select\":\n case \"radio\":\n return tabIndex;\n\n default:\n return 0;\n }\n}\n\nexport function build(tabIndex, i, field) {\n return {\n verified: false,\n modified: false,\n inputted: false,\n highlighted: false,\n error: \"\",\n message: \"\",\n field: field,\n autofocus: tabIndex === 1 && !field.readonly,\n tabIndex: getTabIndex(tabIndex, field),\n blockedSuggestionValue: \"\",\n blockingSuggestion: false,\n nextTabIndex() {\n let nextTabIndex = 0;\n\n if (this.field.readonly) {\n nextTabIndex = this.tabIndex;\n } else {\n switch (this.field.type) {\n case \"radio\":\n nextTabIndex = this.tabIndex + this.field.example.split(\",\").length;\n break;\n\n default:\n nextTabIndex = this.tabIndex + 1;\n }\n }\n\n if (tabIndex >= nextTabIndex) {\n return tabIndex;\n }\n\n return nextTabIndex;\n },\n nextSubTabIndex(subIndex) {\n if (this.field.readonly) {\n return 0;\n }\n\n return this.tabIndex + subIndex;\n },\n suggestion: {\n selected: -1,\n suggestions: [],\n orignalValue: \"\",\n orignalValueStored: false,\n holding: false,\n needsReset: false,\n reset() {\n this.selected = -1;\n this.suggestions = [];\n this.holding = false;\n this.needsReset = false;\n this.clearStored();\n\n return true;\n },\n softReset() {\n if (this.holding) {\n this.needsReset = true;\n\n return false;\n }\n\n return this.reset();\n },\n hold(toHold) {\n this.holding = toHold;\n\n if (this.holding || !this.needsReset) {\n return;\n }\n\n this.reset();\n },\n storeOrignal(val) {\n if (this.orignalValueStored) {\n return;\n }\n\n this.orignalValue = val;\n this.orignalValueStored = true;\n },\n loadStored(defaultValue) {\n return this.orignalValueStored ? this.orignalValue : defaultValue;\n },\n clearStored() {\n this.orignalValue = \"\";\n this.orignalValueStored = false;\n },\n select(index, fieldValue) {\n if (this.selected < 0) {\n this.storeOrignal(fieldValue);\n }\n\n if (index < -1 || index >= this.suggestions.length) {\n return;\n }\n\n this.selected = index;\n },\n cursorUp(fieldValue) {\n this.select(this.selected - 1, fieldValue);\n },\n cursorDown(fieldValue) {\n this.select(this.selected + 1, fieldValue);\n },\n cursorMove(toUp, fieldValue) {\n toUp ? this.cursorUp(fieldValue) : this.cursorDown(fieldValue);\n },\n reload(fieldValue, suggestions) {\n this.selected = -1;\n this.suggestions = [];\n\n this.clearStored();\n\n if (suggestions.length === 1 && suggestions[0].value === fieldValue) {\n return;\n }\n\n for (let v in suggestions) {\n this.suggestions.push({\n title: suggestions[v].title,\n value: suggestions[v].value,\n fields: suggestions[v].meta,\n });\n }\n },\n current(defaultValue) {\n if (this.selected < 0) {\n return {\n title: \"Input\",\n value: this.loadStored(defaultValue),\n fields: {},\n };\n }\n\n return this.suggestions[this.selected];\n },\n },\n disableSuggestionsForInput(val) {\n this.blockedSuggestionValue = val;\n this.blockingSuggestion = true;\n },\n enableInputSuggestionsOnAllInput() {\n this.blockedSuggestionValue = \"\";\n this.blockingSuggestion = false;\n },\n suggestionsPending() {\n return this.suggestion.suggestions.length > 0;\n },\n reloadSuggestions() {\n if (\n this.blockingSuggestion &&\n this.field.value === this.blockedSuggestionValue\n ) {\n return;\n }\n\n this.suggestion.reload(\n this.field.value,\n this.field.suggestions(this.field.value)\n );\n },\n resetSuggestions(force) {\n return force ? this.suggestion.reset() : this.suggestion.softReset();\n },\n holdSuggestions(toHold) {\n this.suggestion.hold(toHold);\n },\n moveSuggestionsCursor(toUp) {\n this.suggestion.cursorMove(toUp, this.field.value);\n },\n selectSuggestion(index) {\n this.suggestion.select(index, this.field.value);\n },\n curentSuggestion() {\n return this.suggestion.current(this.field.value);\n },\n selectedSuggestionIndex() {\n return this.suggestion.selected;\n },\n };\n}\n","<!--\n// Sshwifty - A Web SSH client\n//\n// Copyright (C) 2019-2023 Ni Rui <ranqus@gmail.com>\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n-->\n\n<template>\n <form\n id=\"connector\"\n class=\"form1\"\n action=\"javascript:;\"\n method=\"POST\"\n @submit=\"submitAndGetNext\"\n >\n <a\n id=\"connector-cancel\"\n href=\"javascript:;\"\n :class=\"{ disabled: working || cancelled }\"\n @click=\"cancel()\"\n >\n Cancel\n </a>\n\n <div\n v-if=\"!working\"\n id=\"connector-title\"\n :class=\"{ big: current.fields.length <= 0 }\"\n >\n <h2>{{ current.title || connector.name }}</h2>\n\n <p>{{ current.message || connector.description }}</p>\n </div>\n\n <div v-if=\"working\" id=\"connector-proccess\">\n <img id=\"connector-proccess-indicater\" src=\"./connecting.svg\" />\n\n <div id=\"connector-proccess-message\" :class=\"{ alert: current.alert }\">\n <h2>\n <span>{{ current.title || connector.name }}</span>\n </h2>\n\n <p>{{ current.message || connector.description }}</p>\n </div>\n </div>\n\n <fieldset id=\"connector-fields\">\n <div\n v-for=\"(field, key) in current.fields\"\n :key=\"key\"\n class=\"field\"\n :class=\"{ error: field.error.length > 0, highlight: field.highlighted }\"\n >\n {{ field.field.name }}\n\n <input\n v-if=\"field.field.type === 'text'\"\n v-model=\"field.field.value\"\n v-focus=\"field.autofocus\"\n type=\"text\"\n autocomplete=\"off\"\n :name=\"field.field.name\"\n :placeholder=\"field.field.example\"\n :autofocus=\"field.autofocus\"\n :tabindex=\"field.tabIndex\"\n :disabled=\"field.field.readonly\"\n @keydown=\"triggerSuggestions($event, key, field)\"\n @focus=\"focus(key, field, true)\"\n @blur=\"focus(key, field, false)\"\n @input=\"changed(key, field, false)\"\n @change=\"changed(key, field, true)\"\n />\n\n <input\n v-if=\"field.field.type === 'password'\"\n v-model=\"field.field.value\"\n v-focus=\"field.autofocus\"\n type=\"password\"\n autocomplete=\"off\"\n :name=\"field.field.name\"\n :placeholder=\"field.field.example\"\n :autofocus=\"field.autofocus\"\n :tabindex=\"field.tabIndex\"\n :disabled=\"field.field.readonly\"\n @focus=\"focus(key, field, true)\"\n @blur=\"focus(key, field, false)\"\n @input=\"changed(key, field, false)\"\n @change=\"changed(key, field, true)\"\n />\n\n <input\n v-if=\"field.field.type === 'checkbox'\"\n v-model=\"field.field.value\"\n v-focus=\"field.autofocus\"\n type=\"checkbox\"\n autocomplete=\"off\"\n :name=\"field.field.name\"\n :autofocus=\"field.autofocus\"\n :tabindex=\"field.tabIndex\"\n :disabled=\"field.field.readonly\"\n @focus=\"focus(key, field, true)\"\n @blur=\"focus(key, field, false)\"\n @input=\"changed(key, field, false)\"\n @change=\"changed(key, field, true)\"\n />\n\n <textarea\n v-if=\"field.field.type === 'textarea'\"\n v-model=\"field.field.value\"\n v-focus=\"field.autofocus\"\n autocomplete=\"off\"\n :placeholder=\"field.field.example\"\n :name=\"field.field.name\"\n :autofocus=\"field.autofocus\"\n :tabindex=\"field.tabIndex\"\n :disabled=\"field.field.readonly\"\n @keyup=\"expandTextarea($event)\"\n @keydown=\"\n triggerSuggestions($event, key, field) || expandTextarea($event)\n \"\n @focus=\"focus(key, field, true)\"\n @blur=\"focus(key, field, false)\"\n @input=\"changed(key, field, false)\"\n @change=\"changed(key, field, true)\"\n ></textarea>\n\n <input\n v-if=\"field.field.type === 'textfile'\"\n v-focus=\"field.autofocus\"\n type=\"file\"\n autocomplete=\"off\"\n :placeholder=\"field.field.example\"\n :name=\"field.field.name + '-file'\"\n :autofocus=\"field.autofocus\"\n :tabindex=\"field.tabIndex\"\n :disabled=\"field.field.readonly\"\n @focus=\"focus(key, field, true)\"\n @blur=\"focus(key, field, false)\"\n @change=\"importFile($event.target, field)\"\n />\n <input\n v-if=\"field.field.type === 'textfile'\"\n v-model=\"field.field.value\"\n type=\"text\"\n autocomplete=\"off\"\n :name=\"field.field.name\"\n :placeholder=\"field.field.example\"\n style=\"display: none\"\n @input=\"changed(key, field, false)\"\n @change=\"changed(key, field, true)\"\n />\n\n <select\n v-if=\"field.field.type === 'select'\"\n v-model=\"field.field.value\"\n v-focus=\"field.autofocus\"\n autocomplete=\"off\"\n :name=\"field.field.name\"\n :autofocus=\"field.autofocus\"\n :value=\"field.field.value\"\n :tabindex=\"field.tabIndex\"\n :disabled=\"field.field.readonly\"\n @focus=\"focus(key, field, true)\"\n @blur=\"focus(key, field, false)\"\n @input=\"changed(key, field, false)\"\n @change=\"changed(key, field, true)\"\n >\n <option\n v-for=\"(option, oKey) in field.field.example.split(',')\"\n :key=\"oKey\"\n :value=\"option\"\n :selected=\"field.field.value === option\"\n :aria-selected=\"field.field.value === option\"\n >\n {{ option }}\n </option>\n </select>\n\n <div v-if=\"field.field.type === 'textdata'\" class=\"textinfo\">\n <div class=\"info\">{{ field.field.value }}</div>\n </div>\n\n <div v-if=\"field.field.type === 'radio'\" class=\"items\">\n <label\n v-for=\"(option, oKey) in field.field.example.split(',')\"\n :key=\"oKey\"\n class=\"field horizontal item\"\n >\n <input\n v-model=\"field.field.value\"\n v-focus=\"field.autofocus && oKey === 0\"\n type=\"radio\"\n autocomplete=\"off\"\n :name=\"field.field.name\"\n :autofocus=\"field.autofocus && oKey === 0\"\n :value=\"option\"\n :checked=\"field.field.value === option\"\n :aria-checked=\"field.field.value === option\"\n :tabindex=\"field.nextSubTabIndex(oKey)\"\n :disabled=\"field.field.readonly\"\n @focus=\"focus(key, field, true)\"\n @blur=\"focus(key, field, false)\"\n @input=\"changed(key, field, false)\"\n @change=\"changed(key, field, true)\"\n />\n {{ option }}\n </label>\n </div>\n\n <ul\n v-if=\"field.suggestion.suggestions.length > 0\"\n class=\"input-suggestions lst-nostyle\"\n @mouseenter=\"field.holdSuggestions(true)\"\n @mouseleave=\"field.holdSuggestions(false)\"\n >\n <li\n v-for=\"(suggestion, sKey) in field.suggestion.suggestions\"\n :key=\"sKey\"\n :class=\"{ current: sKey === field.suggestion.selected }\"\n @click=\"clickInputSuggestion(key, field, sKey)\"\n >\n <div class=\"sugt-title\">\n {{ suggestion.title }}\n </div>\n <div class=\"sugt-value\">\n {{ suggestion.value }}\n </div>\n </li>\n </ul>\n\n <div v-if=\"field.error.length > 0\" class=\"error\">{{ field.error }}</div>\n <div v-else-if=\"field.message.length > 0\" class=\"message\">\n {{ field.message }}\n </div>\n <div\n v-else-if=\"field.field.description.length > 0\"\n class=\"message\"\n v-html=\"field.field.description\"\n ></div>\n </div>\n\n <div class=\"field\">\n <button\n v-if=\"current.submittable\"\n v-focus=\"submitterTabIndex === 1\"\n type=\"submit\"\n :disabled=\"current.submitting || disabled\"\n :tabindex=\"submitterTabIndex\"\n :autofocus=\"submitterTabIndex === 1\"\n @click=\"submitAndGetNext\"\n >\n {{ current.actionText }}\n </button>\n <button\n v-if=\"current.cancellable\"\n :disabled=\"current.submitting || disabled\"\n :tabindex=\"submitterTabIndex + 1\"\n class=\"secondary\"\n @click=\"cancelAndGetNext\"\n >\n Cancel\n </button>\n </div>\n </fieldset>\n\n <div\n v-if=\"preloaderIDName.length > 0\"\n style=\"\n width: 1px;\n height: 1px;\n margin: 10px;\n position: absolute;\n top: 0;\n bottom: 0;\n overflow: hidden;\n \"\n >\n <div :id=\"preloaderIDName\">\n {{ current.title || connector.name }} wizard\n </div>\n </div>\n </form>\n</template>\n\n<script>\nimport \"./connector.css\";\nimport * as command from \"../commands/commands.js\";\nimport * as fieldBuilder from \"./connector_field_builder.js\";\n\nconst preloaderIDPrefix = \"connector-resource-preload-control-\";\nconst hightlightClearTimeout = 1000;\n\nfunction buildEmptyCurrent() {\n return {\n data: null,\n alert: false,\n clearHightlightTimeout: null,\n title: \"\",\n message: \"\",\n fields: [],\n actionText: \"Continue\",\n cancellable: false,\n submittable: false,\n submitting: false,\n };\n}\n\nexport default {\n directives: {\n focus: {\n inserted(el, binding) {\n if (!binding.value) {\n return;\n }\n\n el.focus();\n },\n },\n },\n props: {\n connector: {\n type: Object,\n default: () => null,\n },\n },\n data() {\n return {\n currentConnector: null,\n currentConnectorCloseWait: null,\n current: buildEmptyCurrent(),\n preloaderIDName: \"\",\n fieldValueBackup: [],\n submitterTabIndex: 1,\n working: false,\n disabled: false,\n cancelled: false,\n };\n },\n watch: {\n async connector(oldV, newV) {\n if (this.currentConnector !== null) {\n await this.closeWizard();\n }\n\n this.cancelled = false;\n this.currentConnector = newV;\n this.runWizard();\n },\n },\n async mounted() {\n await this.closeWizard();\n this.runWizard();\n this.cancelled = false;\n },\n async beforeDestroy() {\n try {\n await this.closeWizard();\n } catch (e) {\n process.env.NODE_ENV === \"development\" && console.trace(e);\n }\n },\n methods: {\n async sendCancel() {\n await this.closeWizard();\n\n this.$emit(\"cancel\", true);\n },\n cancel() {\n if (this.working) {\n return;\n }\n\n if (this.cancelled) {\n return;\n }\n\n this.cancelled = true;\n\n this.sendCancel();\n },\n buildCurrent(next) {\n try {\n this.current = buildEmptyCurrent();\n\n this.working = this.getConnector().wizard.started();\n\n this.current.type = next.type();\n this.current.data = next.data();\n\n let fields = null,\n tabIndex = 1;\n\n switch (this.current.type) {\n case command.NEXT_PROMPT:\n fields = this.current.data.inputs();\n\n for (let i = 0; i < fields.length; i++) {\n const f = fieldBuilder.build(tabIndex, i, fields[i]);\n if (f.field.readonly) {\n this.verify(i, f, true)\n }\n this.current.fields.push(f);\n tabIndex = f.nextTabIndex();\n }\n\n this.submitterTabIndex = tabIndex > 0 ? tabIndex : 1;\n this.current.actionText = this.current.data.actionText();\n this.current.submittable = true;\n this.current.alert = true;\n this.current.cancellable = true;\n\n // Fallthrough\n\n case command.NEXT_WAIT:\n this.current.title = this.current.data.title();\n this.current.message = this.current.data.message();\n break;\n\n case command.NEXT_DONE:\n this.working = false;\n this.disabled = true;\n\n if (!this.current.data.success()) {\n this.current.title = this.current.data.error();\n this.current.message = this.current.data.message();\n } else {\n this.$emit(\"done\", this.current.data.data());\n }\n break;\n\n default:\n throw new Error(\"Unknown command type\");\n }\n\n if (!this.working) {\n this.current.cancellable = false;\n }\n\n return next;\n } catch (e) {\n this.current.title = \"Encountered an error\";\n this.current.message = e;\n\n this.working = false;\n this.disabled = true;\n\n throw e;\n }\n },\n getConnector() {\n if (this.currentConnector === null) {\n this.currentConnector = this.connector;\n }\n\n return this.currentConnector;\n },\n async closeWizard() {\n if (this.currentConnectorCloseWait === null) {\n return;\n }\n\n let waiter = this.currentConnectorCloseWait;\n\n this.currentConnectorCloseWait = null;\n\n this.getConnector().wizard.close();\n\n try {\n await waiter;\n } catch (e) {\n // Do nothing\n }\n },\n runWizard() {\n if (this.currentConnectorCloseWait !== null) {\n throw new Error(\"Cannot run wizard multiple times\");\n }\n\n this.preloaderIDName =\n preloaderIDPrefix +\n this.getConnector().wizard.control().ui().toLowerCase();\n\n this.currentConnectorCloseWait = (async () => {\n while (!this.disabled) {\n this.clearFieldValueBackup();\n\n let next = this.buildCurrent(await this.getConnector().wizard.next());\n\n switch (next.type()) {\n case command.NEXT_PROMPT:\n case command.NEXT_WAIT:\n continue;\n case command.NEXT_DONE:\n return;\n\n default:\n throw new Error(\"Unknown command type\");\n }\n }\n })();\n },\n getFieldValues() {\n let mod = {};\n\n for (let i = 0; i < this.current.fields.length; i++) {\n mod[this.current.fields[i].field.name] = this.current.fields[\n i\n ].field.value;\n }\n\n return mod;\n },\n createFieldValueBackup() {\n let backup = [];\n\n for (let i = 0; i < this.current.fields.length; i++) {\n backup.push(this.current.fields[i].field.value);\n }\n\n this.fieldValueBackup = backup;\n },\n clearFieldValueBackup() {\n this.fieldValueBackup = [];\n },\n clearFieldHighlights() {\n for (let i = 0; i < this.current.fields.length; i++) {\n this.current.fields[i].highlighted = false;\n }\n },\n delayedClearFieldHighlights(timeout) {\n const self = this;\n\n if (self.clearHightlightTimeout === null) {\n clearTimeout(self.clearHightlightTimeout);\n self.clearHightlightTimeout = null;\n }\n\n self.clearHightlightTimeout = setTimeout(() => {\n self.clearHightlightTimeout = null;\n self.clearFieldHighlights();\n }, timeout);\n },\n restoreFieldValuesFromBackup(except) {\n for (let i = 0; i < this.fieldValueBackup.length; i++) {\n if (except === i) {\n continue;\n }\n\n this.current.fields[i].field.value = this.fieldValueBackup[i];\n }\n },\n expandTextarea(event) {\n // WARNING: This function may cause rendering stutter due to\n // combined problem of CSS \"Position\" and Vue render.\n // Use of \"TextArea\" element is thus not recommended.\n event.target.style.height = \"\";\n event.target.style.height = event.target.scrollHeight + \"px\";\n },\n importFile(el, field) {\n if (el.files.length <= 0) {\n return;\n }\n\n el.disabled = \"disabled\";\n\n let r = new FileReader();\n\n r.onload = () => {\n let s = el.nextSibling;\n\n for (;;) {\n if (s.tagName !== \"INPUT\") {\n s = s.nextSibling;\n\n continue;\n }\n\n field.field.value = r.result;\n s.dispatchEvent(new Event(\"change\"));\n\n break;\n }\n\n el.disabled = \"\";\n };\n\n r.readAsText(el.files[0], \"utf-8\");\n },\n verify(key, field, force) {\n try {\n field.message = \"\" + field.field.verify(field.field.value);\n field.modified = true;\n field.verified = true;\n field.error = \"\";\n } catch (e) {\n field.error = \"\";\n field.message = \"\";\n field.verified = false;\n\n if (field.modified || force) {\n field.error = \"\" + e;\n }\n }\n\n field.highlighted = false;\n\n if (\n !field.verified &&\n (field.modified || force) &&\n field.error.length <= 0\n ) {\n field.error = \"Invalid\";\n }\n\n return field.verified;\n },\n verifyAll() {\n let verified = true;\n\n for (let i = 0; i < this.current.fields.length; i++) {\n if (this.verify(i, this.current.fields[i], true)) {\n continue;\n }\n\n verified = false;\n }\n\n return verified;\n },\n focus(key, field, focused) {\n field.highlighted = false;\n\n if (!focused) {\n // Don't reset a holding field\n if (!field.inputted) {\n field.resetSuggestions(false);\n } else if (field.resetSuggestions(false)) {\n this.clickInputSuggestion(\n key,\n field,\n field.selectedSuggestionIndex()\n );\n }\n\n return;\n }\n\n this.createFieldValueBackup();\n field.reloadSuggestions();\n },\n applySuggestion(key, field, suggestion) {\n this.restoreFieldValuesFromBackup(-1);\n\n field.field.value = suggestion.value;\n\n for (let i = 0; i < this.current.fields.length; i++) {\n this.current.fields[i].highlighted = false;\n\n if (\n i === key ||\n this.current.fields[i].inputted ||\n this.current.fields[i].field.readonly\n ) {\n continue;\n }\n\n if (\n typeof suggestion.fields[this.current.fields[i].field.name] ===\n \"undefined\"\n ) {\n continue;\n }\n\n this.current.fields[i].field.value =\n suggestion.fields[this.current.fields[i].field.name];\n\n if (!this.verify(i, this.current.fields[i], true)) {\n continue;\n }\n\n this.current.fields[i].highlighted = true;\n }\n },\n applySuggestionAndVerify(key, field, force, suggestion) {\n field.inputted = true;\n\n this.applySuggestion(key, field, suggestion);\n\n return this.verify(key, field, force);\n },\n changed(key, field, force) {\n this.createFieldValueBackup();\n\n field.highlighted = false;\n field.inputted = true;\n field.enableInputSuggestionsOnAllInput();\n field.reloadSuggestions();\n\n this.verify(key, field, force);\n },\n triggerSuggestions(event, key, field) {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n field.moveSuggestionsCursor(true);\n\n this.applySuggestionAndVerify(\n key,\n field,\n true,\n field.curentSuggestion()\n );\n break;\n\n case \"ArrowDown\":\n event.preventDefault();\n field.moveSuggestionsCursor(false);\n\n this.applySuggestionAndVerify(\n key,\n field,\n true,\n field.curentSuggestion()\n );\n break;\n\n case \"Escape\":\n if (!field.suggestionsPending()) {\n return;\n }\n\n event.preventDefault();\n\n this.restoreFieldValuesFromBackup(key);\n this.clearFieldValueBackup();\n this.clearFieldHighlights();\n this.verify(key, field, true);\n\n field.disableSuggestionsForInput(field.field.value);\n field.resetSuggestions(true);\n break;\n\n case \"Enter\":\n if (!field.suggestionsPending()) {\n return;\n }\n\n event.preventDefault();\n\n this.clickInputSuggestion(\n key,\n field,\n field.selectedSuggestionIndex()\n );\n break;\n }\n },\n clickInputSuggestion(key, field, index) {\n const self = this;\n\n field.selectSuggestion(index);\n\n if (\n self.applySuggestionAndVerify(\n key,\n field,\n true,\n field.curentSuggestion()\n )\n ) {\n field.disableSuggestionsForInput(field.field.value);\n } else {\n field.enableInputSuggestionsOnAllInput();\n }\n\n field.resetSuggestions(true);\n\n self.clearFieldValueBackup();\n self.delayedClearFieldHighlights(hightlightClearTimeout);\n },\n async submitAndGetNext() {\n if (this.current.submitting || this.disabled) {\n return;\n }\n\n if (this.current.data === null || !this.current.submittable) {\n return;\n }\n\n if (!this.verifyAll()) {\n return;\n }\n\n this.current.submitting = true;\n\n try {\n await this.current.data.submit(this.getFieldValues());\n } catch (e) {\n this.current.submitting = false;\n\n alert(\"Submission has failed: \" + e);\n\n process.env.NODE_ENV === \"development\" && console.trace(e);\n\n return;\n }\n },\n async cancelAndGetNext() {\n if (this.current.submitting || this.disabled) {\n return;\n }\n\n if (this.current.data === null || !this.current.cancellable) {\n return;\n }\n\n this.current.submitting = true;\n\n await this.current.data.cancel();\n },\n },\n};\n</script>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./connector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./connector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./connector.vue?vue&type=template&id=56c260ee&\"\nimport script from \"./connector.vue?vue&type=script&lang=js&\"\nexport * from \"./connector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{staticClass:\"form1\",attrs:{\"id\":\"connector\",\"action\":\"javascript:;\",\"method\":\"POST\"},on:{\"submit\":_vm.submitAndGetNext}},[_c('a',{class:{ disabled: _vm.working || _vm.cancelled },attrs:{\"id\":\"connector-cancel\",\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(\"\\n Cancel\\n \")]),_vm._v(\" \"),(!_vm.working)?_c('div',{class:{ big: _vm.current.fields.length <= 0 },attrs:{\"id\":\"connector-title\"}},[_c('h2',[_vm._v(_vm._s(_vm.current.title || _vm.connector.name))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.current.message || _vm.connector.description))])]):_vm._e(),_vm._v(\" \"),(_vm.working)?_c('div',{attrs:{\"id\":\"connector-proccess\"}},[_c('img',{attrs:{\"id\":\"connector-proccess-indicater\",\"src\":require(\"./connecting.svg\")}}),_vm._v(\" \"),_c('div',{class:{ alert: _vm.current.alert },attrs:{\"id\":\"connector-proccess-message\"}},[_c('h2',[_c('span',[_vm._v(_vm._s(_vm.current.title || _vm.connector.name))])]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.current.message || _vm.connector.description))])])]):_vm._e(),_vm._v(\" \"),_c('fieldset',{attrs:{\"id\":\"connector-fields\"}},[_vm._l((_vm.current.fields),function(field,key){return _c('div',{key:key,staticClass:\"field\",class:{ error: field.error.length > 0, highlight: field.highlighted }},[_vm._v(\"\\n \"+_vm._s(field.field.name)+\"\\n\\n \"),(field.field.type === 'text')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(field.field.value),expression:\"field.field.value\"},{name:\"focus\",rawName:\"v-focus\",value:(field.autofocus),expression:\"field.autofocus\"}],attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"name\":field.field.name,\"placeholder\":field.field.example,\"autofocus\":field.autofocus,\"tabindex\":field.tabIndex,\"disabled\":field.field.readonly},domProps:{\"value\":(field.field.value)},on:{\"keydown\":function($event){return _vm.triggerSuggestions($event, key, field)},\"focus\":function($event){return _vm.focus(key, field, true)},\"blur\":function($event){return _vm.focus(key, field, false)},\"input\":[function($event){if($event.target.composing)return;_vm.$set(field.field, \"value\", $event.target.value)},function($event){return _vm.changed(key, field, false)}],\"change\":function($event){return _vm.changed(key, field, true)}}}):_vm._e(),_vm._v(\" \"),(field.field.type === 'password')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(field.field.value),expression:\"field.field.value\"},{name:\"focus\",rawName:\"v-focus\",value:(field.autofocus),expression:\"field.autofocus\"}],attrs:{\"type\":\"password\",\"autocomplete\":\"off\",\"name\":field.field.name,\"placeholder\":field.field.example,\"autofocus\":field.autofocus,\"tabindex\":field.tabIndex,\"disabled\":field.field.readonly},domProps:{\"value\":(field.field.value)},on:{\"focus\":function($event){return _vm.focus(key, field, true)},\"blur\":function($event){return _vm.focus(key, field, false)},\"input\":[function($event){if($event.target.composing)return;_vm.$set(field.field, \"value\", $event.target.value)},function($event){return _vm.changed(key, field, false)}],\"change\":function($event){return _vm.changed(key, field, true)}}}):_vm._e(),_vm._v(\" \"),(field.field.type === 'checkbox')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(field.field.value),expression:\"field.field.value\"},{name:\"focus\",rawName:\"v-focus\",value:(field.autofocus),expression:\"field.autofocus\"}],attrs:{\"type\":\"checkbox\",\"autocomplete\":\"off\",\"name\":field.field.name,\"autofocus\":field.autofocus,\"tabindex\":field.tabIndex,\"disabled\":field.field.readonly},domProps:{\"checked\":Array.isArray(field.field.value)?_vm._i(field.field.value,null)>-1:(field.field.value)},on:{\"focus\":function($event){return _vm.focus(key, field, true)},\"blur\":function($event){return _vm.focus(key, field, false)},\"input\":function($event){return _vm.changed(key, field, false)},\"change\":[function($event){var $$a=field.field.value,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(field.field, \"value\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(field.field, \"value\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(field.field, \"value\", $$c)}},function($event){return _vm.changed(key, field, true)}]}}):_vm._e(),_vm._v(\" \"),(field.field.type === 'textarea')?_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(field.field.value),expression:\"field.field.value\"},{name:\"focus\",rawName:\"v-focus\",value:(field.autofocus),expression:\"field.autofocus\"}],attrs:{\"autocomplete\":\"off\",\"placeholder\":field.field.example,\"name\":field.field.name,\"autofocus\":field.autofocus,\"tabindex\":field.tabIndex,\"disabled\":field.field.readonly},domProps:{\"value\":(field.field.value)},on:{\"keyup\":function($event){return _vm.expandTextarea($event)},\"keydown\":function($event){_vm.triggerSuggestions($event, key, field) || _vm.expandTextarea($event)},\"focus\":function($event){return _vm.focus(key, field, true)},\"blur\":function($event){return _vm.focus(key, field, false)},\"input\":[function($event){if($event.target.composing)return;_vm.$set(field.field, \"value\", $event.target.value)},function($event){return _vm.changed(key, field, false)}],\"change\":function($event){return _vm.changed(key, field, true)}}}):_vm._e(),_vm._v(\" \"),(field.field.type === 'textfile')?_c('input',{directives:[{name:\"focus\",rawName:\"v-focus\",value:(field.autofocus),expression:\"field.autofocus\"}],attrs:{\"type\":\"file\",\"autocomplete\":\"off\",\"placeholder\":field.field.example,\"name\":field.field.name + '-file',\"autofocus\":field.autofocus,\"tabindex\":field.tabIndex,\"disabled\":field.field.readonly},on:{\"focus\":function($event){return _vm.focus(key, field, true)},\"blur\":function($event){return _vm.focus(key, field, false)},\"change\":function($event){return _vm.importFile($event.target, field)}}}):_vm._e(),_vm._v(\" \"),(field.field.type === 'textfile')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(field.field.value),expression:\"field.field.value\"}],staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"name\":field.field.name,\"placeholder\":field.field.example},domProps:{\"value\":(field.field.value)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(field.field, \"value\", $event.target.value)},function($event){return _vm.changed(key, field, false)}],\"change\":function($event){return _vm.changed(key, field, true)}}}):_vm._e(),_vm._v(\" \"),(field.field.type === 'select')?_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(field.field.value),expression:\"field.field.value\"},{name:\"focus\",rawName:\"v-focus\",value:(field.autofocus),expression:\"field.autofocus\"}],attrs:{\"autocomplete\":\"off\",\"name\":field.field.name,\"autofocus\":field.autofocus,\"tabindex\":field.tabIndex,\"disabled\":field.field.readonly},domProps:{\"value\":field.field.value},on:{\"focus\":function($event){return _vm.focus(key, field, true)},\"blur\":function($event){return _vm.focus(key, field, false)},\"input\":function($event){return _vm.changed(key, field, false)},\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(field.field, \"value\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.changed(key, field, true)}]}},_vm._l((field.field.example.split(',')),function(option,oKey){return _c('option',{key:oKey,attrs:{\"aria-selected\":field.field.value === option},domProps:{\"value\":option,\"selected\":field.field.value === option}},[_vm._v(\"\\n \"+_vm._s(option)+\"\\n \")])}),0):_vm._e(),_vm._v(\" \"),(field.field.type === 'textdata')?_c('div',{staticClass:\"textinfo\"},[_c('div',{staticClass:\"info\"},[_vm._v(_vm._s(field.field.value))])]):_vm._e(),_vm._v(\" \"),(field.field.type === 'radio')?_c('div',{staticClass:\"items\"},_vm._l((field.field.example.split(',')),function(option,oKey){return _c('label',{key:oKey,staticClass:\"field horizontal item\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(field.field.value),expression:\"field.field.value\"},{name:\"focus\",rawName:\"v-focus\",value:(field.autofocus && oKey === 0),expression:\"field.autofocus && oKey === 0\"}],attrs:{\"type\":\"radio\",\"autocomplete\":\"off\",\"name\":field.field.name,\"autofocus\":field.autofocus && oKey === 0,\"aria-checked\":field.field.value === option,\"tabindex\":field.nextSubTabIndex(oKey),\"disabled\":field.field.readonly},domProps:{\"value\":option,\"checked\":field.field.value === option,\"checked\":_vm._q(field.field.value,option)},on:{\"focus\":function($event){return _vm.focus(key, field, true)},\"blur\":function($event){return _vm.focus(key, field, false)},\"input\":function($event){return _vm.changed(key, field, false)},\"change\":[function($event){return _vm.$set(field.field, \"value\", option)},function($event){return _vm.changed(key, field, true)}]}}),_vm._v(\"\\n \"+_vm._s(option)+\"\\n \")])}),0):_vm._e(),_vm._v(\" \"),(field.suggestion.suggestions.length > 0)?_c('ul',{staticClass:\"input-suggestions lst-nostyle\",on:{\"mouseenter\":function($event){return field.holdSuggestions(true)},\"mouseleave\":function($event){return field.holdSuggestions(false)}}},_vm._l((field.suggestion.suggestions),function(suggestion,sKey){return _c('li',{key:sKey,class:{ current: sKey === field.suggestion.selected },on:{\"click\":function($event){return _vm.clickInputSuggestion(key, field, sKey)}}},[_c('div',{staticClass:\"sugt-title\"},[_vm._v(\"\\n \"+_vm._s(suggestion.title)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"sugt-value\"},[_vm._v(\"\\n \"+_vm._s(suggestion.value)+\"\\n \")])])}),0):_vm._e(),_vm._v(\" \"),(field.error.length > 0)?_c('div',{staticClass:\"error\"},[_vm._v(_vm._s(field.error))]):(field.message.length > 0)?_c('div',{staticClass:\"message\"},[_vm._v(\"\\n \"+_vm._s(field.message)+\"\\n \")]):(field.field.description.length > 0)?_c('div',{staticClass:\"message\",domProps:{\"innerHTML\":_vm._s(field.field.description)}}):_vm._e()])}),_vm._v(\" \"),_c('div',{staticClass:\"field\"},[(_vm.current.submittable)?_c('button',{directives:[{name:\"focus\",rawName:\"v-focus\",value:(_vm.submitterTabIndex === 1),expression:\"submitterTabIndex === 1\"}],attrs:{\"type\":\"submit\",\"disabled\":_vm.current.submitting || _vm.disabled,\"tabindex\":_vm.submitterTabIndex,\"autofocus\":_vm.submitterTabIndex === 1},on:{\"click\":_vm.submitAndGetNext}},[_vm._v(\"\\n \"+_vm._s(_vm.current.actionText)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.current.cancellable)?_c('button',{staticClass:\"secondary\",attrs:{\"disabled\":_vm.current.submitting || _vm.disabled,\"tabindex\":_vm.submitterTabIndex + 1},on:{\"click\":_vm.cancelAndGetNext}},[_vm._v(\"\\n Cancel\\n \")]):_vm._e()])],2),_vm._v(\" \"),(_vm.preloaderIDName.length > 0)?_c('div',{staticStyle:{\"width\":\"1px\",\"height\":\"1px\",\"margin\":\"10px\",\"position\":\"absolute\",\"top\":\"0\",\"bottom\":\"0\",\"overflow\":\"hidden\"}},[_c('div',{attrs:{\"id\":_vm.preloaderIDName}},[_vm._v(\"\\n \"+_vm._s(_vm.current.title || _vm.connector.name)+\" wizard\\n \")])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n// Sshwifty - A Web SSH client\n//\n// Copyright (C) 2019-2023 Ni Rui <ranqus@gmail.com>\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n-->\n\n<template>\n <div id=\"home\">\n <header id=\"home-header\">\n <h1 id=\"home-hd-title\">Sshwifty</h1>\n\n <a id=\"home-hd-delay\" href=\"javascript:;\" @click=\"showDelayWindow\">\n <span\n id=\"home-hd-delay-icon\"\n class=\"icon icon-point1\"\n :class=\"socket.classStyle\"\n ></span>\n <span v-if=\"socket.message.length > 0\" id=\"home-hd-delay-value\">{{\n socket.message\n }}</span>\n </a>\n\n <a\n id=\"home-hd-plus\"\n class=\"icon icon-plus1\"\n href=\"javascript:;\"\n :class=\"{\n working: connector.inputting,\n intensify: connector.inputting && !windows.connect,\n }\"\n @click=\"showConnectWindow\"\n ></a>\n\n <tabs\n id=\"home-hd-tabs\"\n :tab=\"tab.current\"\n :tabs=\"tab.tabs\"\n tabs-class=\"tab1\"\n list-trigger-class=\"icon icon-more1\"\n @current=\"switchTab\"\n @retap=\"retapTab\"\n @list=\"showTabsWindow\"\n @close=\"closeTab\"\n ></tabs>\n </header>\n\n <screens\n id=\"home-content\"\n :screen=\"tab.current\"\n :screens=\"tab.tabs\"\n :view-port=\"viewPort\"\n @stopped=\"tabStopped\"\n @warning=\"tabWarning\"\n @info=\"tabInfo\"\n @updated=\"tabUpdated\"\n >\n <div id=\"home-content-wrap\">\n <h1>Hi, this is Sshwifty</h1>\n\n <p>\n An Open Source Web SSH Client that enables you to connect to SSH\n servers without downloading any additional software.\n </p>\n\n <p>\n To get started, click the\n <span\n id=\"home-content-connect\"\n class=\"icon icon-plus1\"\n @click=\"showConnectWindow\"\n ></span>\n icon near the top left corner.\n </p>\n\n <hr />\n\n <p class=\"secondary\">\n Programmers in China launched an online campaign against\n <a\n href=\"https://en.wikipedia.org/wiki/996_working_hour_system\"\n target=\"blank\"\n >implicitly forced overtime work</a\n >. Sshwifty wouldn't exist if its author must work such extreme\n hours. If you're benefiting from hobbyist projects like this one,\n please consider\n <a\n href=\"https://github.com/996icu/996.ICU/#what-can-i-do\"\n target=\"blank\"\n >supporting the action</a\n >.\n </p>\n </div>\n </screens>\n\n <connect-widget\n :inputting=\"connector.inputting\"\n :display=\"windows.connect\"\n :connectors=\"connector.connectors\"\n :presets=\"presets\"\n :restricted-to-presets=\"restrictedToPresets\"\n :knowns=\"connector.knowns\"\n :knowns-launcher-builder=\"buildknownLauncher\"\n :knowns-export=\"exportKnowns\"\n :knowns-import=\"importKnowns\"\n :busy=\"connector.busy\"\n @display=\"windows.connect = $event\"\n @connector-select=\"connectNew\"\n @known-select=\"connectKnown\"\n @known-remove=\"removeKnown\"\n @preset-select=\"connectPreset\"\n @known-clear-session=\"clearSessionKnown\"\n >\n <connector\n :connector=\"connector.connector\"\n @cancel=\"cancelConnection\"\n @done=\"connectionSucceed\"\n >\n </connector>\n </connect-widget>\n <status-widget\n :class=\"socket.windowClass\"\n :display=\"windows.delay\"\n :status=\"socket.status\"\n @display=\"windows.delay = $event\"\n ></status-widget>\n <tab-window\n :tab=\"tab.current\"\n :tabs=\"tab.tabs\"\n :display=\"windows.tabs\"\n tabs-class=\"tab1 tab1-list\"\n @display=\"windows.tabs = $event\"\n @current=\"switchTab\"\n @retap=\"retapTab\"\n @close=\"closeTab\"\n ></tab-window>\n </div>\n</template>\n\n<script>\nimport \"./home.css\";\n\nimport ConnectWidget from \"./widgets/connect.vue\";\nimport StatusWidget from \"./widgets/status.vue\";\nimport Connector from \"./widgets/connector.vue\";\nimport Tabs from \"./widgets/tabs.vue\";\nimport TabWindow from \"./widgets/tab_window.vue\";\nimport Screens from \"./widgets/screens.vue\";\n\nimport * as home_socket from \"./home_socketctl.js\";\nimport * as home_history from \"./home_historyctl.js\";\n\nimport * as presets from \"./commands/presets.js\";\n\nconst BACKEND_CONNECT_ERROR =\n \"Unable to connect to the Sshwifty backend server: \";\nconst BACKEND_REQUEST_ERROR = \"Unable to perform request: \";\n\nexport default {\n components: {\n \"connect-widget\": ConnectWidget,\n \"status-widget\": StatusWidget,\n connector: Connector,\n tabs: Tabs,\n \"tab-window\": TabWindow,\n screens: Screens,\n },\n props: {\n hostPath: {\n type: String,\n default: \"\",\n },\n query: {\n type: String,\n default: \"\",\n },\n connection: {\n type: Object,\n default: () => null,\n },\n controls: {\n type: Object,\n default: () => null,\n },\n commands: {\n type: Object,\n default: () => null,\n },\n presetData: {\n type: Object,\n default: () => new presets.Presets([]),\n },\n restrictedToPresets: {\n type: Boolean,\n default: () => false,\n },\n viewPort: {\n type: Object,\n default: () => null,\n },\n },\n data() {\n let history = home_history.build(this);\n\n return {\n ticker: null,\n windows: {\n delay: false,\n connect: false,\n tabs: false,\n },\n socket: home_socket.build(this),\n connector: {\n historyRec: history,\n connector: null,\n connectors: this.commands.all(),\n inputting: false,\n acquired: false,\n busy: false,\n knowns: history.all(),\n },\n presets: this.commands.mergePresets(this.presetData),\n tab: {\n current: -1,\n lastID: 0,\n tabs: [],\n },\n };\n },\n mounted() {\n this.ticker = setInterval(() => {\n this.tick();\n }, 1000);\n\n if (this.query.length > 1 && this.query.indexOf(\"+\") === 0) {\n this.connectLaunch(this.query.slice(1, this.query.length), (success) => {\n if (!success) {\n return;\n }\n\n this.$emit(\"navigate-to\", \"\");\n });\n }\n\n window.addEventListener(\"beforeunload\", this.onBrowserClose);\n },\n beforeDestroy() {\n window.removeEventListener(\"beforeunload\", this.onBrowserClose);\n\n if (this.ticker === null) {\n clearInterval(this.ticker);\n this.ticker = null;\n }\n },\n methods: {\n onBrowserClose(e) {\n if (this.tab.current < 0) {\n return undefined;\n }\n const msg = \"Some tabs are still open, are you sure you want to exit?\";\n (e || window.event).returnValue = msg;\n return msg;\n },\n tick() {\n let now = new Date();\n\n this.socket.update(now, this);\n },\n closeAllWindow(e) {\n for (let i in this.windows) {\n this.windows[i] = false;\n }\n },\n showDelayWindow() {\n this.closeAllWindow();\n this.windows.delay = true;\n },\n showConnectWindow() {\n this.closeAllWindow();\n this.windows.connect = true;\n },\n showTabsWindow() {\n this.closeAllWindow();\n this.windows.tabs = true;\n },\n async getStreamThenRun(run, end) {\n let errStr = null;\n\n try {\n let conn = await this.connection.get(this.socket);\n\n try {\n run(conn);\n } catch (e) {\n errStr = BACKEND_REQUEST_ERROR + e;\n\n process.env.NODE_ENV === \"development\" && console.trace(e);\n }\n } catch (e) {\n errStr = BACKEND_CONNECT_ERROR + e;\n\n process.env.NODE_ENV === \"development\" && console.trace(e);\n }\n\n end();\n\n if (errStr !== null) {\n alert(errStr);\n }\n },\n runConnect(callback) {\n if (this.connector.acquired) {\n return;\n }\n\n this.connector.acquired = true;\n this.connector.busy = true;\n\n this.getStreamThenRun(\n (stream) => {\n this.connector.busy = false;\n\n callback(stream);\n },\n () => {\n this.connector.busy = false;\n this.connector.acquired = false;\n }\n );\n },\n connectNew(connector) {\n const self = this;\n\n self.runConnect((stream) => {\n self.connector.connector = {\n id: connector.id(),\n name: connector.name(),\n description: connector.description(),\n wizard: connector.wizard(\n stream,\n self.controls,\n self.connector.historyRec,\n presets.emptyPreset(),\n null,\n false,\n () => {}\n ),\n };\n\n self.connector.inputting = true;\n });\n },\n connectPreset(preset) {\n const self = this;\n\n self.runConnect((stream) => {\n self.connector.connector = {\n id: preset.command.id(),\n name: preset.command.name(),\n description: preset.command.description(),\n wizard: preset.command.wizard(\n stream,\n self.controls,\n self.connector.historyRec,\n preset.preset,\n null,\n [],\n () => {}\n ),\n };\n\n self.connector.inputting = true;\n });\n },\n getConnectorByType(type) {\n let connector = null;\n\n for (let c in this.connector.connectors) {\n if (this.connector.connectors[c].name() !== type) {\n continue;\n }\n\n connector = this.connector.connectors[c];\n }\n\n return connector;\n },\n connectKnown(known) {\n const self = this;\n\n self.runConnect((stream) => {\n let connector = self.getConnectorByType(known.type);\n\n if (!connector) {\n alert(\"Unknown connector: \" + known.type);\n\n self.connector.inputting = false;\n\n return;\n }\n\n self.connector.connector = {\n id: connector.id(),\n name: connector.name(),\n description: connector.description(),\n wizard: connector.execute(\n stream,\n self.controls,\n self.connector.historyRec,\n known.data,\n known.session,\n known.keptSessions,\n () => {\n self.connector.knowns = self.connector.historyRec.all();\n }\n ),\n };\n\n self.connector.inputting = true;\n });\n },\n parseConnectLauncher(ll) {\n let llSeparatorIdx = ll.indexOf(\":\");\n\n // Type must contain at least one charater\n if (llSeparatorIdx <= 0) {\n throw new Error(\"Invalid Launcher string\");\n }\n\n return {\n type: ll.slice(0, llSeparatorIdx),\n query: ll.slice(llSeparatorIdx + 1, ll.length),\n };\n },\n connectLaunch(launcher, done) {\n this.showConnectWindow();\n\n this.runConnect((stream) => {\n let ll = this.parseConnectLauncher(launcher),\n connector = this.getConnectorByType(ll.type);\n\n if (!connector) {\n alert(\"Unknown connector: \" + ll.type);\n\n this.connector.inputting = false;\n\n return;\n }\n\n const self = this;\n\n this.connector.connector = {\n id: connector.id(),\n name: connector.name(),\n description: connector.description(),\n wizard: connector.launch(\n stream,\n this.controls,\n this.connector.historyRec,\n ll.query,\n (n) => {\n self.connector.knowns = self.connector.historyRec.all();\n\n done(n.data().success);\n }\n ),\n };\n\n this.connector.inputting = true;\n });\n },\n buildknownLauncher(known) {\n let connector = this.getConnectorByType(known.type);\n\n if (!connector) {\n return;\n }\n\n return this.hostPath + \"#+\" + connector.launcher(known.data);\n },\n exportKnowns() {\n return this.connector.historyRec.export();\n },\n importKnowns(d) {\n this.connector.historyRec.import(d);\n\n this.connector.knowns = this.connector.historyRec.all();\n },\n removeKnown(uid) {\n this.connector.historyRec.del(uid);\n\n this.connector.knowns = this.connector.historyRec.all();\n },\n clearSessionKnown(uid) {\n this.connector.historyRec.clearSession(uid);\n\n this.connector.knowns = this.connector.historyRec.all();\n },\n cancelConnection() {\n this.connector.inputting = false;\n this.connector.acquired = false;\n },\n connectionSucceed(data) {\n this.connector.inputting = false;\n this.connector.acquired = false;\n this.windows.connect = false;\n\n this.addToTab(data);\n\n this.$emit(\"tab-opened\", this.tab.tabs);\n },\n async addToTab(data) {\n await this.switchTab(\n this.tab.tabs.push({\n id: this.tab.lastID++,\n name: data.name,\n info: data.info,\n control: data.control,\n ui: data.ui,\n toolbar: false,\n indicator: {\n level: \"\",\n message: \"\",\n updated: false,\n },\n status: {\n closing: false,\n },\n }) - 1\n );\n },\n removeFromTab(index) {\n let isLast = index === this.tab.tabs.length - 1;\n\n this.tab.tabs.splice(index, 1);\n this.tab.current = isLast ? this.tab.tabs.length - 1 : index;\n },\n async switchTab(to) {\n if (this.tab.current >= 0) {\n await this.tab.tabs[this.tab.current].control.disabled();\n }\n\n this.tab.current = to;\n\n this.tab.tabs[this.tab.current].indicator.updated = false;\n await this.tab.tabs[this.tab.current].control.enabled();\n },\n async retapTab(tab) {\n this.tab.tabs[tab].toolbar = !this.tab.tabs[tab].toolbar;\n\n await this.tab.tabs[tab].control.retap(this.tab.tabs[tab].toolbar);\n },\n async closeTab(index) {\n if (this.tab.tabs[index].status.closing) {\n return;\n }\n\n this.tab.tabs[index].status.closing = true;\n\n try {\n this.tab.tabs[index].control.disabled();\n\n await this.tab.tabs[index].control.close();\n } catch (e) {\n alert(\"Cannot close tab due to error: \" + e);\n\n process.env.NODE_ENV === \"development\" && console.trace(e);\n }\n\n this.removeFromTab(index);\n\n this.$emit(\"tab-closed\", this.tab.tabs);\n },\n tabStopped(index, reason) {\n if (reason !== null) {\n this.tab.tabs[index].indicator.message = \"\" + reason;\n this.tab.tabs[index].indicator.level = \"error\";\n } else {\n this.tab.tabs[index].indicator.message = \"\";\n this.tab.tabs[index].indicator.level = \"\";\n }\n },\n tabMessage(index, msg, type) {\n if (msg.toDismiss) {\n if (\n this.tab.tabs[index].indicator.message !== msg.text ||\n this.tab.tabs[index].indicator.level !== type\n ) {\n return;\n }\n\n this.tab.tabs[index].indicator.message = \"\";\n this.tab.tabs[index].indicator.level = \"\";\n\n return;\n }\n\n this.tab.tabs[index].indicator.message = msg.text;\n this.tab.tabs[index].indicator.level = type;\n },\n tabWarning(index, msg) {\n this.tabMessage(index, msg, \"warning\");\n },\n tabInfo(index, msg) {\n this.tabMessage(index, msg, \"info\");\n },\n tabUpdated(index) {\n this.$emit(\"tab-updated\", this.tab.tabs);\n\n this.tab.tabs[index].indicator.updated = index !== this.tab.current;\n },\n },\n};\n</script>\n","// Sshwifty - A Web SSH client\n//\n// Copyright (C) 2019-2023 Ni Rui <ranqus@gmail.com>\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n\nimport * as history from \"./history.js\";\nimport { ECHO_FAILED } from \"./socket.js\";\n\nexport function build(ctx) {\n const connectionStatusNotConnected = \"Sshwifty is ready to connect\";\n const connectionStatusConnecting =\n \"Connecting to Sshwifty backend server. It should only take \" +\n \"less than a second, or two\";\n const connectionStatusDisconnected =\n \"Sshwifty is disconnected from it's backend server\";\n const connectionStatusConnected =\n \"Sshwifty is connected to it's backend server, user interface operational\";\n const connectionStatusUnmeasurable =\n \"Unable to measure connection delay. The connection maybe very \" +\n \"busy or already lost\";\n\n const connectionDelayGood =\n \"Connection delay is low, operation should be very responsive\";\n const connectionDelayFair =\n \"Experiencing minor connection delay, operation should be responded \" +\n \"within a reasonable time\";\n const connectionDelayMedian =\n \"Experiencing median connection delay, consider to slow down your input \" +\n \"to avoid misoperation\";\n const connectionDelayHeavy =\n \"Experiencing bad connection delay, operation may freeze at any moment. \" +\n \"Consider to pause your input until remote is responsive\";\n\n const buildEmptyHistory = () => {\n let r = [];\n\n for (let i = 0; i < 32; i++) {\n r.push({ data: 0, class: \"\" });\n }\n\n return r;\n };\n\n let isClosed = false,\n inboundPerSecond = 0,\n outboundPerSecond = 0,\n trafficPreSecondNextUpdate = new Date(),\n inboundPre10Seconds = 0,\n outboundPre10Seconds = 0,\n trafficPre10sNextUpdate = new Date(),\n inboundHistory = new history.Records(buildEmptyHistory()),\n outboundHistory = new history.Records(buildEmptyHistory()),\n trafficSamples = 0;\n\n let delayHistory = new history.Records(buildEmptyHistory()),\n delaySamples = 0,\n delayPerInterval = 0;\n\n return {\n update(time) {\n if (isClosed) {\n return;\n }\n\n if (time >= trafficPreSecondNextUpdate) {\n trafficPreSecondNextUpdate = new Date(time.getTime() + 1000);\n inboundPre10Seconds += inboundPerSecond;\n outboundPre10Seconds += outboundPerSecond;\n\n this.status.inbound = inboundPerSecond;\n this.status.outbound = outboundPerSecond;\n\n inboundPerSecond = 0;\n outboundPerSecond = 0;\n\n trafficSamples++;\n }\n\n if (time >= trafficPre10sNextUpdate) {\n trafficPre10sNextUpdate = new Date(time.getTime() + 10000);\n\n if (trafficSamples > 0) {\n inboundHistory.update(inboundPre10Seconds / trafficSamples);\n outboundHistory.update(outboundPre10Seconds / trafficSamples);\n\n inboundPre10Seconds = 0;\n outboundPre10Seconds = 0;\n trafficSamples = 0;\n }\n\n if (delaySamples > 0) {\n delayHistory.update(delayPerInterval / delaySamples);\n\n delaySamples = 0;\n delayPerInterval = 0;\n }\n }\n },\n classStyle: \"\",\n windowClass: \"\",\n message: \"\",\n status: {\n description: connectionStatusNotConnected,\n delay: 0,\n delayHistory: delayHistory.get(),\n inbound: 0,\n inboundHistory: inboundHistory.get(),\n outbound: 0,\n outboundHistory: outboundHistory.get(),\n },\n connecting() {\n isClosed = false;\n\n this.message = \"--\";\n this.classStyle = \"working\";\n this.windowClass = \"\";\n this.status.description = connectionStatusConnecting;\n },\n connected() {\n isClosed = false;\n\n this.message = \"??\";\n this.classStyle = \"working\";\n this.windowClass = \"\";\n this.status.description = connectionStatusConnected;\n },\n traffic(inb, outb) {\n inboundPerSecond += inb;\n outboundPerSecond += outb;\n },\n echo(delay) {\n delayPerInterval += delay > 0 ? delay : 0;\n delaySamples++;\n\n if (delay == ECHO_FAILED) {\n this.status.delay = -1;\n this.message = \"\";\n this.classStyle = \"red flash\";\n this.windowClass = \"red\";\n this.status.description = connectionStatusUnmeasurable;\n\n return;\n }\n\n let avgDelay = Math.round(delayPerInterval / delaySamples);\n\n this.message = Number(avgDelay).toLocaleString() + \"ms\";\n this.status.delay = avgDelay;\n\n if (avgDelay < 30) {\n this.classStyle = \"green\";\n this.windowClass = \"green\";\n this.status.description =\n connectionStatusConnected + \". \" + connectionDelayGood;\n } else if (avgDelay < 100) {\n this.classStyle = \"yellow\";\n this.windowClass = \"yellow\";\n this.status.description =\n connectionStatusConnected + \". \" + connectionDelayFair;\n } else if (avgDelay < 300) {\n this.classStyle = \"orange\";\n this.windowClass = \"orange\";\n this.status.description =\n connectionStatusConnected + \". \" + connectionDelayMedian;\n } else {\n this.classStyle = \"red\";\n this.windowClass = \"red\";\n this.status.description =\n connectionStatusConnected + \". \" + connectionDelayHeavy;\n }\n },\n close(e) {\n isClosed = true;\n delayHistory.expire();\n inboundHistory.expire();\n outboundHistory.expire();\n\n ctx.connector.inputting = false;\n\n if (e === null) {\n this.message = \"\";\n this.classStyle = \"\";\n this.status.description = connectionStatusDisconnected;\n\n return;\n }\n\n this.status.delay = -1;\n this.message = \"ERR\";\n this.classStyle = \"red flash\";\n this.windowClass = \"red\";\n this.status.description = connectionStatusDisconnected + \": \" + e;\n },\n failed(e) {\n isClosed = true;\n\n ctx.connector.inputting = false;\n\n if (e.code) {\n this.message = \"E\" + e.code;\n } else {\n this.message = \"E????\";\n }\n\n this.status.delay = -1;\n this.classStyle = \"red flash\";\n this.windowClass = \"red\";\n this.status.description = connectionStatusDisconnected + \". Error: \" + e;\n },\n };\n}\n","// Sshwifty - A Web SSH client\n//\n// Copyright (C) 2019-2023 Ni Rui <ranqus@gmail.com>\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n\nimport { History } from \"./commands/history.js\";\n\nexport function build(ctx) {\n let rec = [];\n\n // This renames \"knowns\" to \"sshwifty-knowns\"\n // TODO: Remove this after some few years\n try {\n let oldStore = localStorage.getItem(\"knowns\");\n\n if (oldStore) {\n localStorage.setItem(\"sshwifty-knowns\", oldStore);\n localStorage.removeItem(\"knowns\");\n }\n } catch (e) {\n // Do nothing\n }\n\n try {\n rec = JSON.parse(localStorage.getItem(\"sshwifty-knowns\"));\n\n if (!rec) {\n rec = [];\n }\n } catch (e) {\n alert(\"Unable to load data of Known remotes: \" + e);\n }\n\n return new History(\n rec,\n (h, d) => {\n try {\n localStorage.setItem(\"sshwifty-knowns\", JSON.stringify(d));\n ctx.connector.knowns = h.all();\n } catch (e) {\n alert(\"Unable to save remote history due to error: \" + e);\n }\n },\n 64\n );\n}\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=0ea7b084&\"\nimport script from \"./home.vue?vue&type=script&lang=js&\"\nexport * from \"./home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"home\"}},[_c('header',{attrs:{\"id\":\"home-header\"}},[_c('h1',{attrs:{\"id\":\"home-hd-title\"}},[_vm._v(\"Sshwifty\")]),_vm._v(\" \"),_c('a',{attrs:{\"id\":\"home-hd-delay\",\"href\":\"javascript:;\"},on:{\"click\":_vm.showDelayWindow}},[_c('span',{staticClass:\"icon icon-point1\",class:_vm.socket.classStyle,attrs:{\"id\":\"home-hd-delay-icon\"}}),_vm._v(\" \"),(_vm.socket.message.length > 0)?_c('span',{attrs:{\"id\":\"home-hd-delay-value\"}},[_vm._v(_vm._s(_vm.socket.message))]):_vm._e()]),_vm._v(\" \"),_c('a',{staticClass:\"icon icon-plus1\",class:{\n working: _vm.connector.inputting,\n intensify: _vm.connector.inputting && !_vm.windows.connect,\n },attrs:{\"id\":\"home-hd-plus\",\"href\":\"javascript:;\"},on:{\"click\":_vm.showConnectWindow}}),_vm._v(\" \"),_c('tabs',{attrs:{\"id\":\"home-hd-tabs\",\"tab\":_vm.tab.current,\"tabs\":_vm.tab.tabs,\"tabs-class\":\"tab1\",\"list-trigger-class\":\"icon icon-more1\"},on:{\"current\":_vm.switchTab,\"retap\":_vm.retapTab,\"list\":_vm.showTabsWindow,\"close\":_vm.closeTab}})],1),_vm._v(\" \"),_c('screens',{attrs:{\"id\":\"home-content\",\"screen\":_vm.tab.current,\"screens\":_vm.tab.tabs,\"view-port\":_vm.viewPort},on:{\"stopped\":_vm.tabStopped,\"warning\":_vm.tabWarning,\"info\":_vm.tabInfo,\"updated\":_vm.tabUpdated}},[_c('div',{attrs:{\"id\":\"home-content-wrap\"}},[_c('h1',[_vm._v(\"Hi, this is Sshwifty\")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n An Open Source Web SSH Client that enables you to connect to SSH\\n servers without downloading any additional software.\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n To get started, click the\\n \"),_c('span',{staticClass:\"icon icon-plus1\",attrs:{\"id\":\"home-content-connect\"},on:{\"click\":_vm.showConnectWindow}}),_vm._v(\"\\n icon near the top left corner.\\n \")]),_vm._v(\" \"),_c('hr'),_vm._v(\" \"),_c('p',{staticClass:\"secondary\"},[_vm._v(\"\\n Programmers in China launched an online campaign against\\n \"),_c('a',{attrs:{\"href\":\"https://en.wikipedia.org/wiki/996_working_hour_system\",\"target\":\"blank\"}},[_vm._v(\"implicitly forced overtime work\")]),_vm._v(\". Sshwifty wouldn't exist if its author must work such extreme\\n hours. If you're benefiting from hobbyist projects like this one,\\n please consider\\n \"),_c('a',{attrs:{\"href\":\"https://github.com/996icu/996.ICU/#what-can-i-do\",\"target\":\"blank\"}},[_vm._v(\"supporting the action\")]),_vm._v(\".\\n \")])])]),_vm._v(\" \"),_c('connect-widget',{attrs:{\"inputting\":_vm.connector.inputting,\"display\":_vm.windows.connect,\"connectors\":_vm.connector.connectors,\"presets\":_vm.presets,\"restricted-to-presets\":_vm.restrictedToPresets,\"knowns\":_vm.connector.knowns,\"knowns-launcher-builder\":_vm.buildknownLauncher,\"knowns-export\":_vm.exportKnowns,\"knowns-import\":_vm.importKnowns,\"busy\":_vm.connector.busy},on:{\"display\":function($event){_vm.windows.connect = $event},\"connector-select\":_vm.connectNew,\"known-select\":_vm.connectKnown,\"known-remove\":_vm.removeKnown,\"preset-select\":_vm.connectPreset,\"known-clear-session\":_vm.clearSessionKnown}},[_c('connector',{attrs:{\"connector\":_vm.connector.connector},on:{\"cancel\":_vm.cancelConnection,\"done\":_vm.connectionSucceed}})],1),_vm._v(\" \"),_c('status-widget',{class:_vm.socket.windowClass,attrs:{\"display\":_vm.windows.delay,\"status\":_vm.socket.status},on:{\"display\":function($event){_vm.windows.delay = $event}}}),_vm._v(\" \"),_c('tab-window',{attrs:{\"tab\":_vm.tab.current,\"tabs\":_vm.tab.tabs,\"display\":_vm.windows.tabs,\"tabs-class\":\"tab1 tab1-list\"},on:{\"display\":function($event){_vm.windows.tabs = $event},\"current\":_vm.switchTab,\"retap\":_vm.retapTab,\"close\":_vm.closeTab}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// Sshwifty - A Web SSH client\n//\n// Copyright (C) 2019-2023 Ni Rui <ranqus@gmail.com>\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as\n// published by the Free Software Foundation, either version 3 of the\n// License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n\nimport Vue from \"vue\";\nimport \"./app.css\";\nimport Auth from \"./auth.vue\";\nimport { Color as ControlColor } from \"./commands/color.js\";\nimport { Commands } from \"./commands/commands.js\";\nimport { Controls } from \"./commands/controls.js\";\nimport { Presets } from \"./commands/presets.js\";\nimport * as ssh from \"./commands/ssh.js\";\nimport * as telnet from \"./commands/telnet.js\";\nimport \"./common.css\";\nimport * as sshctl from \"./control/ssh.js\";\nimport * as telnetctl from \"./control/telnet.js\";\nimport * as cipher from \"./crypto.js\";\nimport Home from \"./home.vue\";\nimport \"./landing.css\";\nimport Loading from \"./loading.vue\";\nimport { Socket } from \"./socket.js\";\nimport * as stream from \"./stream/common\";\nimport * as xhr from \"./xhr.js\";\n\nconst backendQueryRetryDelay = 2000;\n\nconst maxTimeDiff = 30000;\n\nconst updateIndicatorMaxDisplayTime = 3000;\n\nconst mainTemplate = `\n<home\n v-if=\"page == 'app'\"\n :host-path=\"hostPath\"\n :query=\"query\"\n :connection=\"socket\"\n :controls=\"controls\"\n :commands=\"commands\"\n :preset-data=\"presetData.presets\"\n :restricted-to-presets=\"presetData.restricted\"\n :view-port=\"viewPort\"\n @navigate-to=\"changeURLHash\"\n @tab-opened=\"tabOpened\"\n @tab-closed=\"tabClosed\"\n @tab-updated=\"tabUpdated\"\n></home>\n<auth\n v-else-if=\"page == 'auth'\"\n :error=\"authErr\"\n @auth=\"submitAuth\"\n></auth>\n<loading v-else :error=\"loadErr\"></loading>\n`.trim();\n\nconst socksInterface = \"/sshwifty/socket\";\nconst socksVerificationInterface = socksInterface + \"/verify\";\nconst socksKeyTimeTruncater = 100 * 1000;\n\nfunction startApp(rootEl) {\n const pageTitle = document.title;\n\n let uiControlColor = new ControlColor();\n\n function getCurrentKeyMixer() {\n return Number(\n Math.trunc(new Date().getTime() / socksKeyTimeTruncater)\n ).toString();\n }\n\n async function buildSocketKey(privateKey) {\n return new Uint8Array(\n await cipher.hmac512(\n stream.buildBufferFromString(privateKey),\n stream.buildBufferFromString(getCurrentKeyMixer())\n )\n ).slice(0, 16);\n }\n\n new Vue({\n el: rootEl,\n components: {\n loading: Loading,\n auth: Auth,\n home: Home,\n },\n data() {\n return {\n hostPath:\n window.location.protocol +\n \"//\" +\n window.location.host +\n window.location.pathname,\n query:\n window.location.hash.length > 0 &&\n window.location.hash.indexOf(\"#\") === 0\n ? window.location.hash.slice(1, window.location.hash.length)\n : \"\",\n page: \"loading\",\n key: \"\",\n presetData: {\n presets: new Presets([]),\n restricted: false,\n },\n authErr: \"\",\n loadErr: \"\",\n socket: null,\n controls: new Controls([\n new telnetctl.Telnet(uiControlColor),\n new sshctl.SSH(uiControlColor),\n ]),\n commands: new Commands([new telnet.Command(), new ssh.Command()]),\n tabUpdateIndicator: null,\n viewPort: {\n dim: {\n width: 0,\n height: 0,\n renew(width, height) {\n this.width = width;\n this.height = height;\n },\n },\n },\n viewPortUpdaters: {\n width: 0,\n height: 0,\n dimResizer: null,\n },\n };\n },\n watch: {\n loadErr() {\n this.isErrored()\n ? document.body.classList.add(\"app-error\")\n : document.body.classList.remove(\"app-error\");\n },\n authErr() {\n this.isErrored()\n ? document.body.classList.add(\"app-error\")\n : document.body.classList.remove(\"app-error\");\n },\n },\n mounted() {\n const self = this;\n\n self.tryInitialAuth();\n\n self.viewPortUpdaters.dimResizer = () => {\n self.viewPortUpdaters.height = window.innerHeight;\n self.viewPortUpdaters.width = window.innerWidth;\n\n self.$nextTick(() => {\n self.viewPort.dim.renew(\n self.viewPortUpdaters.width,\n self.viewPortUpdaters.height\n );\n });\n };\n\n window.addEventListener(\"resize\", self.viewPortUpdaters.dimResizer);\n },\n beforeDestroy() {\n window.removeEventListener(\"resize\", self.viewPortUpdaters.dimResizer);\n },\n methods: {\n changeTitleInfo(newTitleInfo) {\n document.title = newTitleInfo + \" \" + pageTitle;\n },\n resetTitleInfo() {\n document.title = pageTitle;\n },\n changeURLHash(newHash) {\n window.location.hash = newHash;\n },\n isErrored() {\n return this.authErr.length > 0 || this.loadErr.length > 0;\n },\n async getSocketAuthKey(privateKey) {\n const enc = new TextEncoder(),\n rTime = Number(Math.trunc(new Date().getTime() / 100000));\n\n var finalKey = \"\";\n\n if (privateKey.length <= 0) {\n finalKey = \"DEFAULT VERIFY KEY\";\n } else {\n finalKey = privateKey;\n }\n\n return new Uint8Array(\n await cipher.hmac512(enc.encode(finalKey), enc.encode(rTime))\n ).slice(0, 32);\n },\n buildBackendSocketURLs() {\n let r = {\n webSocket: \"\",\n keepAlive: \"\",\n };\n\n switch (location.protocol) {\n case \"https:\":\n r.webSocket = \"wss://\";\n break;\n\n default:\n r.webSocket = \"ws://\";\n }\n\n r.webSocket += location.host + socksInterface;\n r.keepAlive = location.protocol + \"//\" + location.host + socksInterface;\n\n return r;\n },\n buildSocket(key, dialTimeout, heartbeatInterval) {\n return new Socket(\n this.buildBackendSocketURLs(),\n key,\n dialTimeout * 1000,\n heartbeatInterval * 1000\n );\n },\n executeHomeApp(authResult, key) {\n this.presetData = {\n presets: new Presets(JSON.parse(authResult.data)),\n restricted: authResult.onlyAllowPresetRemotes,\n };\n this.socket = this.buildSocket(\n key,\n authResult.timeout,\n authResult.heartbeat\n );\n this.page = \"app\";\n },\n async doAuth(privateKey) {\n let result = await this.requestAuth(privateKey);\n\n if (result.key) {\n this.key = result.key;\n }\n\n return result;\n },\n async requestAuth(privateKey) {\n let authKey =\n !privateKey || !this.key\n ? null\n : await this.getSocketAuthKey(privateKey);\n\n let h = await xhr.get(socksVerificationInterface, {\n \"X-Key\": authKey\n ? btoa(String.fromCharCode.apply(null, authKey))\n : \"\",\n });\n\n let serverDate = h.getResponseHeader(\"Date\");\n\n return {\n result: h.status,\n key: h.getResponseHeader(\"X-Key\"),\n timeout: h.getResponseHeader(\"X-Timeout\"),\n heartbeat: h.getResponseHeader(\"X-Heartbeat\"),\n date: serverDate ? new Date(serverDate) : null,\n data: h.responseText,\n onlyAllowPresetRemotes:\n h.getResponseHeader(\"X-OnlyAllowPresetRemotes\") === \"yes\",\n };\n },\n async tryInitialAuth() {\n try {\n let result = await this.doAuth(\"\");\n\n if (result.date) {\n let serverTime = result.date.getTime(),\n clientTime = new Date().getTime(),\n timeDiff = Math.abs(serverTime - clientTime);\n\n if (timeDiff > maxTimeDiff) {\n this.loadErr =\n \"The time difference between this client \" +\n \"and the backend server is beyond operational limit.\\r\\n\\r\\n\" +\n \"Please try reload the page, and if the problem persisted, \" +\n \"consider to adjust your local time so both the client and \" +\n \"the server are running at same date time\";\n\n return;\n }\n }\n\n let self = this;\n switch (result.result) {\n case 200:\n this.executeHomeApp(result, {\n async fetch() {\n let result = await self.doAuth(\"\");\n\n if (result.result !== 200) {\n throw new Error(\n \"Unable to fetch key from remote, unexpected \" +\n \"error code: \" +\n result.result\n );\n }\n\n return await buildSocketKey(atob(result.key) + \"+\");\n },\n });\n break;\n\n case 403:\n this.page = \"auth\";\n break;\n\n case 0:\n setTimeout(() => {\n this.tryInitialAuth();\n }, backendQueryRetryDelay);\n break;\n\n default:\n alert(\"Unexpected backend query status: \" + result.result);\n }\n } catch (e) {\n this.loadErr = \"Unable to initialize client application: \" + e;\n }\n },\n async submitAuth(passphrase) {\n this.authErr = \"\";\n\n try {\n let result = await this.doAuth(passphrase);\n\n let self = this;\n switch (result.result) {\n case 200:\n this.executeHomeApp(result, {\n async fetch() {\n let result = await self.doAuth(passphrase);\n\n if (result.result !== 200) {\n throw new Error(\n \"Unable to fetch key from remote, unexpected \" +\n \"error code: \" +\n result.result\n );\n }\n\n return await buildSocketKey(\n atob(result.key) + \"+\" + passphrase\n );\n },\n });\n break;\n\n case 403:\n this.authErr = \"Authentication has failed. Wrong passphrase?\";\n break;\n\n default:\n this.authErr =\n \"Unexpected backend query status: \" + result.result;\n }\n } catch (e) {\n this.authErr = \"Unable to authenticate: \" + e;\n }\n },\n updateTabTitleInfo(tabs, updated) {\n if (tabs.length <= 0) {\n this.resetTitleInfo();\n\n return;\n }\n\n this.changeTitleInfo(\"(\" + tabs.length + (updated ? \"*\" : \"\") + \")\");\n },\n tabOpened(tabs) {\n this.tabUpdated(tabs);\n },\n tabClosed(tabs) {\n if (tabs.length > 0) {\n this.updateTabTitleInfo(tabs, this.tabUpdateIndicator !== null);\n\n return;\n }\n\n if (this.tabUpdateIndicator) {\n clearTimeout(this.tabUpdateIndicator);\n this.tabUpdateIndicator = null;\n }\n\n this.updateTabTitleInfo(tabs, false);\n },\n tabUpdated(tabs) {\n if (this.tabUpdateIndicator) {\n clearTimeout(this.tabUpdateIndicator);\n this.tabUpdateIndicator = null;\n }\n\n this.updateTabTitleInfo(tabs, true);\n\n this.tabUpdateIndicator = setTimeout(() => {\n this.tabUpdateIndicator = null;\n this.updateTabTitleInfo(tabs, false);\n }, updateIndicatorMaxDisplayTime);\n },\n },\n });\n}\n\nfunction initializeClient() {\n let landingRoot = document.getElementById(\"landing\");\n\n if (!landingRoot) {\n return;\n }\n\n if (process.env.NODE_ENV === \"development\") {\n console.log(\"Currently in Development environment\");\n }\n\n window.addEventListener(\"unhandledrejection\", function (e) {\n console.error(\"Error:\", e);\n });\n\n window.addEventListener(\"error\", function (e) {\n console.error(\"Error:\", e);\n });\n\n landingRoot.parentNode.removeChild(landingRoot);\n\n let normalRoot = document.createElement(\"div\");\n normalRoot.setAttribute(\"id\", \"app\");\n normalRoot.innerHTML = mainTemplate;\n\n document.body.insertBefore(normalRoot, document.body.firstChild);\n\n startApp(normalRoot);\n}\n\nwindow.addEventListener(\"load\", initializeClient);\ndocument.addEventListener(\"load\", initializeClient);\ndocument.addEventListener(\"DOMContentLoaded\", initializeClient);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/* Font Face Observer v2.3.0 - © Bram Stein. License: BSD-3-Clause */(function(){function p(a,c){document.addEventListener?a.addEventListener(\"scroll\",c,!1):a.attachEvent(\"scroll\",c)}function u(a){document.body?a():document.addEventListener?document.addEventListener(\"DOMContentLoaded\",function b(){document.removeEventListener(\"DOMContentLoaded\",b);a()}):document.attachEvent(\"onreadystatechange\",function g(){if(\"interactive\"==document.readyState||\"complete\"==document.readyState)document.detachEvent(\"onreadystatechange\",g),a()})};function w(a){this.g=document.createElement(\"div\");this.g.setAttribute(\"aria-hidden\",\"true\");this.g.appendChild(document.createTextNode(a));this.h=document.createElement(\"span\");this.i=document.createElement(\"span\");this.m=document.createElement(\"span\");this.j=document.createElement(\"span\");this.l=-1;this.h.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.i.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\nthis.j.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.m.style.cssText=\"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";this.h.appendChild(this.m);this.i.appendChild(this.j);this.g.appendChild(this.h);this.g.appendChild(this.i)}\nfunction x(a,c){a.g.style.cssText=\"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\"+c+\";\"}function B(a){var c=a.g.offsetWidth,b=c+100;a.j.style.width=b+\"px\";a.i.scrollLeft=b;a.h.scrollLeft=a.h.scrollWidth+100;return a.l!==c?(a.l=c,!0):!1}function C(a,c){function b(){var e=g;B(e)&&null!==e.g.parentNode&&c(e.l)}var g=a;p(a.h,b);p(a.i,b);B(a)};function D(a,c,b){c=c||{};b=b||window;this.family=a;this.style=c.style||\"normal\";this.weight=c.weight||\"normal\";this.stretch=c.stretch||\"normal\";this.context=b}var E=null,F=null,G=null,H=null;function I(a){null===F&&(M(a)&&/Apple/.test(window.navigator.vendor)?(a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent),F=!!a&&603>parseInt(a[1],10)):F=!1);return F}function M(a){null===H&&(H=!!a.document.fonts);return H}\nfunction N(a,c){var b=a.style,g=a.weight;if(null===G){var e=document.createElement(\"div\");try{e.style.font=\"condensed 100px sans-serif\"}catch(q){}G=\"\"!==e.style.font}return[b,g,G?a.stretch:\"\",\"100px\",c].join(\" \")}\nD.prototype.load=function(a,c){var b=this,g=a||\"BESbswy\",e=0,q=c||3E3,J=(new Date).getTime();return new Promise(function(K,L){if(M(b.context)&&!I(b.context)){var O=new Promise(function(r,t){function h(){(new Date).getTime()-J>=q?t(Error(\"\"+q+\"ms timeout exceeded\")):b.context.document.fonts.load(N(b,'\"'+b.family+'\"'),g).then(function(n){1<=n.length?r():setTimeout(h,25)},t)}h()}),P=new Promise(function(r,t){e=setTimeout(function(){t(Error(\"\"+q+\"ms timeout exceeded\"))},q)});Promise.race([P,O]).then(function(){clearTimeout(e);\nK(b)},L)}else u(function(){function r(){var d;if(d=-1!=k&&-1!=l||-1!=k&&-1!=m||-1!=l&&-1!=m)(d=k!=l&&k!=m&&l!=m)||(null===E&&(d=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent),E=!!d&&(536>parseInt(d[1],10)||536===parseInt(d[1],10)&&11>=parseInt(d[2],10))),d=E&&(k==y&&l==y&&m==y||k==z&&l==z&&m==z||k==A&&l==A&&m==A)),d=!d;d&&(null!==f.parentNode&&f.parentNode.removeChild(f),clearTimeout(e),K(b))}function t(){if((new Date).getTime()-J>=q)null!==f.parentNode&&f.parentNode.removeChild(f),\nL(Error(\"\"+q+\"ms timeout exceeded\"));else{var d=b.context.document.hidden;if(!0===d||void 0===d)k=h.g.offsetWidth,l=n.g.offsetWidth,m=v.g.offsetWidth,r();e=setTimeout(t,50)}}var h=new w(g),n=new w(g),v=new w(g),k=-1,l=-1,m=-1,y=-1,z=-1,A=-1,f=document.createElement(\"div\");f.dir=\"ltr\";x(h,N(b,\"sans-serif\"));x(n,N(b,\"serif\"));x(v,N(b,\"monospace\"));f.appendChild(h.g);f.appendChild(n.g);f.appendChild(v.g);b.context.document.body.appendChild(f);y=h.g.offsetWidth;z=n.g.offsetWidth;A=v.g.offsetWidth;t();\nC(h,function(d){k=d;r()});x(h,N(b,'\"'+b.family+'\",sans-serif'));C(n,function(d){l=d;r()});x(n,N(b,'\"'+b.family+'\",serif'));C(v,function(d){m=d;r()});x(v,N(b,'\"'+b.family+'\",monospace'))})})};\"object\"===typeof module?module.exports=D:(window.FontFaceObserver=D,window.FontFaceObserver.prototype.load=D.prototype.load);}());\n","\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n \n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + Â¥ + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n 'shiftjis': {\n type: '_dbcs',\n table: function() { return require('./tables/shiftjis.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n },\n 'csshiftjis': 'shiftjis',\n 'mskanji': 'shiftjis',\n 'sjis': 'shiftjis',\n 'windows31j': 'shiftjis',\n 'ms31j': 'shiftjis',\n 'xsjis': 'shiftjis',\n 'windows932': 'shiftjis',\n 'ms932': 'shiftjis',\n '932': 'shiftjis',\n 'cp932': 'shiftjis',\n\n 'eucjp': {\n type: '_dbcs',\n table: function() { return require('./tables/eucjp.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n 'gb2312': 'cp936',\n 'gb231280': 'cp936',\n 'gb23121980': 'cp936',\n 'csgb2312': 'cp936',\n 'csiso58gb231280': 'cp936',\n 'euccn': 'cp936',\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n 'windows936': 'cp936',\n 'ms936': 'cp936',\n '936': 'cp936',\n 'cp936': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json') },\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n 'gbk': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n },\n 'xgbk': 'gbk',\n 'isoir58': 'gbk',\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n 'gb18030': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n gb18030: function() { return require('./tables/gb18030-ranges.json') },\n encodeSkipVals: [0x80],\n encodeAdd: {'€': 0xA2E3},\n },\n\n 'chinese': 'gb18030',\n\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n 'windows949': 'cp949',\n 'ms949': 'cp949',\n '949': 'cp949',\n 'cp949': {\n type: '_dbcs',\n table: function() { return require('./tables/cp949.json') },\n },\n\n 'cseuckr': 'cp949',\n 'csksc56011987': 'cp949',\n 'euckr': 'cp949',\n 'isoir149': 'cp949',\n 'korean': 'cp949',\n 'ksc56011987': 'cp949',\n 'ksc56011989': 'cp949',\n 'ksc5601': 'cp949',\n\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n // \n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n 'windows950': 'cp950',\n 'ms950': 'cp950',\n '950': 'cp950',\n 'cp950': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json') },\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n 'big5': 'big5hkscs',\n 'big5hkscs': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n encodeSkipVals: [\n // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,\n ],\n },\n\n 'cnbig5': 'big5hkscs',\n 'csbig5': 'big5hkscs',\n 'xxbig5': 'big5hkscs',\n};\n","\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n require(\"./internal\"),\n require(\"./utf32\"),\n require(\"./utf16\"),\n require(\"./utf7\"),\n require(\"./sbcs-codec\"),\n require(\"./sbcs-data\"),\n require(\"./sbcs-data-generated\"),\n require(\"./dbcs-codec\"),\n require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i];\n for (var enc in module)\n if (Object.prototype.hasOwnProperty.call(module, enc))\n exports[enc] = module[enc];\n}\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true},\n cesu8: { type: \"_internal\", bomAware: true},\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true},\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n this.enc = codecOptions.encodingName;\n this.bomAware = codecOptions.bomAware;\n\n if (this.enc === \"base64\")\n this.encoder = InternalEncoderBase64;\n else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\"; // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8;\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {\n this.decoder = InternalDecoderCesu8;\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n this.decoder = new StringDecoder(codec.enc);\n}\n\nInternalDecoder.prototype.write = function(buf) {\n if (!Buffer.isBuffer(buf)) {\n buf = Buffer.from(buf);\n }\n\n return this.decoder.write(buf);\n}\n\nInternalDecoder.prototype.end = function() {\n return this.decoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n str = this.prevStr + str;\n var completeQuads = str.length - (str.length % 4);\n this.prevStr = str.slice(completeQuads);\n str = str.slice(0, completeQuads);\n\n return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80)\n buf[bufIdx++] = charCode;\n else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n }\n return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n this.acc = 0;\n this.contBytes = 0;\n this.accBytes = 0;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n res = '';\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i];\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode;\n contBytes = 0;\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte);\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F;\n contBytes = 1; accBytes = 1;\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F;\n contBytes = 2; accBytes = 1;\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode;\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f);\n contBytes--; accBytes++;\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0)\n res += this.defaultCharUnicode;\n else if (accBytes === 3 && acc < 0x800)\n res += this.defaultCharUnicode;\n else\n // Actually add character.\n res += String.fromCharCode(acc);\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode;\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n var res = 0;\n if (this.contBytes > 0)\n res += this.defaultCharUnicode;\n return res;\n}\n","\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€����…�����������‘’“â€â€¢â€“—�������� à¸à¸‚ฃคฅฆงจฉชซฌà¸à¸Žà¸à¸à¸‘ฒณดตถทธนบปผà¸à¸žà¸Ÿà¸ มยรฤลฦวศษสหฬà¸à¸®à¸¯à¸°à¸±à¸²à¸³à¸´à¸µà¸¶à¸·à¸¸à¸¹à¸ºï¿½ï¿½ï¿½ï¿½à¸¿à¹€à¹à¹‚ใไๅๆ็่้๊๋์à¹à¹Žà¹à¹à¹‘๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“â€â€¢â€“—�™š›śťžź ˇ˘Å¤Ą¦§¨©Ş«¬Â®Ż°±˛ł´µ¶·¸ąş»ĽËľżŔÃÂĂÄĹĆÇČÉĘËĚÃÃŽÄŽÄŃŇÓÔÅÖ×ŘŮÚŰÜÃŢßŕáâăäĺćçÄéęëěÃîÄđńňóôőö÷řůúűüýţ˙\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋÐђ‘’“â€â€¢â€“—�™љ›њќћџ ЎўЈ¤Ò¦§Ð©Є«¬Â®Ї°±Ііґµ¶·ё№є»јЅѕїÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑ\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“â€â€¢â€“—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖ×ØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡�‰�‹�����‘’“â€â€¢â€“—�™�›���� ΅Ά£¤¥¦§¨©�«¬Â®―°±²³΄µ¶·ΈΉΊ»Ό½ΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏςστυφχψωϊϋόÏώ�\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“â€â€¢â€“—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßà áâãäåæçèéêëìÃîïğñòóôõö÷øùúûüışÿ\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹�����‘’“â€â€¢â€“—˜™�›���� ¡¢£₪¥¦§¨©×«¬Â®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀×ׂ׃װױײ׳״�������×בגדהוזחטיךכל××ž×Ÿ× ×¡×¢×£×¤×¥×¦×§×¨×©×ªï¿½ï¿½â€Žâ€ï¿½\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“â€â€¢â€“—ک™ڑ›œ‌â€ÚºÂ ،¢£¤¥¦§¨©ھ«¬Â®¯°±²³´µ¶·¸¹؛»¼½¾؟ÛءآأؤإئابةتثجØخدذرزسشصض×طظعغـÙقكà لâمنهوçèéêëىيîïًٌÙَôÙÙ÷ّùْûü‎â€Û’\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“â€â€¢â€“—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬Â®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲÅŚŪÜŻŽßąįÄćäåęēÄéźėģķīļšńņóÅõö÷ųłśūüżž˙\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“â€â€¢â€“—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃÂĂÄÅÆÇÈÉÊË̀ÃÃŽÃÄÃ‘Ì‰Ã“Ã”Æ Ã–Ã—Ã˜Ã™ÃšÃ›ÃœÆ¯ÌƒÃŸÃ Ã¡Ã¢ÄƒÃ¤Ã¥Ã¦Ã§Ã¨Ã©ÃªÃ«ÌÃîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖ×ØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ Ą˘Å¤ĽŚ§¨ŠŞŤŹÂŽŻ°ą˛ł´ľśˇ¸šşťźËžżŔÃÂĂÄĹĆÇČÉĘËĚÃÃŽÄŽÄŃŇÓÔÅÖ×ŘŮÚŰÜÃŢßŕáâăäĺćçÄéęëěÃîÄđńňóôőö÷řůúűüýţ˙\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ Ħ˘£¤�Ĥ§¨İŞĞĴÂ�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÃÂ�ÄĊĈÇÈÉÊËÌÃÃŽÃï¿½Ã‘Ã’Ã“Ã”Ä Ã–Ã—ÄœÃ™ÃšÃ›ÃœÅ¬ÅœÃŸÃ Ã¡Ã¢ï¿½Ã¤Ä‹Ä‰Ã§Ã¨Ã©ÃªÃ«Ã¬Ãîï�ñòóôġö÷ÄùúûüÅÅË™\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ĄĸŖ¤ĨĻ§¨ŠĒĢŦÂŽ¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÃÂÃÄÅÆĮČÉĘËĖÃÎĪÄŅŌĶÔÕÖ×ØŲÚÛÜŨŪßÄáâãäåæįÄéęëėÃîīđņÅķôõö÷øųúûüũū˙\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ÐЂЃЄЅІЇЈЉЊЋЌÂÐŽÐÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑ№ёђѓєѕіїјљњћќ§ўџ\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ���¤�������،Â�������������؛���؟�ءآأؤإئابةتثجØخدذرزسشصضطظعغ�����ـÙقكلمنهوىيًٌÙÙŽÙÙّْ�������������\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ‘’£€₯¦§¨©ͺ«¬Â�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏςστυφχψωϊϋόÏώ�\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ �¢£¤¥¦§¨©×«¬Â®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗×בגדהוזחטיךכל××ž×Ÿ× ×¡×¢×£×¤×¥×¦×§×¨×©×ªï¿½ï¿½â€Žâ€ï¿½\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßà áâãäåæçèéêëìÃîïğñòóôõö÷øùúûüışÿ\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ĄĒĢĪĨĶ§ĻÄŠŦŽÂŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÃÂÃÄÅÆĮČÉĘËĖÃÃŽÃÃŅŌÓÔÕÖŨØŲÚÛÜÃÞßÄáâãäåæįÄéęëėÃîïðņÅóôõöũøųúûüýþĸ\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ à¸à¸‚ฃคฅฆงจฉชซฌà¸à¸Žà¸à¸à¸‘ฒณดตถทธนบปผà¸à¸žà¸Ÿà¸ มยรฤลฦวศษสหฬà¸à¸®à¸¯à¸°à¸±à¸²à¸³à¸´à¸µà¸¶à¸·à¸¸à¸¹à¸ºï¿½ï¿½ï¿½ï¿½à¸¿à¹€à¹à¹‚ใไๅๆ็่้๊๋์à¹à¹Žà¹à¹à¹‘๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ â€Â¢Â£Â¤â€žÂ¦Â§Ã˜Â©Å–«¬Â®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲÅŚŪÜŻŽßąįÄćäåęēÄéźėģķīļšńņóÅõö÷ųłśūüżž’\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲÂÂ®Å¸á¸žá¸ŸÄ Ä¡á¹€á¹Â¶á¹–áºá¹—ẃṠỳẄẅṡÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃŴÑÒÓÔÕÖṪØÙÚÛÜÃŶßà áâãäåæçèéêëìÃîïŵñòóôõöṫøùúûüýŷÿ\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ¡¢£€¥Š§š©ª«¬Â®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖ×ØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ĄąÅ€„Š§š©Ș«ŹÂźŻ°±ČłŽâ€Â¶Â·Å¾Äș»ŒœŸżÀÃÂĂÄĆÆÇÈÉÊËÌÃÃŽÃÄŃÒÓÔÅÖŚŰÙÚÛÜĘȚßà áâăäćæçèéêëìÃîïđńòóôőöśűùúûüęțÿ\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Çüéâäà åçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáÃóúñѪº¿âŒÂ¬Â½Â¼Â¡Â«Â»â–‘▒▓│┤╡╢╖╕╣║╗â•â•œâ•›â”└┴┬├─┼╞╟╚╔╩╦╠â•â•¬â•§â•¨â•¤â•¥â•™â•˜â•’╓╫╪┘┌█▄▌â–▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â¿Â²â–  \"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπÏσςτυφχψ░▒▓│┤╡╢╖╕╣║╗â•â•œâ•›â”└┴┬├─┼╞╟╚╔╩╦╠â•â•¬â•§â•¨â•¤â•¥â•™â•˜â•’╓╫╪┘┌█▄▌â–▀ωάÎήϊίόÏϋώΆΈΉΊΌΎÎ±≥≤ΪΫ÷≈°∙·√â¿Â²â–  \"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ĆüéÄäģåćłēŖŗīŹÄÅÉæÆÅöĢ¢ŚśÖÜø£ØפĀĪóŻżźâ€Â¦Â©Â®Â¬Â½Â¼Å«»░▒▓│┤ĄČĘĖ╣║╗â•Ä®Å â”└┴┬├─┼ŲŪ╚╔╩╦╠â•â•¬Å½Ä…Äęėįšųūž┘┌█▄▌â–▀ÓßŌŃõÕµńĶķĻļņĒŅ’±“¾¶§÷„°∙·¹³²■ \"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Çüéâäà åçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áÃóúñѪº¿®¬½¼¡«»░▒▓│┤ÃÂÀ©╣║╗â•Â¢Â¥â”└┴┬├─┼ãÃ╚╔╩╦╠â•â•¬Â¤Ã°ÃÊËÈıÃÃŽÃ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýï´Â±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäůćçłëÅőîŹÄĆÉĹĺôöĽľŚśÖÜŤťÅ×ÄáÃóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÃÂĚŞ╣║╗â•Å»Å¼â”└┴┬├─┼Ăă╚╔╩╦╠â•â•¬Â¤Ä‘ÄĎËÄŇÃÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÃţ´Â˲ˇ˘§÷¸°¨˙űŘř■ \"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ђЂѓЃёÐєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџÐюЮъЪаÐбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗â•Ð¹Ð™â”└┴┬├─┼кК╚╔╩╦╠â•â•¬Â¤Ð»Ð›Ð¼ÐœÐ½ÐоОп┘┌█▄ПÑ▀ЯрРÑСтТуУжЖвВьЬ№ÂыЫзЗшШÑÐщЩчЧ§■ \"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"×בגדהוזחטיךכל××ž×Ÿ× ×¡×¢×£×¤×¥×¦×§×¨×©×ªï¿½Â£ï¿½Ã—ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Â®Â¬Â½Â¼ï¿½Â«Â»â–‘â–’â–“â”‚â”¤ï¿½ï¿½ï¿½Â©â•£â•‘â•—â•Â¢Â¥â”└┴┬├─┼��╚╔╩╦╠â•â•¬Â¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â”˜â”Œâ–ˆâ–„¦�▀������µ�������¯´Â±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Çüéâäà åçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáÃóúñÑĞ𿮬½¼¡«»░▒▓│┤ÃÂÀ©╣║╗â•Â¢Â¥â”└┴┬├─┼ãÃ╚╔╩╦╠â•â•¬Â¤ÂºÂªÃŠÃ‹Ãˆï¿½ÃÃŽÃ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´Â±�¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Çüéâäà åçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áÃóúñѪº¿®¬½¼¡«»░▒▓│┤ÃÂÀ©╣║╗â•Â¢Â¥â”└┴┬├─┼ãÃ╚╔╩╦╠â•â•¬Â¤Ã°ÃÊËÈ€ÃÃŽÃ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýï´Â±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Çüéâãà ÃçêÊèÃÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáÃóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗â•â•œâ•›â”└┴┬├─┼╞╟╚╔╩╦╠â•â•¬â•§â•¨â•¤â•¥â•™â•˜â•’╓╫╪┘┌█▄▌â–▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â¿Â²â–  \"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Çüéâäà åçêëèÃðÞÄÅÉæÆôöþûÃýÖÜø£Ø₧ƒáÃóúÃÃÓÚ¿âŒÂ¬Â½Â¼Â¡Â«Â»â–‘▒▓│┤╡╢╖╕╣║╗â•â•œâ•›â”└┴┬├─┼╞╟╚╔╩╦╠â•â•¬â•§â•¨â•¤â•¥â•™â•˜â•’╓╫╪┘┌█▄▌â–▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â¿Â²â–  \"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"×בגדהוזחטיךכל××ž×Ÿ× ×¡×¢×£×¤×¥×¦×§×¨×©×ªÂ¢Â£Â¥â‚§Æ’Ã¡ÃóúñѪº¿âŒÂ¬Â½Â¼Â¡Â«Â»â–‘▒▓│┤╡╢╖╕╣║╗â•â•œâ•›â”└┴┬├─┼╞╟╚╔╩╦╠â•â•¬â•§â•¨â•¤â•¥â•™â•˜â•’╓╫╪┘┌█▄▌â–▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â¿Â²â–  \"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâÂà ¶çêëèïî‗À§ÉÈÊôËÃûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯ÎâŒÂ¬Â½Â¼Â¾Â«Â»â–‘▒▓│┤╡╢╖╕╣║╗â•â•œâ•›â”└┴┬├─┼╞╟╚╔╩╦╠â•â•¬â•§â•¨â•¤â•¥â•™â•˜â•’╓╫╪┘┌█▄▌â–▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â¿Â²â–  \"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$Ùª&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴â”┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� Âﺂ£¤ﺄ��ﺎïºïº•ïº™ØŒïºïº¡ïº¥Ù ١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀïºïºƒïº…ﻊﺋïºïº‘ﺓﺗﺛﺟﺣﺧﺩﺫïºïº¯ïº³ïº·ïº»ïº¿ï»ï»…ﻋï»Â¦Â¬Ã·Ã—ﻉـﻓﻗﻛﻟﻣﻧﻫï»ï»¯ï»³ïº½ï»Œï»Žï»ï»¡ï¹½Ù‘ﻥﻩﻬﻰﻲï»ï»•ï»µï»¶ï»ï»™ï»±â– �\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Çüéâäà åçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáÃóúñѪº¿âŒÂ¬Â½Â¼Â¡Â«Â¤â–‘▒▓│┤╡╢╖╕╣║╗â•â•œâ•›â”└┴┬├─┼╞╟╚╔╩╦╠â•â•¬â•§â•¨â•¤â•¥â•™â•˜â•’╓╫╪┘┌█▄▌â–▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â¿Â²â–  \"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗â•â•œâ•›â”└┴┬├─┼╞╟╚╔╩╦╠â•â•¬â•§â•¨â•¤â•¥â•™â•˜â•’╓╫╪┘┌█▄▌â–▀рÑтуфхцчшщъыьÑÑŽÑÐёЄєЇїЎў°∙·√№¤■ \"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Î²³ά£ÎήίϊÎÏŒÏΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜÎ╣║╗â•ÎžÎŸâ”└┴┬├─┼ΠΡ╚╔╩╦╠â•â•¬Î£Î¤Î¥Î¦Î§Î¨Î©Î±Î²Î³â”˜â”Œâ–ˆâ–„δε▀ζηθικλμνξοπÏσςτ΄Â±υφχ§ψ΅°¨ωϋΰώ■ \"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ¡¢£¤¥¦§¨©ª«¬Â®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÎÊÑÒÓÔÕÖ×ØÙÚÛÜÃŽßà áâãäåæçèéêëìÃîïšñòóôõö÷øùúûüýžÿ\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ﺈ×÷ﹱˆ■│─â”┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎï»ï»ï»¶ï»¸ï»ºï»¼Â ¤ﺋﺑﺗﺛﺟﺣ،Âﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجØخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـÙقكلمنهوىيًٌÙÙŽÙÙّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ÐЂÒЄЅІЇЈЉЊЋЌÂÐŽÐÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑ№ёђґєѕіїјљњћќ§ўџ\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗â•â•œâ•›â”└┴┬├─┼╞╟╚╔╩╦╠â•â•¬â•§â•¨â•¤â•¥â•™â•˜â•’╓╫╪┘┌█▄▌â–▀рÑтуфхцчшщъыьÑÑŽÑÐÑ‘ÒґЄєІіЇї·√№¤■ \"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ¡¢£¤¥¦§œ©ª«¬Â®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÃÂĂÄÅÆÇÈÉÊË̀ÃÃŽÃÄÃ‘Ì‰Ã“Ã”Æ Ã–Ã—Ã˜Ã™ÃšÃ›ÃœÆ¯ÌƒÃŸÃ Ã¡Ã¢ÄƒÃ¤Ã¥Ã¦Ã§Ã¨Ã©ÃªÃ«ÌÃîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ àºàº‚ຄງຈສຊàºàº”ຕຖທນບປຜàºàºžàºŸàº¡àº¢àº£àº¥àº§àº«àºàº®ï¿½ï¿½ï¿½àº¯àº°àº²àº³àº´àºµàº¶àº·àº¸àº¹àº¼àº±àº»àº½ï¿½ï¿½ï¿½à»€à»à»‚ໃໄ່້໊໋໌à»à»†ï¿½à»œà»â‚����������������à»à»‘໒໓໔໕໖໗໘໙��¢¬¦�\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������่à¸à¸‚ฃคฅฆงจฉชซฌà¸à¸Žà¸à¸à¸‘ฒณดตถทธนบปผà¸à¸žà¸Ÿà¸ มยรฤลฦวศษสหฬà¸à¸®à¸¯à¸°à¸±à¸²à¸³à¸´à¸µà¸¶à¸·à¸¸à¸¹à¸ºà¹‰à¹Šà¹‹â‚¬à¸¿à¹€à¹à¹‚ใไๅๆ็่้๊๋์à¹à¹Žà¹à¹à¹‘๒๓๔๕๖๗๘๙๚๛¢¬¦ \"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“â€â€¢â€“—˜™š›œÂžŸ à¸à¸‚ฃคฅฆงจฉชซฌà¸à¸Žà¸à¸à¸‘ฒณดตถทธนบปผà¸à¸žà¸Ÿà¸ มยรฤลฦวศษสหฬà¸à¸®à¸¯à¸°à¸±à¸²à¸³à¸´à¸µà¸¶à¸·à¸¸à¸¹à¸ºï¿½ï¿½ï¿½ï¿½à¸¿à¹€à¹à¹‚ใไๅๆ็่้๊๋์à¹à¹Žà¹à¹à¹‘๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ¡¢£€¥¦§œ©ª«¬Â®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÃÂĂÄÅÆÇÈÉÊË̀ÃÃŽÃÄÃ‘Ì‰Ã“Ã”Æ Ã–Ã—Ã˜Ã™ÃšÃ›ÃœÆ¯ÌƒÃŸÃ Ã¡Ã¢ÄƒÃ¤Ã¥Ã¦Ã§Ã¨Ã©ÃªÃ«ÌÃîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑âˆÅ¡âˆ«ÂªÂºâ„¦Å¾Ã¸Â¿Â¡Â¬âˆšÆ’≈Ć«Č… ÀÃÕŒœÄ—“â€â€˜â€™Ã·â—Šï¿½Â©â„¤‹›Æ»–·‚„‰ÂćÃÄÈÃÃŽÃÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“â€â€˜â€™Ã·â€žÐŽÑžÐÑŸâ„–ÐÑ‘ÑабвгдежзийклмнопрÑтуфхцчшщъыьÑю¤\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Ĺ²É³ÖÜ΅à âä΄¨çéèê룙î‰ôö¦Âùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάάΟΡ≈Τ«»… ΥΧΆΈœ–―“â€â€˜â€™Ã·Î‰ÎŠÎŒÎŽÎήίόÎÏαβψδεφγηιξκλμνοπώÏστθωςχυζϊϋÎΰ�\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûü𢣧•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑âˆÏ€âˆ«ÂªÂºâ„¦Ã¦Ã¸Â¿Â¡Â¬âˆšÆ’≈∆«»… ÀÃÕŒœ–—“â€â€˜â€™Ã·â—ŠÃ¿Å¸â„¤ÃðÞþý·‚„‰ÂÊÃËÈÃÃŽÃÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸Ë˛ˇ\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑âˆÏ€âˆ«ÂªÂºâ„¦Ã¦Ã¸Â¿Â¡Â¬âˆšÆ’≈∆«»… ÀÃÕŒœ–—“â€â€˜â€™Ã·â—ŠÃ¿Å¸â„¤‹›ï¬ï¬‚‡·‚„‰ÂÊÃËÈÃÃŽÃÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸Ë˛ˇ\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑âˆÏ€âˆ«ÂªÂºâ„¦ÄƒÅŸÂ¿Â¡Â¬âˆšÆ’≈∆«»… ÀÃÕŒœ–—“â€â€˜â€™Ã·â—ŠÃ¿Å¸â„¤‹›Ţţ‡·‚„‰ÂÊÃËÈÃÃŽÃÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸Ë˛ˇ\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"«»…ï¢ï¢’“â€ï¢™ï¿½â€¢ï¢„ï¢ï¢ï¢“‘’� à¸à¸‚ฃคฅฆงจฉชซฌà¸à¸Žà¸à¸à¸‘ฒณดตถทธนบปผà¸à¸žà¸Ÿà¸ มยรฤลฦวศษสหฬà¸à¸®à¸¯à¸°à¸±à¸²à¸³à¸´à¸µà¸¶à¸·à¸¸à¸¹à¸ºï»¿â€‹â€“—฿เà¹à¹‚ใไๅๆ็่้๊๋์à¹â„¢à¹à¹à¹‘๒๓๔๕๖๗๘๙®©����\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑âˆÏ€âˆ«ÂªÂºâ„¦Ã¦Ã¸Â¿Â¡Â¬âˆšÆ’≈∆«»… ÀÃÕŒœ–—“â€â€˜â€™Ã·â—ŠÃ¿Å¸ÄžÄŸÄ°Ä±ÅžÅŸâ€¡Â·â€šâ€žâ€°Ã‚ÊÃËÈÃÃŽÃÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸Ë˛ˇ\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯ†°Ò£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“â€â€˜â€™Ã·â€žÐŽÑžÐÑŸâ„–ÐÑ‘ÑабвгдежзийклмнопрÑтуфхцчшщъыьÑю¤\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌â”└┘├┤┬┴┼▀▄█▌â–░▒▓⌠■∙√≈≤≥ ⌡°²·÷â•â•‘╒ё╓╔╕╖╗╘╙╚╛╜â•â•žâ•Ÿâ• â•¡Ð╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопÑÑ€ÑтужвьызшÑщчъЮÐБЦДЕФГХИЙКЛМÐОПЯРСТУЖВЬЫЗШÐЩЧЪ\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌â”└┘├┤┬┴┼▀▄█▌â–░▒▓⌠■∙√≈≤≥ ⌡°²·÷â•â•‘╒ёє╔ії╗╘╙╚╛ґâ•â•žâ•Ÿâ• â•¡ÐЄ╣ІЇ╦╧╨╩╪Ò╬©юабцдефгхийклмнопÑÑ€ÑтужвьызшÑщчъЮÐБЦДЕФГХИЙКЛМÐОПЯРСТУЖВЬЫЗШÐЩЧЪ\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌â”└┘├┤┬┴┼▀▄█▌â–░▒▓⌠■∙√≈≤≥ ⌡°²·÷â•â•‘╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ÐЄ╣ІЇ╦╧╨╩╪ÒЎ©юабцдефгхийклмнопÑÑ€ÑтужвьызшÑщчъЮÐБЦДЕФГХИЙКЛМÐОПЯРСТУЖВЬЫЗШÐЩЧЪ\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“â€â€¢â€“—�™�›�����ӯӮё¤ӣ¦§���«¬Â®�°±²Ð�Ӣ¶·�№�»���©юабцдефгхийклмнопÑÑ€ÑтужвьызшÑщчъЮÐБЦДЕФГХИЙКЛМÐОПЯРСТУЖВЬЫЗШÐЩЧЪ\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ �և։)(»«—.Õ,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽÕÔ¾Õ®Ô¿Õ¯Õ€Õ°ÕձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռÕÕ½ÕŽÕ¾ÕÕ¿ÕÖ€Õ‘ÖՒւՓփՔքՕօՖֆ՚�\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺÐђ‘’“â€â€¢â€“—�™љ›њқһџ ҰұӘ¤Ө¦§Ð©Ғ«¬Â®Ү°±Ііөµ¶·ё№ғ»әҢңүÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑ\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000ÚỤ\\u0003ỪỬỮ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010ỨỰỲỶỸÃá»´\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÃẠẶẬÈẺẼÉẸỆÌỈĨÃá»ŠÃ’á»ŽÃ•Ã“á»Œá»˜á»œá»žá» á»šá»¢Ã™á»¦Å¨Â Ä‚Ã‚ÃŠÃ”Æ Æ¯ÄăâêôơưđẰ̀̉̃Ị̀à ảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấáºÃ¨á»‚ẻẽéẹá»á»ƒá»…ếệìỉỄẾỒĩÃịòỔá»ÃµÃ³á»á»“ổỗốộá»á»Ÿá»¡á»›á»£Ã¹á»–ủũúụừá»á»¯á»©á»±á»³á»·á»¹Ã½á»µá»\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“â€â€¢â€“—˜™š›œÂžŸ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿áƒáƒ‘გდევზთიკლმნáƒáƒžáƒŸáƒ სტუფქღყშჩცძწáƒáƒ®áƒ¯áƒ°áƒ±áƒ²áƒ³áƒ´áƒµáƒ¶Ã§Ã¨Ã©ÃªÃ«Ã¬Ãîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“â€â€¢â€“—˜™š›œÂžŸ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿áƒáƒ‘გდევზჱთიკლმნჲáƒáƒžáƒŸáƒ სტჳუფქღყშჩცძწáƒáƒ®áƒ´áƒ¯áƒ°áƒµÃ¦Ã§Ã¨Ã©ÃªÃ«Ã¬Ãîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Ò–Ò’Ó®Ò“â€žâ€¦Ò¶Ò®Ò²Ò¯Ò Ó¢Ò¢ÒšÒºÒ¸Ò—â€˜â€™â€œâ€â€¢â€“—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ð©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫÒÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑ\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001Ẳ\\u0003\\u0004ẴẪ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Ỷ\\u0015\\u0016\\u0017\\u0018Ỹ\\u001a\\u001b\\u001c\\u001dá»´\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆá»á»’ỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩáºáº½áº¹áº¿á»á»ƒá»…á»‡á»‘á»“á»•á»—á» Æ á»™á»á»Ÿá»‹á»°á»¨á»ªá»¬Æ¡á»›Æ¯Ã€ÃÂÃẢĂẳẵÈÉÊẺÌÃĨỳÄứÒÓÔạỷừá»Ã™Ãšá»¹á»µÃỡưà áâãảăữẫèéêẻìÃĩỉđựòóôõá»á»á»¥Ã¹ÃºÅ©á»§Ã½á»£á»®\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#Â¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[Â¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽ‘’“”•–—˜™š›œÂžŸ ÀÂÈÊËÎôˋˆ¨˜ÙÛ₤¯Ãý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúà èòùäëöüÅîØÆåÃøæÄìÖÜÉïßÔÃÃãÃðÃÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑âˆÏ€âˆ«ÂªÂºâ„¦Ã¦Ã¸Â¿Â¡Â¬âˆšÆ’≈∆«»… ÀÃÕŒœ–—“â€â€˜â€™Ã·â—ŠÃ¿Å¸â„¤‹›ï¬ï¬‚‡·‚„‰ÂÊÃËÈÃÃŽÃÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸Ë˛ˇ\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"���������������������������������à¸à¸‚ฃคฅฆงจฉชซฌà¸à¸Žà¸à¸à¸‘ฒณดตถทธนบปผà¸à¸žà¸Ÿà¸ มยรฤลฦวศษสหฬà¸à¸®à¸¯à¸°à¸±à¸²à¸³à¸´à¸µà¸¶à¸·à¸¸à¸¹à¸ºï¿½ï¿½ï¿½ï¿½à¸¿à¹€à¹à¹‚ใไๅๆ็่้๊๋์à¹à¹Žà¹à¹à¹‘๒๓๔๕๖๗๘๙๚๛����\"\n }\n}","\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '�';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n str = \"\" + (str || \"\"); // Ensure string.\n\n var encoder = iconv.getEncoder(encoding, options);\n\n var res = encoder.write(str);\n var trail = encoder.end();\n \n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n if (typeof buf === 'string') {\n if (!iconv.skipDecodeWarning) {\n console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n iconv.skipDecodeWarning = true;\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n }\n\n var decoder = iconv.getDecoder(encoding, options);\n\n var res = decoder.write(buf);\n var trail = decoder.end();\n\n return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n try {\n iconv.getCodec(enc);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n if (!iconv.encodings)\n iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n \n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = iconv._canonicalizeEncoding(encoding);\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {};\n while (true) {\n var codec = iconv._codecDataCache[enc];\n if (codec)\n return codec;\n\n var codecDef = iconv.encodings[enc];\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef;\n break;\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef)\n codecOptions[key] = codecDef[key];\n\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n \n enc = codecDef.type;\n break;\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n codec = new codecDef(codecOptions, iconv);\n\n iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n return codec;\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n }\n }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n encoder = new codec.encoder(options, codec);\n\n if (codec.bomAware && options && options.addBOM)\n encoder = new bomHandling.PrependBOM(encoder, options);\n\n return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n decoder = new codec.decoder(options, codec);\n\n if (codec.bomAware && !(options && options.stripBOM === false))\n decoder = new bomHandling.StripBOM(decoder, options);\n\n return decoder;\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\niconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {\n if (iconv.supportsStreams)\n return;\n\n // Dependency-inject stream module to create IconvLite stream classes.\n var streams = require(\"./streams\")(stream_module);\n\n // Not public API yet, but expose the stream classes.\n iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;\n iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;\n\n // Streaming API.\n iconv.encodeStream = function encodeStream(encoding, options) {\n return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n }\n\n iconv.decodeStream = function decodeStream(encoding, options) {\n return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n }\n\n iconv.supportsStreams = true;\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar stream_module;\ntry {\n stream_module = require(\"stream\");\n} catch (e) {}\n\nif (stream_module && stream_module.Transform) {\n iconv.enableStreamingAPI(stream_module);\n\n} else {\n // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n iconv.encodeStream = iconv.decodeStream = function() {\n throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\");\n };\n}\n\nif (\"Ä€\" != \"\\u0100\") {\n console.error(\"iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n"],"names":["Telnet","sd","config","callbacks","_classCallCheck","this","sender","connected","events","event","_createClass","key","value","initialSender","addrBuf","address","host","type","port","buffer","data","Uint8Array","length","set","send","streamInitialHeader","success","fire","streamHeader","rd","marker","Exception","close","sendData","sendClose","initialFieldDef","Host","name","description","example","readonly","suggestions","input","verify","d","Error","addr","common","Encoding","i","Wizard","info","preset","session","keptSessions","streams","subs","controls","history","hasStarted","step","get","resolve","stepInitialPrompt","stepErrorDone","title","message","command","configInput","sessionData","_ref","self","parsedConfig","charset","concat","apply","_toConsumableArray","initialized","stepWaitForEstablishWait","commandHandler","stepSuccessfulDone","build","ui","save","Date","_asyncToGenerator","_regeneratorRuntime","_callee","readed","_context","prev","next","reader","sent","TextDecoder","decode","stop","r","request","buildCommand","encoding","stepWaitForAcceptWait","hosts","search","sugg","push","meta","Executor","_Wizard","_inherits","_super","_createSuper","_this","call","presets","Command","launcher","split","e","execute","insertMeta","cmdWill","cmdWont","cmdDo","cmdDont","cmdIAC","unknownTermTypeSendData","Parser","flusher","options","echoEnabled","suppressGoAhead","nawsAccpeted","current","_run","_handleCmd","_handleSubNego","_handleTermTypeSubNego","cmd","option","o","sendNego","willCmd","b","abrupt","sendSubNego","_x","arguments","_callee2","endExec","_context2","t0","handleTermTypeSubNego","_x2","oldVal","newVal","_callee3","dim","dimData","dimBytes","_context3","handleSubNego","t1","handleOption","action","setEcho","_action","sendDeny","getWindowDim","DataView","ArrayBuffer","setUint16","cols","rows","sendWillSubNego","_x3","_callee4","_context4","found","slice","handleCmd","cb","feed","Control","color","_this2","colorM","colors","enc","TextEncoder","charsetDecoder","charsetEncoder","dStr","encode","dec","stream","iconv","closer","closed","localEchoEnabled","subscribe","enable","windowDim","parser","runWait","run","place","Promise","_reject","_callee5","_context5","forget","reject","requestWindowResize","_isOn","start","currentLen","iacPos","searchNextIAC","sendSeg","dark","cc","c","getTabIndex","tabIndex","field","verified","modified","inputted","highlighted","error","autofocus","blockedSuggestionValue","blockingSuggestion","nextTabIndex","nextSubTabIndex","subIndex","suggestion","selected","orignalValue","orignalValueStored","holding","needsReset","reset","clearStored","softReset","hold","toHold","storeOrignal","val","loadStored","defaultValue","select","index","fieldValue","cursorUp","cursorDown","cursorMove","toUp","reload","v","fields","disableSuggestionsForInput","enableInputSuggestionsOnAllInput","suggestionsPending","reloadSuggestions","resetSuggestions","force","holdSuggestions","moveSuggestionsCursor","selectSuggestion","curentSuggestion","selectedSuggestionIndex","directives","focus","inserted","el","binding","props","connector","Object","currentConnector","currentConnectorCloseWait","alert","clearHightlightTimeout","actionText","cancellable","submittable","submitting","preloaderIDName","fieldValueBackup","submitterTabIndex","working","disabled","cancelled","watch","oldV","newV","closeWizard","runWizard","mounted","beforeDestroy","_this3","methods","sendCancel","_this4","$emit","cancel","buildCurrent","getConnector","wizard","started","inputs","f","fieldBuilder","_this5","waiter","_this6","control","toLowerCase","_callee6","_context6","clearFieldValueBackup","t2","getFieldValues","mod","createFieldValueBackup","backup","clearFieldHighlights","delayedClearFieldHighlights","timeout","clearTimeout","setTimeout","restoreFieldValuesFromBackup","except","expandTextarea","target","style","height","scrollHeight","importFile","files","FileReader","onload","s","nextSibling","tagName","result","dispatchEvent","Event","readAsText","verifyAll","focused","clickInputSuggestion","applySuggestion","applySuggestionAndVerify","changed","triggerSuggestions","preventDefault","submitAndGetNext","_this7","_callee7","_context7","submit","cancelAndGetNext","_this8","_callee8","_context8","_vm","_c","_self","staticClass","attrs","on","class","$event","_v","_e","big","_s","require","_l","highlight","rawName","expression","domProps","composing","$set","Array","isArray","_i","$$a","$$el","$$c","checked","$$i","staticStyle","$$selectedVal","prototype","filter","map","_value","multiple","oKey","_defineProperty","_q","sKey","components","ConnectWidget","StatusWidget","Connector","tabs","Tabs","TabWindow","screens","Screens","hostPath","String","query","connection","commands","presetData","restrictedToPresets","Boolean","viewPort","ctx","connectionStatusDisconnected","connectionStatusConnected","buildEmptyHistory","isClosed","inboundPerSecond","outboundPerSecond","trafficPreSecondNextUpdate","inboundPre10Seconds","outboundPre10Seconds","trafficPre10sNextUpdate","inboundHistory","outboundHistory","trafficSamples","delayHistory","delaySamples","delayPerInterval","rec","oldStore","localStorage","getItem","setItem","removeItem","JSON","parse","History","h","stringify","knowns","all","home_history","ticker","windows","delay","connect","socket","update","time","getTime","status","inbound","outbound","classStyle","windowClass","connecting","traffic","inb","outb","echo","ECHO_FAILED","avgDelay","Math","round","Number","toLocaleString","expire","inputting","failed","code","historyRec","connectors","acquired","busy","mergePresets","tab","lastID","setInterval","tick","indexOf","connectLaunch","window","addEventListener","onBrowserClose","removeEventListener","clearInterval","msg","returnValue","now","closeAllWindow","showDelayWindow","showConnectWindow","showTabsWindow","getStreamThenRun","end","errStr","conn","runConnect","callback","connectNew","id","connectPreset","getConnectorByType","connectKnown","known","parseConnectLauncher","ll","llSeparatorIdx","done","launch","n","buildknownLauncher","exportKnowns","importKnowns","removeKnown","uid","del","clearSessionKnown","clearSession","cancelConnection","connectionSucceed","addToTab","switchTab","toolbar","indicator","level","updated","closing","removeFromTab","isLast","splice","to","enabled","retapTab","retap","closeTab","tabStopped","reason","tabMessage","toDismiss","text","tabWarning","tabInfo","tabUpdated","intensify","backendQueryRetryDelay","maxTimeDiff","updateIndicatorMaxDisplayTime","mainTemplate","trim","socksInterface","socksVerificationInterface","socksKeyTimeTruncater","initializeClient","landingRoot","document","getElementById","process","console","parentNode","removeChild","normalRoot","createElement","setAttribute","innerHTML","body","insertBefore","firstChild","rootEl","pageTitle","uiControlColor","ControlColor","buildSocketKey","_buildSocketKey","privateKey","cipher","trunc","toString","Vue","loading","Loading","auth","Auth","home","Home","location","protocol","pathname","hash","page","Presets","restricted","authErr","loadErr","Controls","telnetctl","sshctl","Commands","telnet","ssh","tabUpdateIndicator","width","renew","viewPortUpdaters","dimResizer","isErrored","classList","add","remove","tryInitialAuth","innerHeight","innerWidth","$nextTick","changeTitleInfo","newTitleInfo","resetTitleInfo","changeURLHash","newHash","getSocketAuthKey","rTime","finalKey","buildBackendSocketURLs","webSocket","keepAlive","buildSocket","dialTimeout","heartbeatInterval","Socket","executeHomeApp","authResult","onlyAllowPresetRemotes","heartbeat","doAuth","requestAuth","authKey","serverDate","xhr","btoa","fromCharCode","getResponseHeader","date","responseText","serverTime","clientTime","abs","fetch","atob","submitAuth","passphrase","_self2","updateTabTitleInfo","tabOpened","tabClosed","startApp","exports","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","join","num","output","base64","ieee754","customInspectSymbol","Symbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","isEncoding","actual","write","fromString","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","obj","isBuffer","undefined","numberIsNaN","fromObject","toPrimitive","assertSize","size","array","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","j","hexWrite","offset","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","defineProperty","enumerable","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","list","pos","swap16","swap32","swap64","equals","inspect","max","replace","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","stack","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","floor","ERR_BUFFER_OUT_OF_BOUNDS","received","isInteger","INVALID_BASE64_RE","Infinity","leadSurrogate","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","p","attachEvent","w","g","appendChild","createTextNode","l","cssText","B","offsetWidth","scrollLeft","scrollWidth","C","D","family","weight","stretch","context","F","G","H","M","fonts","N","font","q","load","J","K","L","test","navigator","vendor","exec","userAgent","I","O","t","then","P","race","readyState","detachEvent","u","k","z","A","hidden","module","encodeAdd","encodeSkipVals","gb18030","modules","hasOwnProperty","InternalCodec","codecOptions","encodingName","bomAware","encoder","InternalEncoderBase64","InternalEncoderCesu8","decoder","InternalDecoderCesu8","defaultCharUnicode","utf8","cesu8","unicode11utf8","ucs2","utf16le","binary","hex","_internal","InternalEncoder","InternalDecoder","StringDecoder","codec","prevStr","acc","contBytes","accBytes","completeQuads","bufIdx","charCode","stream_module","bomHandling","encodings","defaultCharSingleByte","getEncoder","trail","skipDecodeWarning","getDecoder","encodingExists","getCodec","toEncoding","fromEncoding","_codecDataCache","_canonicalizeEncoding","codecDef","addBOM","PrependBOM","stripBOM","StripBOM","enableStreamingAPI","supportsStreams","IconvLiteEncoderStream","IconvLiteDecoderStream","encodeStream","decodeStream","Transform","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","isNaN","log","LN2","copyProps","SafeBuffer","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function"],"sourceRoot":""}