{"mappings":"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","sources":["","main.js","lib/index.js","node_modules/preact/dist/preact.module.js","node_modules/preact/src/constants.js","node_modules/preact/src/util.js","node_modules/preact/src/options.js","node_modules/preact/src/create-element.js","node_modules/preact/src/component.js","node_modules/preact/src/diff/props.js","node_modules/preact/src/create-context.js","node_modules/preact/src/diff/children.js","node_modules/preact/src/diff/index.js","node_modules/preact/src/render.js","node_modules/preact/src/clone-element.js","node_modules/preact/src/diff/catch-error.js","node_modules/htm/dist/htm.module.js","node_modules/linkifyjs/dist/linkify.es.js","components/app.js","lib/irc.js","lib/client.js","lib/base64.js","lib/oauth2.js","components/buffer.js","lib/linkify.js","lib/ansi.js","state.js","store.js","components/membership.js","components/buffer-list.js","components/buffer-header.js","components/member-list.js","components/connect-form.js","components/join-form.js","components/help.js","keybindings.js","commands.js","components/network-form.js","components/auth-form.js","components/register-form.js","components/verify-form.js","components/settings-form.js","components/switcher-form.js","components/composer.js","components/scroll-manager.js","components/dialog.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $b2a774aae58c7b4e$var$n, $b2a774aae58c7b4e$export$41c562ebe57d11e2, $b2a774aae58c7b4e$var$u, $b2a774aae58c7b4e$export$a8257692ac88316c, $b2a774aae58c7b4e$var$i, $b2a774aae58c7b4e$var$o, $b2a774aae58c7b4e$var$r, $b2a774aae58c7b4e$var$f, $b2a774aae58c7b4e$var$e, $b2a774aae58c7b4e$var$c, $b2a774aae58c7b4e$var$s, $b2a774aae58c7b4e$var$a, $b2a774aae58c7b4e$var$h = {}, $b2a774aae58c7b4e$var$v = [], $b2a774aae58c7b4e$var$p = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i, $b2a774aae58c7b4e$var$y = Array.isArray;\nfunction $b2a774aae58c7b4e$var$d(n, l) {\n for(var u in l)n[u] = l[u];\n return n;\n}\nfunction $b2a774aae58c7b4e$var$_(n) {\n var l = n.parentNode;\n l && l.removeChild(n);\n}\nfunction $b2a774aae58c7b4e$export$c8a8987d4410bf2d(l, u, t) {\n var i, o, r, f = {};\n for(r in u)\"key\" == r ? i = u[r] : \"ref\" == r ? o = u[r] : f[r] = u[r];\n if (arguments.length > 2 && (f.children = arguments.length > 3 ? $b2a774aae58c7b4e$var$n.call(arguments, 2) : t), \"function\" == typeof l && null != l.defaultProps) for(r in l.defaultProps)void 0 === f[r] && (f[r] = l.defaultProps[r]);\n return $b2a774aae58c7b4e$var$b(l, f, i, o, null);\n}\nfunction $b2a774aae58c7b4e$var$b(n, t, i, o, r) {\n var f = {\n type: n,\n props: t,\n key: i,\n ref: o,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __d: void 0,\n __c: null,\n constructor: void 0,\n __v: null == r ? ++$b2a774aae58c7b4e$var$u : r,\n __i: -1,\n __u: 0\n };\n return null == r && null != $b2a774aae58c7b4e$export$41c562ebe57d11e2.vnode && $b2a774aae58c7b4e$export$41c562ebe57d11e2.vnode(f), f;\n}\nfunction $b2a774aae58c7b4e$export$7d1e3a5e95ceca43() {\n return {\n current: null\n };\n}\nfunction $b2a774aae58c7b4e$export$ffb0004e005737fa(n) {\n return n.children;\n}\nfunction $b2a774aae58c7b4e$export$16fa2f45be04daa8(n, l) {\n this.props = n, this.context = l;\n}\nfunction $b2a774aae58c7b4e$var$x(n, l) {\n if (null == l) return n.__ ? $b2a774aae58c7b4e$var$x(n.__, n.__i + 1) : null;\n for(var u; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) return u.__e;\n return \"function\" == typeof n.type ? $b2a774aae58c7b4e$var$x(n) : null;\n}\nfunction $b2a774aae58c7b4e$var$C(n) {\n var l, u;\n if (null != (n = n.__) && null != n.__c) {\n for(n.__e = n.__c.base = null, l = 0; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) {\n n.__e = n.__c.base = u.__e;\n break;\n }\n return $b2a774aae58c7b4e$var$C(n);\n }\n}\nfunction $b2a774aae58c7b4e$var$P(n) {\n (!n.__d && (n.__d = !0) && $b2a774aae58c7b4e$var$i.push(n) && !$b2a774aae58c7b4e$var$S.__r++ || $b2a774aae58c7b4e$var$o !== $b2a774aae58c7b4e$export$41c562ebe57d11e2.debounceRendering) && (($b2a774aae58c7b4e$var$o = $b2a774aae58c7b4e$export$41c562ebe57d11e2.debounceRendering) || $b2a774aae58c7b4e$var$r)($b2a774aae58c7b4e$var$S);\n}\nfunction $b2a774aae58c7b4e$var$S() {\n var n, u, t, o, r, e, c, s;\n for($b2a774aae58c7b4e$var$i.sort($b2a774aae58c7b4e$var$f); n = $b2a774aae58c7b4e$var$i.shift();)n.__d && (u = $b2a774aae58c7b4e$var$i.length, o = void 0, e = (r = (t = n).__v).__e, c = [], s = [], t.__P && ((o = $b2a774aae58c7b4e$var$d({}, r)).__v = r.__v + 1, $b2a774aae58c7b4e$export$41c562ebe57d11e2.vnode && $b2a774aae58c7b4e$export$41c562ebe57d11e2.vnode(o), $b2a774aae58c7b4e$var$O(t.__P, o, r, t.__n, void 0 !== t.__P.ownerSVGElement, 32 & r.__u ? [\n e\n ] : null, c, null == e ? $b2a774aae58c7b4e$var$x(r) : e, !!(32 & r.__u), s), o.__v = r.__v, o.__.__k[o.__i] = o, $b2a774aae58c7b4e$var$j(c, o, s), o.__e != e && $b2a774aae58c7b4e$var$C(o)), $b2a774aae58c7b4e$var$i.length > u && $b2a774aae58c7b4e$var$i.sort($b2a774aae58c7b4e$var$f));\n $b2a774aae58c7b4e$var$S.__r = 0;\n}\nfunction $b2a774aae58c7b4e$var$$(n, l, u, t, i, o, r, f, e, c, s) {\n var a, p, y, d, _, g = t && t.__k || $b2a774aae58c7b4e$var$v, b = l.length;\n for(u.__d = e, $b2a774aae58c7b4e$var$I(u, l, g), e = u.__d, a = 0; a < b; a++)null != (y = u.__k[a]) && \"boolean\" != typeof y && \"function\" != typeof y && (p = -1 === y.__i ? $b2a774aae58c7b4e$var$h : g[y.__i] || $b2a774aae58c7b4e$var$h, y.__i = a, $b2a774aae58c7b4e$var$O(n, y, p, i, o, r, f, e, c, s), d = y.__e, y.ref && p.ref != y.ref && (p.ref && $b2a774aae58c7b4e$var$N(p.ref, null, y), s.push(y.ref, y.__c || d, y)), null == _ && null != d && (_ = d), 65536 & y.__u || p.__k === y.__k ? (e && !e.isConnected && (e = $b2a774aae58c7b4e$var$x(p)), e = $b2a774aae58c7b4e$var$H(y, e, n)) : \"function\" == typeof y.type && void 0 !== y.__d ? e = y.__d : d && (e = d.nextSibling), y.__d = void 0, y.__u &= -196609);\n u.__d = e, u.__e = _;\n}\nfunction $b2a774aae58c7b4e$var$I(n, l, u) {\n var t, i, o, r, f, e = l.length, c = u.length, s = c, a = 0;\n for(n.__k = [], t = 0; t < e; t++)r = t + a, null != (i = n.__k[t] = null == (i = l[t]) || \"boolean\" == typeof i || \"function\" == typeof i ? null : \"string\" == typeof i || \"number\" == typeof i || \"bigint\" == typeof i || i.constructor == String ? $b2a774aae58c7b4e$var$b(null, i, null, null, null) : $b2a774aae58c7b4e$var$y(i) ? $b2a774aae58c7b4e$var$b($b2a774aae58c7b4e$export$ffb0004e005737fa, {\n children: i\n }, null, null, null) : void 0 === i.constructor && i.__b > 0 ? $b2a774aae58c7b4e$var$b(i.type, i.props, i.key, i.ref ? i.ref : null, i.__v) : i) ? (i.__ = n, i.__b = n.__b + 1, f = $b2a774aae58c7b4e$var$A(i, u, r, s), i.__i = f, o = null, -1 !== f && (s--, (o = u[f]) && (o.__u |= 131072)), null == o || null === o.__v ? (-1 == f && a--, \"function\" != typeof i.type && (i.__u |= 65536)) : f !== r && (f === r + 1 ? a++ : f > r ? s > e - r ? a += f - r : a-- : f < r ? f == r - 1 && (a = f - r) : a = 0, f !== t + a && (i.__u |= 65536))) : (o = u[r]) && null == o.key && o.__e && 0 == (131072 & o.__u) && (o.__e == n.__d && (n.__d = $b2a774aae58c7b4e$var$x(o)), $b2a774aae58c7b4e$var$q(o, o, !1), u[r] = null, s--);\n if (s) for(t = 0; t < c; t++)null != (o = u[t]) && 0 == (131072 & o.__u) && (o.__e == n.__d && (n.__d = $b2a774aae58c7b4e$var$x(o)), $b2a774aae58c7b4e$var$q(o, o));\n}\nfunction $b2a774aae58c7b4e$var$H(n, l, u) {\n var t, i;\n if (\"function\" == typeof n.type) {\n for(t = n.__k, i = 0; t && i < t.length; i++)t[i] && (t[i].__ = n, l = $b2a774aae58c7b4e$var$H(t[i], l, u));\n return l;\n }\n n.__e != l && (u.insertBefore(n.__e, l || null), l = n.__e);\n do l = l && l.nextSibling;\n while (null != l && 8 === l.nodeType);\n return l;\n}\nfunction $b2a774aae58c7b4e$export$47e4c5b300681277(n, l) {\n return l = l || [], null == n || \"boolean\" == typeof n || ($b2a774aae58c7b4e$var$y(n) ? n.some(function(n) {\n $b2a774aae58c7b4e$export$47e4c5b300681277(n, l);\n }) : l.push(n)), l;\n}\nfunction $b2a774aae58c7b4e$var$A(n, l, u, t) {\n var i = n.key, o = n.type, r = u - 1, f = u + 1, e = l[u];\n if (null === e || e && i == e.key && o === e.type && 0 == (131072 & e.__u)) return u;\n if (t > (null != e && 0 == (131072 & e.__u) ? 1 : 0)) for(; r >= 0 || f < l.length;){\n if (r >= 0) {\n if ((e = l[r]) && 0 == (131072 & e.__u) && i == e.key && o === e.type) return r;\n r--;\n }\n if (f < l.length) {\n if ((e = l[f]) && 0 == (131072 & e.__u) && i == e.key && o === e.type) return f;\n f++;\n }\n }\n return -1;\n}\nfunction $b2a774aae58c7b4e$var$F(n, l, u) {\n \"-\" === l[0] ? n.setProperty(l, null == u ? \"\" : u) : n[l] = null == u ? \"\" : \"number\" != typeof u || $b2a774aae58c7b4e$var$p.test(l) ? u : u + \"px\";\n}\nfunction $b2a774aae58c7b4e$var$L(n, l, u, t, i) {\n var o;\n n: if (\"style\" === l) {\n if (\"string\" == typeof u) n.style.cssText = u;\n else {\n if (\"string\" == typeof t && (n.style.cssText = t = \"\"), t) for(l in t)u && l in u || $b2a774aae58c7b4e$var$F(n.style, l, \"\");\n if (u) for(l in u)t && u[l] === t[l] || $b2a774aae58c7b4e$var$F(n.style, l, u[l]);\n }\n } else if (\"o\" === l[0] && \"n\" === l[1]) o = l !== (l = l.replace(/(PointerCapture)$|Capture$/i, \"$1\")), l = l.toLowerCase() in n || \"onFocusOut\" === l || \"onFocusIn\" === l ? l.toLowerCase().slice(2) : l.slice(2), n.l || (n.l = {}), n.l[l + o] = u, u ? t ? u.u = t.u : (u.u = $b2a774aae58c7b4e$var$e, n.addEventListener(l, o ? $b2a774aae58c7b4e$var$s : $b2a774aae58c7b4e$var$c, o)) : n.removeEventListener(l, o ? $b2a774aae58c7b4e$var$s : $b2a774aae58c7b4e$var$c, o);\n else {\n if (i) l = l.replace(/xlink(H|:h)/, \"h\").replace(/sName$/, \"s\");\n else if (\"width\" != l && \"height\" != l && \"href\" != l && \"list\" != l && \"form\" != l && \"tabIndex\" != l && \"download\" != l && \"rowSpan\" != l && \"colSpan\" != l && \"role\" != l && l in n) try {\n n[l] = null == u ? \"\" : u;\n break n;\n } catch (n) {}\n \"function\" == typeof u || (null == u || !1 === u && \"-\" !== l[4] ? n.removeAttribute(l) : n.setAttribute(l, u));\n }\n}\nfunction $b2a774aae58c7b4e$var$M(n) {\n return function(u) {\n if (this.l) {\n var t = this.l[u.type + n];\n if (null == u.t) u.t = $b2a774aae58c7b4e$var$e++;\n else if (u.t < t.u) return;\n return t($b2a774aae58c7b4e$export$41c562ebe57d11e2.event ? $b2a774aae58c7b4e$export$41c562ebe57d11e2.event(u) : u);\n }\n };\n}\nfunction $b2a774aae58c7b4e$var$O(n, u, t, i, o, r, f, e, c, s) {\n var a, h, v, p, _, g, b, m, x, C, P, S, I, H, T, A = u.type;\n if (void 0 !== u.constructor) return null;\n 128 & t.__u && (c = !!(32 & t.__u), r = [\n e = u.__e = t.__e\n ]), (a = $b2a774aae58c7b4e$export$41c562ebe57d11e2.__b) && a(u);\n n: if (\"function\" == typeof A) try {\n if (m = u.props, x = (a = A.contextType) && i[a.__c], C = a ? x ? x.props.value : a.__ : i, t.__c ? b = (h = u.__c = t.__c).__ = h.__E : (\"prototype\" in A && A.prototype.render ? u.__c = h = new A(m, C) : (u.__c = h = new $b2a774aae58c7b4e$export$16fa2f45be04daa8(m, C), h.constructor = A, h.render = $b2a774aae58c7b4e$var$B), x && x.sub(h), h.props = m, h.state || (h.state = {}), h.context = C, h.__n = i, v = h.__d = !0, h.__h = [], h._sb = []), null == h.__s && (h.__s = h.state), null != A.getDerivedStateFromProps && (h.__s == h.state && (h.__s = $b2a774aae58c7b4e$var$d({}, h.__s)), $b2a774aae58c7b4e$var$d(h.__s, A.getDerivedStateFromProps(m, h.__s))), p = h.props, _ = h.state, h.__v = u, v) null == A.getDerivedStateFromProps && null != h.componentWillMount && h.componentWillMount(), null != h.componentDidMount && h.__h.push(h.componentDidMount);\n else {\n if (null == A.getDerivedStateFromProps && m !== p && null != h.componentWillReceiveProps && h.componentWillReceiveProps(m, C), !h.__e && (null != h.shouldComponentUpdate && !1 === h.shouldComponentUpdate(m, h.__s, C) || u.__v === t.__v)) {\n for(u.__v !== t.__v && (h.props = m, h.state = h.__s, h.__d = !1), u.__e = t.__e, u.__k = t.__k, u.__k.forEach(function(n) {\n n && (n.__ = u);\n }), P = 0; P < h._sb.length; P++)h.__h.push(h._sb[P]);\n h._sb = [], h.__h.length && f.push(h);\n break n;\n }\n null != h.componentWillUpdate && h.componentWillUpdate(m, h.__s, C), null != h.componentDidUpdate && h.__h.push(function() {\n h.componentDidUpdate(p, _, g);\n });\n }\n if (h.context = C, h.props = m, h.__P = n, h.__e = !1, S = $b2a774aae58c7b4e$export$41c562ebe57d11e2.__r, I = 0, \"prototype\" in A && A.prototype.render) {\n for(h.state = h.__s, h.__d = !1, S && S(u), a = h.render(h.props, h.state, h.context), H = 0; H < h._sb.length; H++)h.__h.push(h._sb[H]);\n h._sb = [];\n } else do h.__d = !1, S && S(u), a = h.render(h.props, h.state, h.context), h.state = h.__s;\n while (h.__d && ++I < 25);\n h.state = h.__s, null != h.getChildContext && (i = $b2a774aae58c7b4e$var$d($b2a774aae58c7b4e$var$d({}, i), h.getChildContext())), v || null == h.getSnapshotBeforeUpdate || (g = h.getSnapshotBeforeUpdate(p, _)), $b2a774aae58c7b4e$var$$(n, $b2a774aae58c7b4e$var$y(T = null != a && a.type === $b2a774aae58c7b4e$export$ffb0004e005737fa && null == a.key ? a.props.children : a) ? T : [\n T\n ], u, t, i, o, r, f, e, c, s), h.base = u.__e, u.__u &= -161, h.__h.length && f.push(h), b && (h.__E = h.__ = null);\n } catch (n) {\n u.__v = null, c || null != r ? (u.__e = e, u.__u |= c ? 160 : 32, r[r.indexOf(e)] = null) : (u.__e = t.__e, u.__k = t.__k), $b2a774aae58c7b4e$export$41c562ebe57d11e2.__e(n, u, t);\n }\n else null == r && u.__v === t.__v ? (u.__k = t.__k, u.__e = t.__e) : u.__e = $b2a774aae58c7b4e$var$z(t.__e, u, t, i, o, r, f, c, s);\n (a = $b2a774aae58c7b4e$export$41c562ebe57d11e2.diffed) && a(u);\n}\nfunction $b2a774aae58c7b4e$var$j(n, u, t) {\n u.__d = void 0;\n for(var i = 0; i < t.length; i++)$b2a774aae58c7b4e$var$N(t[i], t[++i], t[++i]);\n $b2a774aae58c7b4e$export$41c562ebe57d11e2.__c && $b2a774aae58c7b4e$export$41c562ebe57d11e2.__c(u, n), n.some(function(u) {\n try {\n n = u.__h, u.__h = [], n.some(function(n) {\n n.call(u);\n });\n } catch (n) {\n $b2a774aae58c7b4e$export$41c562ebe57d11e2.__e(n, u.__v);\n }\n });\n}\nfunction $b2a774aae58c7b4e$var$z(l, u, t, i, o, r, f, e, c) {\n var s, a, v, p, d, g, b, m = t.props, w = u.props, k = u.type;\n if (\"svg\" === k && (o = !0), null != r) {\n for(s = 0; s < r.length; s++)if ((d = r[s]) && \"setAttribute\" in d == !!k && (k ? d.localName === k : 3 === d.nodeType)) {\n l = d, r[s] = null;\n break;\n }\n }\n if (null == l) {\n if (null === k) return document.createTextNode(w);\n l = o ? document.createElementNS(\"http://www.w3.org/2000/svg\", k) : document.createElement(k, w.is && w), r = null, e = !1;\n }\n if (null === k) m === w || e && l.data === w || (l.data = w);\n else {\n if (r = r && $b2a774aae58c7b4e$var$n.call(l.childNodes), m = t.props || $b2a774aae58c7b4e$var$h, !e && null != r) for(m = {}, s = 0; s < l.attributes.length; s++)m[(d = l.attributes[s]).name] = d.value;\n for(s in m)d = m[s], \"children\" == s || (\"dangerouslySetInnerHTML\" == s ? v = d : \"key\" === s || s in w || $b2a774aae58c7b4e$var$L(l, s, null, d, o));\n for(s in w)d = w[s], \"children\" == s ? p = d : \"dangerouslySetInnerHTML\" == s ? a = d : \"value\" == s ? g = d : \"checked\" == s ? b = d : \"key\" === s || e && \"function\" != typeof d || m[s] === d || $b2a774aae58c7b4e$var$L(l, s, d, m[s], o);\n if (a) e || v && (a.__html === v.__html || a.__html === l.innerHTML) || (l.innerHTML = a.__html), u.__k = [];\n else if (v && (l.innerHTML = \"\"), $b2a774aae58c7b4e$var$$(l, $b2a774aae58c7b4e$var$y(p) ? p : [\n p\n ], u, t, i, o && \"foreignObject\" !== k, r, f, r ? r[0] : t.__k && $b2a774aae58c7b4e$var$x(t, 0), e, c), null != r) for(s = r.length; s--;)null != r[s] && $b2a774aae58c7b4e$var$_(r[s]);\n e || (s = \"value\", void 0 !== g && (g !== l[s] || \"progress\" === k && !g || \"option\" === k && g !== m[s]) && $b2a774aae58c7b4e$var$L(l, s, g, m[s], !1), s = \"checked\", void 0 !== b && b !== l[s] && $b2a774aae58c7b4e$var$L(l, s, b, m[s], !1));\n }\n return l;\n}\nfunction $b2a774aae58c7b4e$var$N(n, u, t) {\n try {\n \"function\" == typeof n ? n(u) : n.current = u;\n } catch (n) {\n $b2a774aae58c7b4e$export$41c562ebe57d11e2.__e(n, t);\n }\n}\nfunction $b2a774aae58c7b4e$var$q(n, u, t) {\n var i, o;\n if ($b2a774aae58c7b4e$export$41c562ebe57d11e2.unmount && $b2a774aae58c7b4e$export$41c562ebe57d11e2.unmount(n), (i = n.ref) && (i.current && i.current !== n.__e || $b2a774aae58c7b4e$var$N(i, null, u)), null != (i = n.__c)) {\n if (i.componentWillUnmount) try {\n i.componentWillUnmount();\n } catch (n) {\n $b2a774aae58c7b4e$export$41c562ebe57d11e2.__e(n, u);\n }\n i.base = i.__P = null;\n }\n if (i = n.__k) for(o = 0; o < i.length; o++)i[o] && $b2a774aae58c7b4e$var$q(i[o], u, t || \"function\" != typeof n.type);\n t || null == n.__e || $b2a774aae58c7b4e$var$_(n.__e), n.__c = n.__ = n.__e = n.__d = void 0;\n}\nfunction $b2a774aae58c7b4e$var$B(n, l, u) {\n return this.constructor(n, u);\n}\nfunction $b2a774aae58c7b4e$export$b3890eb0ae9dca99(u, t, i) {\n var o, r, f, e;\n $b2a774aae58c7b4e$export$41c562ebe57d11e2.__ && $b2a774aae58c7b4e$export$41c562ebe57d11e2.__(u, t), r = (o = \"function\" == typeof i) ? null : i && i.__k || t.__k, f = [], e = [], $b2a774aae58c7b4e$var$O(t, u = (!o && i || t).__k = $b2a774aae58c7b4e$export$c8a8987d4410bf2d($b2a774aae58c7b4e$export$ffb0004e005737fa, null, [\n u\n ]), r || $b2a774aae58c7b4e$var$h, $b2a774aae58c7b4e$var$h, void 0 !== t.ownerSVGElement, !o && i ? [\n i\n ] : r ? null : t.firstChild ? $b2a774aae58c7b4e$var$n.call(t.childNodes) : null, f, !o && i ? i : r ? r.__e : t.firstChild, o, e), $b2a774aae58c7b4e$var$j(f, u, e);\n}\nfunction $b2a774aae58c7b4e$export$fa8d919ba61d84db(n, l) {\n $b2a774aae58c7b4e$export$b3890eb0ae9dca99(n, l, $b2a774aae58c7b4e$export$fa8d919ba61d84db);\n}\nfunction $b2a774aae58c7b4e$export$e530037191fcd5d7(l, u, t) {\n var i, o, r, f, e = $b2a774aae58c7b4e$var$d({}, l.props);\n for(r in l.type && l.type.defaultProps && (f = l.type.defaultProps), u)\"key\" == r ? i = u[r] : \"ref\" == r ? o = u[r] : e[r] = void 0 === u[r] && void 0 !== f ? f[r] : u[r];\n return arguments.length > 2 && (e.children = arguments.length > 3 ? $b2a774aae58c7b4e$var$n.call(arguments, 2) : t), $b2a774aae58c7b4e$var$b(l.type, e, i || l.key, o || l.ref, null);\n}\nfunction $b2a774aae58c7b4e$export$fd42f52fd3ae1109(n, l) {\n var u = {\n __c: l = \"__cC\" + $b2a774aae58c7b4e$var$a++,\n __: n,\n Consumer: function(n, l) {\n return n.children(l);\n },\n Provider: function(n) {\n var u, t;\n return this.getChildContext || (u = [], (t = {})[l] = this, this.getChildContext = function() {\n return t;\n }, this.shouldComponentUpdate = function(n) {\n this.props.value !== n.value && u.some(function(n) {\n n.__e = !0, $b2a774aae58c7b4e$var$P(n);\n });\n }, this.sub = function(n) {\n u.push(n);\n var l = n.componentWillUnmount;\n n.componentWillUnmount = function() {\n u.splice(u.indexOf(n), 1), l && l.call(n);\n };\n }), n.children;\n }\n };\n return u.Provider.__ = u.Consumer.contextType = u;\n}\n$b2a774aae58c7b4e$var$n = $b2a774aae58c7b4e$var$v.slice, $b2a774aae58c7b4e$export$41c562ebe57d11e2 = {\n __e: function(n, l, u, t) {\n for(var i, o, r; l = l.__;)if ((i = l.__c) && !i.__) try {\n if ((o = i.constructor) && null != o.getDerivedStateFromError && (i.setState(o.getDerivedStateFromError(n)), r = i.__d), null != i.componentDidCatch && (i.componentDidCatch(n, t || {}), r = i.__d), r) return i.__E = i;\n } catch (l) {\n n = l;\n }\n throw n;\n }\n}, $b2a774aae58c7b4e$var$u = 0, $b2a774aae58c7b4e$export$a8257692ac88316c = function(n) {\n return null != n && null == n.constructor;\n}, $b2a774aae58c7b4e$export$16fa2f45be04daa8.prototype.setState = function(n, l) {\n var u;\n u = null != this.__s && this.__s !== this.state ? this.__s : this.__s = $b2a774aae58c7b4e$var$d({}, this.state), \"function\" == typeof n && (n = n($b2a774aae58c7b4e$var$d({}, u), this.props)), n && $b2a774aae58c7b4e$var$d(u, n), null != n && this.__v && (l && this._sb.push(l), $b2a774aae58c7b4e$var$P(this));\n}, $b2a774aae58c7b4e$export$16fa2f45be04daa8.prototype.forceUpdate = function(n) {\n this.__v && (this.__e = !0, n && this.__h.push(n), $b2a774aae58c7b4e$var$P(this));\n}, $b2a774aae58c7b4e$export$16fa2f45be04daa8.prototype.render = $b2a774aae58c7b4e$export$ffb0004e005737fa, $b2a774aae58c7b4e$var$i = [], $b2a774aae58c7b4e$var$r = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, $b2a774aae58c7b4e$var$f = function(n, l) {\n return n.__v.__b - l.__v.__b;\n}, $b2a774aae58c7b4e$var$S.__r = 0, $b2a774aae58c7b4e$var$e = 0, $b2a774aae58c7b4e$var$c = $b2a774aae58c7b4e$var$M(!1), $b2a774aae58c7b4e$var$s = $b2a774aae58c7b4e$var$M(!0), $b2a774aae58c7b4e$var$a = 0;\n\n\nvar $ea6c2efa7087cd4a$var$n = function(t, s, r, e) {\n var u;\n s[0] = 0;\n for(var h = 1; h < s.length; h++){\n var p = s[h++], a = s[h] ? (s[0] |= p ? 1 : 2, r[s[h++]]) : s[++h];\n 3 === p ? e[0] = a : 4 === p ? e[1] = Object.assign(e[1] || {}, a) : 5 === p ? (e[1] = e[1] || {})[s[++h]] = a : 6 === p ? e[1][s[++h]] += a + \"\" : p ? (u = t.apply(a, $ea6c2efa7087cd4a$var$n(t, a, r, [\n \"\",\n null\n ])), e.push(u), a[0] ? s[0] |= 2 : (s[h - 2] = 0, s[h] = u)) : e.push(a);\n }\n return e;\n}, $ea6c2efa7087cd4a$var$t = new Map;\nfunction $ea6c2efa7087cd4a$export$2e2bcd8739ae039(s) {\n var r = $ea6c2efa7087cd4a$var$t.get(this);\n return r || (r = new Map, $ea6c2efa7087cd4a$var$t.set(this, r)), (r = $ea6c2efa7087cd4a$var$n(this, r.get(s) || (r.set(s, r = function(n) {\n for(var t, s, r = 1, e = \"\", u = \"\", h = [\n 0\n ], p = function(n) {\n 1 === r && (n || (e = e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g, \"\"))) ? h.push(0, n, e) : 3 === r && (n || e) ? (h.push(3, n, e), r = 2) : 2 === r && \"...\" === e && n ? h.push(4, n, 0) : 2 === r && e && !n ? h.push(5, 0, !0, e) : r >= 5 && ((e || !n && 5 === r) && (h.push(r, 0, e, s), r = 6), n && (h.push(r, n, 0, s), r = 6)), e = \"\";\n }, a = 0; a < n.length; a++){\n a && (1 === r && p(), p(a));\n for(var l = 0; l < n[a].length; l++)t = n[a][l], 1 === r ? \"<\" === t ? (p(), h = [\n h\n ], r = 3) : e += t : 4 === r ? \"--\" === e && \">\" === t ? (r = 1, e = \"\") : e = t + e[0] : u ? t === u ? u = \"\" : e += t : '\"' === t || \"'\" === t ? u = t : \">\" === t ? (p(), r = 1) : r && (\"=\" === t ? (r = 5, s = e, e = \"\") : \"/\" === t && (r < 5 || \">\" === n[a][l + 1]) ? (p(), 3 === r && (h = h[0]), r = h, (h = h[0]).push(2, 0, r), r = 0) : \" \" === t || \"\t\" === t || \"\\n\" === t || \"\\r\" === t ? (p(), r = 2) : e += t), 3 === r && \"!--\" === e && (r = 4, h = h[0]);\n }\n return p(), h;\n }(s)), r), arguments, [])).length > 1 ? r : r[0];\n}\n\n\nvar $efca0cb2e3ea1e67$exports = {};\n\n$parcel$export($efca0cb2e3ea1e67$exports, \"State\", () => $efca0cb2e3ea1e67$export$7254cc27399e90bd);\n$parcel$export($efca0cb2e3ea1e67$exports, \"regexp\", () => $efca0cb2e3ea1e67$export$efdc1e5bdb609bb);\n$parcel$export($efca0cb2e3ea1e67$exports, \"stringToArray\", () => $efca0cb2e3ea1e67$export$b9ca061da17f2d30);\n$parcel$export($efca0cb2e3ea1e67$exports, \"Options\", () => $efca0cb2e3ea1e67$export$c019608e5b5bb4cb);\n$parcel$export($efca0cb2e3ea1e67$exports, \"options\", () => $efca0cb2e3ea1e67$export$41c562ebe57d11e2);\n$parcel$export($efca0cb2e3ea1e67$exports, \"MultiToken\", () => $efca0cb2e3ea1e67$export$28075db42e06f164);\n$parcel$export($efca0cb2e3ea1e67$exports, \"createTokenClass\", () => $efca0cb2e3ea1e67$export$21042e7280c1baba);\n$parcel$export($efca0cb2e3ea1e67$exports, \"multi\", () => $efca0cb2e3ea1e67$export$13e2537ceeaf8a3a);\n$parcel$export($efca0cb2e3ea1e67$exports, \"reset\", () => $efca0cb2e3ea1e67$export$aad8462122ac592b);\n$parcel$export($efca0cb2e3ea1e67$exports, \"registerTokenPlugin\", () => $efca0cb2e3ea1e67$export$56d1f1cb1f3c0e96);\n$parcel$export($efca0cb2e3ea1e67$exports, \"registerPlugin\", () => $efca0cb2e3ea1e67$export$7612db19fb8beb1e);\n$parcel$export($efca0cb2e3ea1e67$exports, \"registerCustomProtocol\", () => $efca0cb2e3ea1e67$export$821627edc2d26f5f);\n$parcel$export($efca0cb2e3ea1e67$exports, \"init\", () => $efca0cb2e3ea1e67$export$2cd8252107eb640b);\n$parcel$export($efca0cb2e3ea1e67$exports, \"tokenize\", () => $efca0cb2e3ea1e67$export$660b2ee2d4fb4eff);\n$parcel$export($efca0cb2e3ea1e67$exports, \"find\", () => $efca0cb2e3ea1e67$export$71aa6c912b956294);\n$parcel$export($efca0cb2e3ea1e67$exports, \"test\", () => $efca0cb2e3ea1e67$export$e0969da9b8fb378d);\n// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst $efca0cb2e3ea1e67$var$encodedTlds = \"aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4vianca6w0s2x0a2z0ure5ba0by2idu3namex3narepublic11d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2ntley5rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0cast4mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dabur3d1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0ardian6cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6logistics9properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3ncaster6d0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2psy3ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2tura4vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9dnavy5lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0america6xi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0a1b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp2w2ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5m\\xf6gensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4finity6ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2\";\n// Internationalized domain names containing non-ASCII\nconst $efca0cb2e3ea1e67$var$encodedUtlds = \"\\u03B5\\u03BB1\\u03C52\\u0431\\u04331\\u0435\\u043B3\\u0434\\u0435\\u0442\\u04384\\u0435\\u044E2\\u043A\\u0430\\u0442\\u043E\\u043B\\u0438\\u043A6\\u043E\\u043C3\\u043C\\u043A\\u04342\\u043E\\u043D1\\u0441\\u043A\\u0432\\u04306\\u043E\\u043D\\u043B\\u0430\\u0439\\u043D5\\u0440\\u04333\\u0440\\u0443\\u04412\\u04442\\u0441\\u0430\\u0439\\u04423\\u0440\\u04313\\u0443\\u043A\\u04403\\u049B\\u0430\\u04373\\u0570\\u0561\\u05753\\u05D9\\u05E9\\u05E8\\u05D0\\u05DC5\\u05E7\\u05D5\\u05DD3\\u0627\\u0628\\u0648\\u0638\\u0628\\u064A5\\u0631\\u0627\\u0645\\u0643\\u06485\\u0644\\u0627\\u0631\\u062F\\u06464\\u0628\\u062D\\u0631\\u064A\\u06465\\u062C\\u0632\\u0627\\u0626\\u06315\\u0633\\u0639\\u0648\\u062F\\u064A\\u06296\\u0639\\u0644\\u064A\\u0627\\u06465\\u0645\\u063A\\u0631\\u06285\\u0645\\u0627\\u0631\\u0627\\u062A5\\u06CC\\u0631\\u0627\\u06465\\u0628\\u0627\\u0631\\u062A2\\u0632\\u0627\\u06314\\u064A\\u062A\\u06433\\u06BE\\u0627\\u0631\\u062A5\\u062A\\u0648\\u0646\\u06334\\u0633\\u0648\\u062F\\u0627\\u06463\\u0631\\u064A\\u06295\\u0634\\u0628\\u0643\\u06294\\u0639\\u0631\\u0627\\u06422\\u06282\\u0645\\u0627\\u06464\\u0641\\u0644\\u0633\\u0637\\u064A\\u06466\\u0642\\u0637\\u06313\\u0643\\u0627\\u062B\\u0648\\u0644\\u064A\\u06436\\u0648\\u06453\\u0645\\u0635\\u06312\\u0644\\u064A\\u0633\\u064A\\u06275\\u0648\\u0631\\u064A\\u062A\\u0627\\u0646\\u064A\\u06277\\u0642\\u06394\\u0647\\u0645\\u0631\\u0627\\u06475\\u067E\\u0627\\u06A9\\u0633\\u062A\\u0627\\u06467\\u0680\\u0627\\u0631\\u062A4\\u0915\\u0949\\u092E3\\u0928\\u0947\\u091F3\\u092D\\u093E\\u0930\\u09240\\u092E\\u094D3\\u094B\\u09245\\u0938\\u0902\\u0917\\u0920\\u09285\\u09AC\\u09BE\\u0982\\u09B2\\u09BE5\\u09AD\\u09BE\\u09B0\\u09A42\\u09F0\\u09A44\\u0A2D\\u0A3E\\u0A30\\u0A244\\u0AAD\\u0ABE\\u0AB0\\u0AA44\\u0B2D\\u0B3E\\u0B30\\u0B244\\u0B87\\u0BA8\\u0BCD\\u0BA4\\u0BBF\\u0BAF\\u0BBE6\\u0BB2\\u0B99\\u0BCD\\u0B95\\u0BC86\\u0B9A\\u0BBF\\u0B99\\u0BCD\\u0B95\\u0BAA\\u0BCD\\u0BAA\\u0BC2\\u0BB0\\u0BCD11\\u0C2D\\u0C3E\\u0C30\\u0C24\\u0C4D5\\u0CAD\\u0CBE\\u0CB0\\u0CA44\\u0D2D\\u0D3E\\u0D30\\u0D24\\u0D025\\u0DBD\\u0D82\\u0D9A\\u0DCF4\\u0E04\\u0E2D\\u0E213\\u0E44\\u0E17\\u0E223\\u0EA5\\u0EB2\\u0EA73\\u10D2\\u10D42\\u307F\\u3093\\u306A3\\u30A2\\u30DE\\u30BE\\u30F34\\u30AF\\u30E9\\u30A6\\u30C94\\u30B0\\u30FC\\u30B0\\u30EB4\\u30B3\\u30E02\\u30B9\\u30C8\\u30A23\\u30BB\\u30FC\\u30EB3\\u30D5\\u30A1\\u30C3\\u30B7\\u30E7\\u30F36\\u30DD\\u30A4\\u30F3\\u30C84\\u4E16\\u754C2\\u4E2D\\u4FE11\\u56FD1\\u570B1\\u6587\\u7F513\\u4E9A\\u9A6C\\u900A3\\u4F01\\u4E1A2\\u4F5B\\u5C712\\u4FE1\\u606F2\\u5065\\u5EB72\\u516B\\u53662\\u516C\\u53F81\\u76CA2\\u53F0\\u6E7E1\\u70632\\u5546\\u57CE1\\u5E971\\u68072\\u5609\\u91CC0\\u5927\\u9152\\u5E975\\u5728\\u7EBF2\\u5927\\u62FF2\\u5929\\u4E3B\\u65593\\u5A31\\u4E502\\u5BB6\\u96FB2\\u5E7F\\u4E1C2\\u5FAE\\u535A2\\u6148\\u55842\\u6211\\u7231\\u4F603\\u624B\\u673A2\\u62DB\\u80582\\u653F\\u52A11\\u5E9C2\\u65B0\\u52A0\\u57612\\u95FB2\\u65F6\\u5C1A2\\u66F8\\u7C4D2\\u673A\\u67842\\u6DE1\\u9A6C\\u95213\\u6E38\\u620F2\\u6FB3\\u95802\\u70B9\\u770B2\\u79FB\\u52A82\\u7EC4\\u7EC7\\u673A\\u67844\\u7F51\\u57401\\u5E971\\u7AD91\\u7EDC2\\u8054\\u901A2\\u8C37\\u6B4C2\\u8D2D\\u72692\\u901A\\u8CA92\\u96C6\\u56E22\\u96FB\\u8A0A\\u76C8\\u79D14\\u98DE\\u5229\\u6D663\\u98DF\\u54C12\\u9910\\u53852\\u9999\\u683C\\u91CC\\u62C93\\u6E2F2\\uB2F7\\uB1371\\uCEF42\\uC0BC\\uC1312\\uD55C\\uAD6D2\";\n/**\n * @template A\n * @template B\n * @param {A} target\n * @param {B} properties\n * @return {A & B}\n */ const $efca0cb2e3ea1e67$var$assign = (target, properties)=>{\n for(const key in properties)target[key] = properties[key];\n return target;\n};\n/**\n * Finite State Machine generation utilities\n */ /**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */ /**\n * @typedef {{ [group: string]: true }} Flags\n */ // Keys in scanner Collections instances\nconst $efca0cb2e3ea1e67$var$numeric = \"numeric\";\nconst $efca0cb2e3ea1e67$var$ascii = \"ascii\";\nconst $efca0cb2e3ea1e67$var$alpha = \"alpha\";\nconst $efca0cb2e3ea1e67$var$asciinumeric = \"asciinumeric\";\nconst $efca0cb2e3ea1e67$var$alphanumeric = \"alphanumeric\";\nconst $efca0cb2e3ea1e67$var$domain = \"domain\";\nconst $efca0cb2e3ea1e67$var$emoji = \"emoji\";\nconst $efca0cb2e3ea1e67$var$scheme = \"scheme\";\nconst $efca0cb2e3ea1e67$var$slashscheme = \"slashscheme\";\nconst $efca0cb2e3ea1e67$var$whitespace = \"whitespace\";\n/**\n * @template T\n * @param {string} name\n * @param {Collections} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */ function $efca0cb2e3ea1e67$var$registerGroup(name, groups) {\n if (!(name in groups)) groups[name] = [];\n return groups[name];\n}\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections} groups\n * @param {Flags} flags\n */ function $efca0cb2e3ea1e67$var$addToGroups(t, flags, groups) {\n if (flags[$efca0cb2e3ea1e67$var$numeric]) {\n flags[$efca0cb2e3ea1e67$var$asciinumeric] = true;\n flags[$efca0cb2e3ea1e67$var$alphanumeric] = true;\n }\n if (flags[$efca0cb2e3ea1e67$var$ascii]) {\n flags[$efca0cb2e3ea1e67$var$asciinumeric] = true;\n flags[$efca0cb2e3ea1e67$var$alpha] = true;\n }\n if (flags[$efca0cb2e3ea1e67$var$asciinumeric]) flags[$efca0cb2e3ea1e67$var$alphanumeric] = true;\n if (flags[$efca0cb2e3ea1e67$var$alpha]) flags[$efca0cb2e3ea1e67$var$alphanumeric] = true;\n if (flags[$efca0cb2e3ea1e67$var$alphanumeric]) flags[$efca0cb2e3ea1e67$var$domain] = true;\n if (flags[$efca0cb2e3ea1e67$var$emoji]) flags[$efca0cb2e3ea1e67$var$domain] = true;\n for(const k in flags){\n const group = $efca0cb2e3ea1e67$var$registerGroup(k, groups);\n if (group.indexOf(t) < 0) group.push(t);\n }\n}\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections} groups\n * @returns {Flags} group flags that contain this token\n */ function $efca0cb2e3ea1e67$var$flagsForToken(t, groups) {\n const result = {};\n for(const c in groups)if (groups[c].indexOf(t) >= 0) result[c] = true;\n return result;\n}\n/**\n * @template T\n * @typedef {null | T } Transition\n */ /**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */ function $efca0cb2e3ea1e67$export$7254cc27399e90bd(token) {\n if (token === void 0) token = null;\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State }} j */ this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State][]} jr */ this.jr = [];\n /** @type {?State} jd */ this.jd = null;\n /** @type {?T} t */ this.t = token;\n}\n/**\n * Scanner token groups\n * @type Collections\n */ $efca0cb2e3ea1e67$export$7254cc27399e90bd.groups = {};\n$efca0cb2e3ea1e67$export$7254cc27399e90bd.prototype = {\n accepts () {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State} the next state, if any\n */ go (input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) return nextState;\n for(let i = 0; i < state.jr.length; i++){\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) return nextState;\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */ has (input, exactOnly) {\n if (exactOnly === void 0) exactOnly = false;\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n */ ta (inputs, next, flags, groups) {\n for(let i = 0; i < inputs.length; i++)this.tt(inputs[i], next, flags, groups);\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n * @returns {State} taken after the given input\n */ tr (regexp, next, flags, groups) {\n groups = groups || $efca0cb2e3ea1e67$export$7254cc27399e90bd.groups;\n let nextState;\n if (next && next.j) nextState = next;\n else {\n // Token with maybe token groups\n nextState = new $efca0cb2e3ea1e67$export$7254cc27399e90bd(next);\n if (flags && groups) $efca0cb2e3ea1e67$var$addToGroups(next, flags, groups);\n }\n this.jr.push([\n regexp,\n nextState\n ]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n * @returns {State} taken after the given input\n */ ts (input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) return state;\n for(let i = 0; i < len - 1; i++)state = state.tt(input[i]);\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of groups\n * @returns {State} taken after the given input\n */ tt (input, next, flags, groups) {\n groups = groups || $efca0cb2e3ea1e67$export$7254cc27399e90bd.groups;\n const state = this;\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState, templateState = state.go(input);\n if (templateState) {\n nextState = new $efca0cb2e3ea1e67$export$7254cc27399e90bd();\n $efca0cb2e3ea1e67$var$assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else nextState = new $efca0cb2e3ea1e67$export$7254cc27399e90bd();\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === \"string\") {\n const allFlags = $efca0cb2e3ea1e67$var$assign($efca0cb2e3ea1e67$var$flagsForToken(nextState.t, groups), flags);\n $efca0cb2e3ea1e67$var$addToGroups(t, allFlags, groups);\n } else if (flags) $efca0cb2e3ea1e67$var$addToGroups(t, flags, groups);\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n// Helper functions to improve minification (not exported outside linkifyjs module)\n/**\n * @template T\n * @param {State} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */ const $efca0cb2e3ea1e67$var$ta = (state, input, next, flags, groups)=>state.ta(input, next, flags, groups);\n/**\n * @template T\n * @param {State} state\n * @param {RegExp} regexp\n * @param {T | State} [next]\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */ const $efca0cb2e3ea1e67$var$tr = (state, regexp, next, flags, groups)=>state.tr(regexp, next, flags, groups);\n/**\n * @template T\n * @param {State} state\n * @param {string | string[]} input\n * @param {T | State} [next]\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */ const $efca0cb2e3ea1e67$var$ts = (state, input, next, flags, groups)=>state.ts(input, next, flags, groups);\n/**\n * @template T\n * @param {State} state\n * @param {string} input\n * @param {T | State} [next]\n * @param {Collections} [groups]\n * @param {Flags} [flags]\n */ const $efca0cb2e3ea1e67$var$tt = (state, input, next, flags, groups)=>state.tt(input, next, flags, groups);\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/ // A valid web domain token\nconst $efca0cb2e3ea1e67$var$WORD = \"WORD\"; // only contains a-z\nconst $efca0cb2e3ea1e67$var$UWORD = \"UWORD\"; // contains letters other than a-z, used for IDN\n// Special case of word\nconst $efca0cb2e3ea1e67$var$LOCALHOST = \"LOCALHOST\";\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst $efca0cb2e3ea1e67$var$TLD = \"TLD\";\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst $efca0cb2e3ea1e67$var$UTLD = \"UTLD\";\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst $efca0cb2e3ea1e67$var$SCHEME = \"SCHEME\";\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst $efca0cb2e3ea1e67$var$SLASH_SCHEME = \"SLASH_SCHEME\";\n// Any sequence of digits 0-9\nconst $efca0cb2e3ea1e67$var$NUM = \"NUM\";\n// Any number of consecutive whitespace characters that are not newline\nconst $efca0cb2e3ea1e67$var$WS = \"WS\";\n// New line (unix style)\nconst $efca0cb2e3ea1e67$var$NL$1 = \"NL\"; // \\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst $efca0cb2e3ea1e67$var$OPENBRACE = \"OPENBRACE\"; // {\nconst $efca0cb2e3ea1e67$var$CLOSEBRACE = \"CLOSEBRACE\"; // }\nconst $efca0cb2e3ea1e67$var$OPENBRACKET = \"OPENBRACKET\"; // [\nconst $efca0cb2e3ea1e67$var$CLOSEBRACKET = \"CLOSEBRACKET\"; // ]\nconst $efca0cb2e3ea1e67$var$OPENPAREN = \"OPENPAREN\"; // (\nconst $efca0cb2e3ea1e67$var$CLOSEPAREN = \"CLOSEPAREN\"; // )\nconst $efca0cb2e3ea1e67$var$OPENANGLEBRACKET = \"OPENANGLEBRACKET\"; // <\nconst $efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET = \"CLOSEANGLEBRACKET\"; // >\nconst $efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN = \"FULLWIDTHLEFTPAREN\"; // (\nconst $efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN = \"FULLWIDTHRIGHTPAREN\"; // )\nconst $efca0cb2e3ea1e67$var$LEFTCORNERBRACKET = \"LEFTCORNERBRACKET\"; // 「\nconst $efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET = \"RIGHTCORNERBRACKET\"; // 」\nconst $efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET = \"LEFTWHITECORNERBRACKET\"; // 『\nconst $efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET = \"RIGHTWHITECORNERBRACKET\"; // 』\nconst $efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN = \"FULLWIDTHLESSTHAN\"; // <\nconst $efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN = \"FULLWIDTHGREATERTHAN\"; // >\n// Various symbols\nconst $efca0cb2e3ea1e67$var$AMPERSAND = \"AMPERSAND\"; // &\nconst $efca0cb2e3ea1e67$var$APOSTROPHE = \"APOSTROPHE\"; // '\nconst $efca0cb2e3ea1e67$var$ASTERISK = \"ASTERISK\"; // *\nconst $efca0cb2e3ea1e67$var$AT = \"AT\"; // @\nconst $efca0cb2e3ea1e67$var$BACKSLASH = \"BACKSLASH\"; // \\\nconst $efca0cb2e3ea1e67$var$BACKTICK = \"BACKTICK\"; // `\nconst $efca0cb2e3ea1e67$var$CARET = \"CARET\"; // ^\nconst $efca0cb2e3ea1e67$var$COLON = \"COLON\"; // :\nconst $efca0cb2e3ea1e67$var$COMMA = \"COMMA\"; // ,\nconst $efca0cb2e3ea1e67$var$DOLLAR = \"DOLLAR\"; // $\nconst $efca0cb2e3ea1e67$var$DOT = \"DOT\"; // .\nconst $efca0cb2e3ea1e67$var$EQUALS = \"EQUALS\"; // =\nconst $efca0cb2e3ea1e67$var$EXCLAMATION = \"EXCLAMATION\"; // !\nconst $efca0cb2e3ea1e67$var$HYPHEN = \"HYPHEN\"; // -\nconst $efca0cb2e3ea1e67$var$PERCENT = \"PERCENT\"; // %\nconst $efca0cb2e3ea1e67$var$PIPE = \"PIPE\"; // |\nconst $efca0cb2e3ea1e67$var$PLUS = \"PLUS\"; // +\nconst $efca0cb2e3ea1e67$var$POUND = \"POUND\"; // #\nconst $efca0cb2e3ea1e67$var$QUERY = \"QUERY\"; // ?\nconst $efca0cb2e3ea1e67$var$QUOTE = \"QUOTE\"; // \"\nconst $efca0cb2e3ea1e67$var$SEMI = \"SEMI\"; // ;\nconst $efca0cb2e3ea1e67$var$SLASH = \"SLASH\"; // /\nconst $efca0cb2e3ea1e67$var$TILDE = \"TILDE\"; // ~\nconst $efca0cb2e3ea1e67$var$UNDERSCORE = \"UNDERSCORE\"; // _\n// Emoji symbol\nconst $efca0cb2e3ea1e67$var$EMOJI$1 = \"EMOJI\";\n// Default token - anything that is not one of the above\nconst $efca0cb2e3ea1e67$var$SYM = \"SYM\";\nvar $efca0cb2e3ea1e67$var$tk = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n WORD: $efca0cb2e3ea1e67$var$WORD,\n UWORD: $efca0cb2e3ea1e67$var$UWORD,\n LOCALHOST: $efca0cb2e3ea1e67$var$LOCALHOST,\n TLD: $efca0cb2e3ea1e67$var$TLD,\n UTLD: $efca0cb2e3ea1e67$var$UTLD,\n SCHEME: $efca0cb2e3ea1e67$var$SCHEME,\n SLASH_SCHEME: $efca0cb2e3ea1e67$var$SLASH_SCHEME,\n NUM: $efca0cb2e3ea1e67$var$NUM,\n WS: $efca0cb2e3ea1e67$var$WS,\n NL: $efca0cb2e3ea1e67$var$NL$1,\n OPENBRACE: $efca0cb2e3ea1e67$var$OPENBRACE,\n CLOSEBRACE: $efca0cb2e3ea1e67$var$CLOSEBRACE,\n OPENBRACKET: $efca0cb2e3ea1e67$var$OPENBRACKET,\n CLOSEBRACKET: $efca0cb2e3ea1e67$var$CLOSEBRACKET,\n OPENPAREN: $efca0cb2e3ea1e67$var$OPENPAREN,\n CLOSEPAREN: $efca0cb2e3ea1e67$var$CLOSEPAREN,\n OPENANGLEBRACKET: $efca0cb2e3ea1e67$var$OPENANGLEBRACKET,\n CLOSEANGLEBRACKET: $efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET,\n FULLWIDTHLEFTPAREN: $efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN,\n FULLWIDTHRIGHTPAREN: $efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN,\n LEFTCORNERBRACKET: $efca0cb2e3ea1e67$var$LEFTCORNERBRACKET,\n RIGHTCORNERBRACKET: $efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET,\n LEFTWHITECORNERBRACKET: $efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET,\n RIGHTWHITECORNERBRACKET: $efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET,\n FULLWIDTHLESSTHAN: $efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN,\n FULLWIDTHGREATERTHAN: $efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN,\n AMPERSAND: $efca0cb2e3ea1e67$var$AMPERSAND,\n APOSTROPHE: $efca0cb2e3ea1e67$var$APOSTROPHE,\n ASTERISK: $efca0cb2e3ea1e67$var$ASTERISK,\n AT: $efca0cb2e3ea1e67$var$AT,\n BACKSLASH: $efca0cb2e3ea1e67$var$BACKSLASH,\n BACKTICK: $efca0cb2e3ea1e67$var$BACKTICK,\n CARET: $efca0cb2e3ea1e67$var$CARET,\n COLON: $efca0cb2e3ea1e67$var$COLON,\n COMMA: $efca0cb2e3ea1e67$var$COMMA,\n DOLLAR: $efca0cb2e3ea1e67$var$DOLLAR,\n DOT: $efca0cb2e3ea1e67$var$DOT,\n EQUALS: $efca0cb2e3ea1e67$var$EQUALS,\n EXCLAMATION: $efca0cb2e3ea1e67$var$EXCLAMATION,\n HYPHEN: $efca0cb2e3ea1e67$var$HYPHEN,\n PERCENT: $efca0cb2e3ea1e67$var$PERCENT,\n PIPE: $efca0cb2e3ea1e67$var$PIPE,\n PLUS: $efca0cb2e3ea1e67$var$PLUS,\n POUND: $efca0cb2e3ea1e67$var$POUND,\n QUERY: $efca0cb2e3ea1e67$var$QUERY,\n QUOTE: $efca0cb2e3ea1e67$var$QUOTE,\n SEMI: $efca0cb2e3ea1e67$var$SEMI,\n SLASH: $efca0cb2e3ea1e67$var$SLASH,\n TILDE: $efca0cb2e3ea1e67$var$TILDE,\n UNDERSCORE: $efca0cb2e3ea1e67$var$UNDERSCORE,\n EMOJI: $efca0cb2e3ea1e67$var$EMOJI$1,\n SYM: $efca0cb2e3ea1e67$var$SYM\n});\n// Note that these two Unicode ones expand into a really big one with Babel\nconst $efca0cb2e3ea1e67$var$ASCII_LETTER = /[a-z]/;\nconst $efca0cb2e3ea1e67$var$LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst $efca0cb2e3ea1e67$var$EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst $efca0cb2e3ea1e67$var$EMOJI_VARIATION$1 = /\\ufe0f/;\nconst $efca0cb2e3ea1e67$var$DIGIT = /\\d/;\nconst $efca0cb2e3ea1e67$var$SPACE = /\\s/;\nvar $efca0cb2e3ea1e67$export$efdc1e5bdb609bb = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n ASCII_LETTER: $efca0cb2e3ea1e67$var$ASCII_LETTER,\n LETTER: $efca0cb2e3ea1e67$var$LETTER,\n EMOJI: $efca0cb2e3ea1e67$var$EMOJI,\n EMOJI_VARIATION: $efca0cb2e3ea1e67$var$EMOJI_VARIATION$1,\n DIGIT: $efca0cb2e3ea1e67$var$DIGIT,\n SPACE: $efca0cb2e3ea1e67$var$SPACE\n});\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/ const $efca0cb2e3ea1e67$var$NL = \"\\n\"; // New line character\nconst $efca0cb2e3ea1e67$var$EMOJI_VARIATION = \"\\uFE0F\"; // Variation selector, follows heart and others\nconst $efca0cb2e3ea1e67$var$EMOJI_JOINER = \"\\u200D\"; // zero-width joiner\nlet $efca0cb2e3ea1e67$var$tlds = null, $efca0cb2e3ea1e67$var$utlds = null; // don't change so only have to be computed once\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */ /**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */ /**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */ function $efca0cb2e3ea1e67$var$init$2(customSchemes) {\n if (customSchemes === void 0) customSchemes = [];\n // Frequently used states (name argument removed during minification)\n /** @type Collections */ const groups = {}; // of tokens\n $efca0cb2e3ea1e67$export$7254cc27399e90bd.groups = groups;\n /** @type State */ const Start = new $efca0cb2e3ea1e67$export$7254cc27399e90bd();\n if ($efca0cb2e3ea1e67$var$tlds == null) $efca0cb2e3ea1e67$var$tlds = $efca0cb2e3ea1e67$var$decodeTlds($efca0cb2e3ea1e67$var$encodedTlds);\n if ($efca0cb2e3ea1e67$var$utlds == null) $efca0cb2e3ea1e67$var$utlds = $efca0cb2e3ea1e67$var$decodeTlds($efca0cb2e3ea1e67$var$encodedUtlds);\n // States for special URL symbols that accept immediately after start\n $efca0cb2e3ea1e67$var$tt(Start, \"'\", $efca0cb2e3ea1e67$var$APOSTROPHE);\n $efca0cb2e3ea1e67$var$tt(Start, \"{\", $efca0cb2e3ea1e67$var$OPENBRACE);\n $efca0cb2e3ea1e67$var$tt(Start, \"}\", $efca0cb2e3ea1e67$var$CLOSEBRACE);\n $efca0cb2e3ea1e67$var$tt(Start, \"[\", $efca0cb2e3ea1e67$var$OPENBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"]\", $efca0cb2e3ea1e67$var$CLOSEBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"(\", $efca0cb2e3ea1e67$var$OPENPAREN);\n $efca0cb2e3ea1e67$var$tt(Start, \")\", $efca0cb2e3ea1e67$var$CLOSEPAREN);\n $efca0cb2e3ea1e67$var$tt(Start, \"<\", $efca0cb2e3ea1e67$var$OPENANGLEBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \">\", $efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\uFF08\", $efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\uFF09\", $efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\u300C\", $efca0cb2e3ea1e67$var$LEFTCORNERBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\u300D\", $efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\u300E\", $efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\u300F\", $efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\uFF1C\", $efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\uFF1E\", $efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN);\n $efca0cb2e3ea1e67$var$tt(Start, \"&\", $efca0cb2e3ea1e67$var$AMPERSAND);\n $efca0cb2e3ea1e67$var$tt(Start, \"*\", $efca0cb2e3ea1e67$var$ASTERISK);\n $efca0cb2e3ea1e67$var$tt(Start, \"@\", $efca0cb2e3ea1e67$var$AT);\n $efca0cb2e3ea1e67$var$tt(Start, \"`\", $efca0cb2e3ea1e67$var$BACKTICK);\n $efca0cb2e3ea1e67$var$tt(Start, \"^\", $efca0cb2e3ea1e67$var$CARET);\n $efca0cb2e3ea1e67$var$tt(Start, \":\", $efca0cb2e3ea1e67$var$COLON);\n $efca0cb2e3ea1e67$var$tt(Start, \",\", $efca0cb2e3ea1e67$var$COMMA);\n $efca0cb2e3ea1e67$var$tt(Start, \"$\", $efca0cb2e3ea1e67$var$DOLLAR);\n $efca0cb2e3ea1e67$var$tt(Start, \".\", $efca0cb2e3ea1e67$var$DOT);\n $efca0cb2e3ea1e67$var$tt(Start, \"=\", $efca0cb2e3ea1e67$var$EQUALS);\n $efca0cb2e3ea1e67$var$tt(Start, \"!\", $efca0cb2e3ea1e67$var$EXCLAMATION);\n $efca0cb2e3ea1e67$var$tt(Start, \"-\", $efca0cb2e3ea1e67$var$HYPHEN);\n $efca0cb2e3ea1e67$var$tt(Start, \"%\", $efca0cb2e3ea1e67$var$PERCENT);\n $efca0cb2e3ea1e67$var$tt(Start, \"|\", $efca0cb2e3ea1e67$var$PIPE);\n $efca0cb2e3ea1e67$var$tt(Start, \"+\", $efca0cb2e3ea1e67$var$PLUS);\n $efca0cb2e3ea1e67$var$tt(Start, \"#\", $efca0cb2e3ea1e67$var$POUND);\n $efca0cb2e3ea1e67$var$tt(Start, \"?\", $efca0cb2e3ea1e67$var$QUERY);\n $efca0cb2e3ea1e67$var$tt(Start, '\"', $efca0cb2e3ea1e67$var$QUOTE);\n $efca0cb2e3ea1e67$var$tt(Start, \"/\", $efca0cb2e3ea1e67$var$SLASH);\n $efca0cb2e3ea1e67$var$tt(Start, \";\", $efca0cb2e3ea1e67$var$SEMI);\n $efca0cb2e3ea1e67$var$tt(Start, \"~\", $efca0cb2e3ea1e67$var$TILDE);\n $efca0cb2e3ea1e67$var$tt(Start, \"_\", $efca0cb2e3ea1e67$var$UNDERSCORE);\n $efca0cb2e3ea1e67$var$tt(Start, \"\\\\\", $efca0cb2e3ea1e67$var$BACKSLASH);\n const Num = $efca0cb2e3ea1e67$var$tr(Start, $efca0cb2e3ea1e67$var$DIGIT, $efca0cb2e3ea1e67$var$NUM, {\n [$efca0cb2e3ea1e67$var$numeric]: true\n });\n $efca0cb2e3ea1e67$var$tr(Num, $efca0cb2e3ea1e67$var$DIGIT, Num);\n // State which emits a word token\n const Word = $efca0cb2e3ea1e67$var$tr(Start, $efca0cb2e3ea1e67$var$ASCII_LETTER, $efca0cb2e3ea1e67$var$WORD, {\n [$efca0cb2e3ea1e67$var$ascii]: true\n });\n $efca0cb2e3ea1e67$var$tr(Word, $efca0cb2e3ea1e67$var$ASCII_LETTER, Word);\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = $efca0cb2e3ea1e67$var$tr(Start, $efca0cb2e3ea1e67$var$LETTER, $efca0cb2e3ea1e67$var$UWORD, {\n [$efca0cb2e3ea1e67$var$alpha]: true\n });\n $efca0cb2e3ea1e67$var$tr(UWord, $efca0cb2e3ea1e67$var$ASCII_LETTER); // Non-accepting\n $efca0cb2e3ea1e67$var$tr(UWord, $efca0cb2e3ea1e67$var$LETTER, UWord);\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Ws = $efca0cb2e3ea1e67$var$tr(Start, $efca0cb2e3ea1e67$var$SPACE, $efca0cb2e3ea1e67$var$WS, {\n [$efca0cb2e3ea1e67$var$whitespace]: true\n });\n $efca0cb2e3ea1e67$var$tt(Start, $efca0cb2e3ea1e67$var$NL, $efca0cb2e3ea1e67$var$NL$1, {\n [$efca0cb2e3ea1e67$var$whitespace]: true\n });\n $efca0cb2e3ea1e67$var$tt(Ws, $efca0cb2e3ea1e67$var$NL); // non-accepting state to avoid mixing whitespaces\n $efca0cb2e3ea1e67$var$tr(Ws, $efca0cb2e3ea1e67$var$SPACE, Ws);\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = $efca0cb2e3ea1e67$var$tr(Start, $efca0cb2e3ea1e67$var$EMOJI, $efca0cb2e3ea1e67$var$EMOJI$1, {\n [$efca0cb2e3ea1e67$var$emoji]: true\n });\n $efca0cb2e3ea1e67$var$tr(Emoji, $efca0cb2e3ea1e67$var$EMOJI, Emoji);\n $efca0cb2e3ea1e67$var$tt(Emoji, $efca0cb2e3ea1e67$var$EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n const EmojiJoiner = $efca0cb2e3ea1e67$var$tt(Emoji, $efca0cb2e3ea1e67$var$EMOJI_JOINER);\n $efca0cb2e3ea1e67$var$tr(EmojiJoiner, $efca0cb2e3ea1e67$var$EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [\n [\n $efca0cb2e3ea1e67$var$ASCII_LETTER,\n Word\n ]\n ];\n const uwordjr = [\n [\n $efca0cb2e3ea1e67$var$ASCII_LETTER,\n null\n ],\n [\n $efca0cb2e3ea1e67$var$LETTER,\n UWord\n ]\n ];\n for(let i = 0; i < $efca0cb2e3ea1e67$var$tlds.length; i++)$efca0cb2e3ea1e67$var$fastts(Start, $efca0cb2e3ea1e67$var$tlds[i], $efca0cb2e3ea1e67$var$TLD, $efca0cb2e3ea1e67$var$WORD, wordjr);\n for(let i = 0; i < $efca0cb2e3ea1e67$var$utlds.length; i++)$efca0cb2e3ea1e67$var$fastts(Start, $efca0cb2e3ea1e67$var$utlds[i], $efca0cb2e3ea1e67$var$UTLD, $efca0cb2e3ea1e67$var$UWORD, uwordjr);\n $efca0cb2e3ea1e67$var$addToGroups($efca0cb2e3ea1e67$var$TLD, {\n tld: true,\n ascii: true\n }, groups);\n $efca0cb2e3ea1e67$var$addToGroups($efca0cb2e3ea1e67$var$UTLD, {\n utld: true,\n alpha: true\n }, groups);\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n $efca0cb2e3ea1e67$var$fastts(Start, \"file\", $efca0cb2e3ea1e67$var$SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$fastts(Start, \"mailto\", $efca0cb2e3ea1e67$var$SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$fastts(Start, \"http\", $efca0cb2e3ea1e67$var$SLASH_SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$fastts(Start, \"https\", $efca0cb2e3ea1e67$var$SLASH_SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$fastts(Start, \"ftp\", $efca0cb2e3ea1e67$var$SLASH_SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$fastts(Start, \"ftps\", $efca0cb2e3ea1e67$var$SLASH_SCHEME, $efca0cb2e3ea1e67$var$WORD, wordjr);\n $efca0cb2e3ea1e67$var$addToGroups($efca0cb2e3ea1e67$var$SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n $efca0cb2e3ea1e67$var$addToGroups($efca0cb2e3ea1e67$var$SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b)=>a[0] > b[0] ? 1 : -1);\n for(let i = 0; i < customSchemes.length; i++){\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [$efca0cb2e3ea1e67$var$scheme]: true\n } : {\n [$efca0cb2e3ea1e67$var$slashscheme]: true\n };\n if (sch.indexOf(\"-\") >= 0) flags[$efca0cb2e3ea1e67$var$domain] = true;\n else if (!$efca0cb2e3ea1e67$var$ASCII_LETTER.test(sch)) flags[$efca0cb2e3ea1e67$var$numeric] = true; // numbers only\n else if ($efca0cb2e3ea1e67$var$DIGIT.test(sch)) flags[$efca0cb2e3ea1e67$var$asciinumeric] = true;\n else flags[$efca0cb2e3ea1e67$var$ascii] = true;\n $efca0cb2e3ea1e67$var$ts(Start, sch, sch, flags);\n }\n // Localhost token\n $efca0cb2e3ea1e67$var$ts(Start, \"localhost\", $efca0cb2e3ea1e67$var$LOCALHOST, {\n ascii: true\n });\n // Set default transition for start state (some symbol)\n Start.jd = new $efca0cb2e3ea1e67$export$7254cc27399e90bd($efca0cb2e3ea1e67$var$SYM);\n return {\n start: Start,\n tokens: $efca0cb2e3ea1e67$var$assign({\n groups: groups\n }, $efca0cb2e3ea1e67$var$tk)\n };\n}\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/ function $efca0cb2e3ea1e67$var$run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = $efca0cb2e3ea1e67$export$b9ca061da17f2d30(str.replace(/[A-Z]/g, (c)=>c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n // Cursor through the array-representation of the string\n let charCursor = 0;\n // Tokenize the string\n while(charCursor < charCount){\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while(charCursor < charCount && (nextState = state.go(iterable[charCursor]))){\n state = nextState;\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */ function $efca0cb2e3ea1e67$export$b9ca061da17f2d30(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while(index < len){\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State][]} jr\n * @returns {State}\n */ function $efca0cb2e3ea1e67$var$fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for(let i = 0; i < len - 1; i++){\n const char = input[i];\n if (state.j[char]) next = state.j[char];\n else {\n next = new $efca0cb2e3ea1e67$export$7254cc27399e90bd(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new $efca0cb2e3ea1e67$export$7254cc27399e90bd(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */ function $efca0cb2e3ea1e67$var$decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = \"0123456789\";\n while(i < encoded.length){\n let popDigitCount = 0;\n while(digits.indexOf(encoded[i + popDigitCount]) >= 0)popDigitCount++; // encountered some digits, have to pop to go one level up trie\n if (popDigitCount > 0) {\n words.push(stack.join(\"\")); // whatever preceded the pop digits must be a word\n for(let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--)stack.pop();\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */ /**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */ /**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */ /**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */ /**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */ /**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj,\n * \tformat?: Opt,\n * \tformatHref?: Opt,\n * \tnl2br?: boolean,\n * \ttagName?: Opt,\n * \ttarget?: Opt,\n * \trel?: Opt,\n * \tvalidate?: Opt,\n * \ttruncate?: Opt,\n * \tclassName?: Opt,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */ /**\n * @type Required\n */ const $efca0cb2e3ea1e67$var$defaults = {\n defaultProtocol: \"http\",\n events: null,\n format: $efca0cb2e3ea1e67$var$noop,\n formatHref: $efca0cb2e3ea1e67$var$noop,\n nl2br: false,\n tagName: \"a\",\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */ function $efca0cb2e3ea1e67$export$c019608e5b5bb4cb(opts, defaultRender) {\n if (defaultRender === void 0) defaultRender = null;\n let o = $efca0cb2e3ea1e67$var$assign({}, $efca0cb2e3ea1e67$var$defaults);\n if (opts) o = $efca0cb2e3ea1e67$var$assign(o, opts instanceof $efca0cb2e3ea1e67$export$c019608e5b5bb4cb ? opts.o : opts);\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for(let i = 0; i < ignoredTags.length; i++)uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n /** @protected */ this.o = o;\n if (defaultRender) this.defaultRender = defaultRender;\n this.ignoreTags = uppercaseIgnoredTags;\n}\n$efca0cb2e3ea1e67$export$c019608e5b5bb4cb.prototype = {\n o: $efca0cb2e3ea1e67$var$defaults,\n /**\n * @type string[]\n */ ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */ defaultRender (ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */ check (token) {\n return this.get(\"validate\", token.toString(), token);\n },\n // Private methods\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */ get (key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) return option;\n if (typeof option === \"object\") {\n option = token.t in option ? option[token.t] : $efca0cb2e3ea1e67$var$defaults[key];\n if (typeof option === \"function\" && isCallable) option = option(operator, token);\n } else if (typeof option === \"function\" && isCallable) option = option(operator, token.t, token);\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */ getObj (key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === \"function\" && operator != null) obj = obj(operator, token.t, token);\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */ render (token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get(\"render\", null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction $efca0cb2e3ea1e67$var$noop(val) {\n return val;\n}\nvar $efca0cb2e3ea1e67$export$41c562ebe57d11e2 = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n defaults: $efca0cb2e3ea1e67$var$defaults,\n Options: $efca0cb2e3ea1e67$export$c019608e5b5bb4cb,\n assign: $efca0cb2e3ea1e67$var$assign\n});\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/ /**\n * @param {string} value\n * @param {Token[]} tokens\n */ function $efca0cb2e3ea1e67$export$28075db42e06f164(value, tokens) {\n this.t = \"token\";\n this.v = value;\n this.tk = tokens;\n}\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */ $efca0cb2e3ea1e67$export$28075db42e06f164.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */ toString () {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */ toHref (scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */ toFormattedString (options) {\n const val = this.toString();\n const truncate = options.get(\"truncate\", val, this);\n const formatted = options.get(\"format\", val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + \"\\u2026\" : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */ toFormattedHref (options) {\n return options.get(\"formatHref\", this.toHref(options.get(\"defaultProtocol\")), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */ startIndex () {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */ endIndex () {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */ toObject (protocol) {\n if (protocol === void 0) protocol = $efca0cb2e3ea1e67$var$defaults.defaultProtocol;\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */ toFormattedObject (options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */ validate (options) {\n return options.get(\"validate\", this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */ render (options) {\n const token = this;\n const href = this.toHref(options.get(\"defaultProtocol\"));\n const formattedHref = options.get(\"formatHref\", href, this);\n const tagName = options.get(\"tagName\", href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get(\"className\", href, token);\n const target = options.get(\"target\", href, token);\n const rel = options.get(\"rel\", href, token);\n const attrs = options.getObj(\"attributes\", href, token);\n const eventListeners = options.getObj(\"events\", href, token);\n attributes.href = formattedHref;\n if (className) attributes.class = className;\n if (target) attributes.target = target;\n if (rel) attributes.rel = rel;\n if (attrs) $efca0cb2e3ea1e67$var$assign(attributes, attrs);\n return {\n tagName: tagName,\n attributes: attributes,\n content: content,\n eventListeners: eventListeners\n };\n }\n};\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */ function $efca0cb2e3ea1e67$export$21042e7280c1baba(type, props) {\n class Token extends $efca0cb2e3ea1e67$export$28075db42e06f164 {\n constructor(value, tokens){\n super(value, tokens);\n this.t = type;\n }\n }\n for(const p in props)Token.prototype[p] = props[p];\n Token.t = type;\n return Token;\n}\n/**\n\tRepresents a list of tokens making up a valid email address\n*/ const $efca0cb2e3ea1e67$var$Email = $efca0cb2e3ea1e67$export$21042e7280c1baba(\"email\", {\n isLink: true,\n toHref () {\n return \"mailto:\" + this.toString();\n }\n});\n/**\n\tRepresents some plain text\n*/ const $efca0cb2e3ea1e67$var$Text = $efca0cb2e3ea1e67$export$21042e7280c1baba(\"text\");\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/ const $efca0cb2e3ea1e67$var$Nl = $efca0cb2e3ea1e67$export$21042e7280c1baba(\"nl\");\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/ const $efca0cb2e3ea1e67$var$Url = $efca0cb2e3ea1e67$export$21042e7280c1baba(\"url\", {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */ toHref (scheme) {\n if (scheme === void 0) scheme = $efca0cb2e3ea1e67$var$defaults.defaultProtocol;\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */ hasProtocol () {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== $efca0cb2e3ea1e67$var$LOCALHOST && tokens[1].t === $efca0cb2e3ea1e67$var$COLON;\n }\n});\nvar $efca0cb2e3ea1e67$export$13e2537ceeaf8a3a = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n MultiToken: $efca0cb2e3ea1e67$export$28075db42e06f164,\n Base: $efca0cb2e3ea1e67$export$28075db42e06f164,\n createTokenClass: $efca0cb2e3ea1e67$export$21042e7280c1baba,\n Email: $efca0cb2e3ea1e67$var$Email,\n Text: $efca0cb2e3ea1e67$var$Text,\n Nl: $efca0cb2e3ea1e67$var$Nl,\n Url: $efca0cb2e3ea1e67$var$Url\n});\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/ const $efca0cb2e3ea1e67$var$makeState = (arg)=>new $efca0cb2e3ea1e67$export$7254cc27399e90bd(arg);\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections }} tokens\n */ function $efca0cb2e3ea1e67$var$init$1(_ref) {\n let { groups: groups } = _ref;\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([\n $efca0cb2e3ea1e67$var$AMPERSAND,\n $efca0cb2e3ea1e67$var$ASTERISK,\n $efca0cb2e3ea1e67$var$AT,\n $efca0cb2e3ea1e67$var$BACKSLASH,\n $efca0cb2e3ea1e67$var$BACKTICK,\n $efca0cb2e3ea1e67$var$CARET,\n $efca0cb2e3ea1e67$var$DOLLAR,\n $efca0cb2e3ea1e67$var$EQUALS,\n $efca0cb2e3ea1e67$var$HYPHEN,\n $efca0cb2e3ea1e67$var$NUM,\n $efca0cb2e3ea1e67$var$PERCENT,\n $efca0cb2e3ea1e67$var$PIPE,\n $efca0cb2e3ea1e67$var$PLUS,\n $efca0cb2e3ea1e67$var$POUND,\n $efca0cb2e3ea1e67$var$SLASH,\n $efca0cb2e3ea1e67$var$SYM,\n $efca0cb2e3ea1e67$var$TILDE,\n $efca0cb2e3ea1e67$var$UNDERSCORE\n ]);\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [\n $efca0cb2e3ea1e67$var$APOSTROPHE,\n $efca0cb2e3ea1e67$var$COLON,\n $efca0cb2e3ea1e67$var$COMMA,\n $efca0cb2e3ea1e67$var$DOT,\n $efca0cb2e3ea1e67$var$EXCLAMATION,\n $efca0cb2e3ea1e67$var$QUERY,\n $efca0cb2e3ea1e67$var$QUOTE,\n $efca0cb2e3ea1e67$var$SEMI,\n $efca0cb2e3ea1e67$var$OPENANGLEBRACKET,\n $efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET,\n $efca0cb2e3ea1e67$var$OPENBRACE,\n $efca0cb2e3ea1e67$var$CLOSEBRACE,\n $efca0cb2e3ea1e67$var$CLOSEBRACKET,\n $efca0cb2e3ea1e67$var$OPENBRACKET,\n $efca0cb2e3ea1e67$var$OPENPAREN,\n $efca0cb2e3ea1e67$var$CLOSEPAREN,\n $efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN,\n $efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN,\n $efca0cb2e3ea1e67$var$LEFTCORNERBRACKET,\n $efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET,\n $efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET,\n $efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET,\n $efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN,\n $efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN\n ];\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [\n $efca0cb2e3ea1e67$var$AMPERSAND,\n $efca0cb2e3ea1e67$var$APOSTROPHE,\n $efca0cb2e3ea1e67$var$ASTERISK,\n $efca0cb2e3ea1e67$var$BACKSLASH,\n $efca0cb2e3ea1e67$var$BACKTICK,\n $efca0cb2e3ea1e67$var$CARET,\n $efca0cb2e3ea1e67$var$DOLLAR,\n $efca0cb2e3ea1e67$var$EQUALS,\n $efca0cb2e3ea1e67$var$HYPHEN,\n $efca0cb2e3ea1e67$var$OPENBRACE,\n $efca0cb2e3ea1e67$var$CLOSEBRACE,\n $efca0cb2e3ea1e67$var$PERCENT,\n $efca0cb2e3ea1e67$var$PIPE,\n $efca0cb2e3ea1e67$var$PLUS,\n $efca0cb2e3ea1e67$var$POUND,\n $efca0cb2e3ea1e67$var$QUERY,\n $efca0cb2e3ea1e67$var$SLASH,\n $efca0cb2e3ea1e67$var$SYM,\n $efca0cb2e3ea1e67$var$TILDE,\n $efca0cb2e3ea1e67$var$UNDERSCORE\n ];\n // The universal starting state.\n /**\n * @type State\n */ const Start = $efca0cb2e3ea1e67$var$makeState();\n const Localpart = $efca0cb2e3ea1e67$var$tt(Start, $efca0cb2e3ea1e67$var$TILDE); // Local part of the email address\n $efca0cb2e3ea1e67$var$ta(Localpart, localpartAccepting, Localpart);\n $efca0cb2e3ea1e67$var$ta(Localpart, groups.domain, Localpart);\n const Domain = $efca0cb2e3ea1e67$var$makeState(), Scheme = $efca0cb2e3ea1e67$var$makeState(), SlashScheme = $efca0cb2e3ea1e67$var$makeState();\n $efca0cb2e3ea1e67$var$ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n $efca0cb2e3ea1e67$var$ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n $efca0cb2e3ea1e67$var$ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n $efca0cb2e3ea1e67$var$ta(Domain, localpartAccepting, Localpart);\n $efca0cb2e3ea1e67$var$ta(Domain, groups.domain, Domain);\n const LocalpartAt = $efca0cb2e3ea1e67$var$tt(Domain, $efca0cb2e3ea1e67$var$AT); // Local part of the email address plus @\n $efca0cb2e3ea1e67$var$tt(Localpart, $efca0cb2e3ea1e67$var$AT, LocalpartAt); // close to an email address now\n // Local part of an email address can be e.g. 'http' or 'mailto'\n $efca0cb2e3ea1e67$var$tt(Scheme, $efca0cb2e3ea1e67$var$AT, LocalpartAt);\n $efca0cb2e3ea1e67$var$tt(SlashScheme, $efca0cb2e3ea1e67$var$AT, LocalpartAt);\n const LocalpartDot = $efca0cb2e3ea1e67$var$tt(Localpart, $efca0cb2e3ea1e67$var$DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n $efca0cb2e3ea1e67$var$ta(LocalpartDot, localpartAccepting, Localpart);\n $efca0cb2e3ea1e67$var$ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = $efca0cb2e3ea1e67$var$makeState();\n $efca0cb2e3ea1e67$var$ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n $efca0cb2e3ea1e67$var$ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = $efca0cb2e3ea1e67$var$tt(EmailDomain, $efca0cb2e3ea1e67$var$DOT); // domain followed by DOT\n $efca0cb2e3ea1e67$var$ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = $efca0cb2e3ea1e67$var$makeState($efca0cb2e3ea1e67$var$Email); // Possible email address (could have more tlds)\n $efca0cb2e3ea1e67$var$ta(EmailDomainDot, groups.tld, Email$1);\n $efca0cb2e3ea1e67$var$ta(EmailDomainDot, groups.utld, Email$1);\n $efca0cb2e3ea1e67$var$tt(LocalpartAt, $efca0cb2e3ea1e67$var$LOCALHOST, Email$1);\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = $efca0cb2e3ea1e67$var$tt(EmailDomain, $efca0cb2e3ea1e67$var$HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n $efca0cb2e3ea1e67$var$ta(EmailDomainHyphen, groups.domain, EmailDomain);\n $efca0cb2e3ea1e67$var$ta(Email$1, groups.domain, EmailDomain);\n $efca0cb2e3ea1e67$var$tt(Email$1, $efca0cb2e3ea1e67$var$DOT, EmailDomainDot);\n $efca0cb2e3ea1e67$var$tt(Email$1, $efca0cb2e3ea1e67$var$HYPHEN, EmailDomainHyphen);\n // Final possible email states\n const EmailColon = $efca0cb2e3ea1e67$var$tt(Email$1, $efca0cb2e3ea1e67$var$COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */ $efca0cb2e3ea1e67$var$ta(EmailColon, groups.numeric, $efca0cb2e3ea1e67$var$Email); // URL followed by colon and port number\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = $efca0cb2e3ea1e67$var$tt(Domain, $efca0cb2e3ea1e67$var$HYPHEN); // domain followed by hyphen\n const DomainDot = $efca0cb2e3ea1e67$var$tt(Domain, $efca0cb2e3ea1e67$var$DOT); // domain followed by DOT\n $efca0cb2e3ea1e67$var$ta(DomainHyphen, groups.domain, Domain);\n $efca0cb2e3ea1e67$var$ta(DomainDot, localpartAccepting, Localpart);\n $efca0cb2e3ea1e67$var$ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = $efca0cb2e3ea1e67$var$makeState($efca0cb2e3ea1e67$var$Url); // Simplest possible URL with no query string\n $efca0cb2e3ea1e67$var$ta(DomainDot, groups.tld, DomainDotTld);\n $efca0cb2e3ea1e67$var$ta(DomainDot, groups.utld, DomainDotTld);\n $efca0cb2e3ea1e67$var$ta(DomainDotTld, groups.domain, Domain);\n $efca0cb2e3ea1e67$var$ta(DomainDotTld, localpartAccepting, Localpart);\n $efca0cb2e3ea1e67$var$tt(DomainDotTld, $efca0cb2e3ea1e67$var$DOT, DomainDot);\n $efca0cb2e3ea1e67$var$tt(DomainDotTld, $efca0cb2e3ea1e67$var$HYPHEN, DomainHyphen);\n $efca0cb2e3ea1e67$var$tt(DomainDotTld, $efca0cb2e3ea1e67$var$AT, LocalpartAt);\n const DomainDotTldColon = $efca0cb2e3ea1e67$var$tt(DomainDotTld, $efca0cb2e3ea1e67$var$COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = $efca0cb2e3ea1e67$var$makeState($efca0cb2e3ea1e67$var$Url); // TLD followed by a port number\n $efca0cb2e3ea1e67$var$ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n // Long URL with optional port and maybe query string\n const Url$1 = $efca0cb2e3ea1e67$var$makeState($efca0cb2e3ea1e67$var$Url);\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = $efca0cb2e3ea1e67$var$makeState(); // URL followed by some symbols (will not be part of the final URL)\n // Query strings\n $efca0cb2e3ea1e67$var$ta(Url$1, qsAccepting, Url$1);\n $efca0cb2e3ea1e67$var$ta(Url$1, qsNonAccepting, UrlNonaccept);\n $efca0cb2e3ea1e67$var$ta(UrlNonaccept, qsAccepting, Url$1);\n $efca0cb2e3ea1e67$var$ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n $efca0cb2e3ea1e67$var$tt(DomainDotTld, $efca0cb2e3ea1e67$var$SLASH, Url$1);\n $efca0cb2e3ea1e67$var$tt(DomainDotTldColonPort, $efca0cb2e3ea1e67$var$SLASH, Url$1);\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = $efca0cb2e3ea1e67$var$tt(Scheme, $efca0cb2e3ea1e67$var$COLON); // e.g., 'mailto:'\n const SlashSchemeColon = $efca0cb2e3ea1e67$var$tt(SlashScheme, $efca0cb2e3ea1e67$var$COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = $efca0cb2e3ea1e67$var$tt(SlashSchemeColon, $efca0cb2e3ea1e67$var$SLASH); // e.g., 'http:/'\n const UriPrefix = $efca0cb2e3ea1e67$var$tt(SlashSchemeColonSlash, $efca0cb2e3ea1e67$var$SLASH); // e.g., 'http://'\n // Scheme states can transition to domain states\n $efca0cb2e3ea1e67$var$ta(Scheme, groups.domain, Domain);\n $efca0cb2e3ea1e67$var$tt(Scheme, $efca0cb2e3ea1e67$var$DOT, DomainDot);\n $efca0cb2e3ea1e67$var$tt(Scheme, $efca0cb2e3ea1e67$var$HYPHEN, DomainHyphen);\n $efca0cb2e3ea1e67$var$ta(SlashScheme, groups.domain, Domain);\n $efca0cb2e3ea1e67$var$tt(SlashScheme, $efca0cb2e3ea1e67$var$DOT, DomainDot);\n $efca0cb2e3ea1e67$var$tt(SlashScheme, $efca0cb2e3ea1e67$var$HYPHEN, DomainHyphen);\n // Force URL with scheme prefix followed by anything sane\n $efca0cb2e3ea1e67$var$ta(SchemeColon, groups.domain, Url$1);\n $efca0cb2e3ea1e67$var$tt(SchemeColon, $efca0cb2e3ea1e67$var$SLASH, Url$1);\n $efca0cb2e3ea1e67$var$ta(UriPrefix, groups.domain, Url$1);\n $efca0cb2e3ea1e67$var$ta(UriPrefix, qsAccepting, Url$1);\n $efca0cb2e3ea1e67$var$tt(UriPrefix, $efca0cb2e3ea1e67$var$SLASH, Url$1);\n const bracketPairs = [\n [\n $efca0cb2e3ea1e67$var$OPENBRACE,\n $efca0cb2e3ea1e67$var$CLOSEBRACE\n ],\n // {}\n [\n $efca0cb2e3ea1e67$var$OPENBRACKET,\n $efca0cb2e3ea1e67$var$CLOSEBRACKET\n ],\n // []\n [\n $efca0cb2e3ea1e67$var$OPENPAREN,\n $efca0cb2e3ea1e67$var$CLOSEPAREN\n ],\n // ()\n [\n $efca0cb2e3ea1e67$var$OPENANGLEBRACKET,\n $efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET\n ],\n // <>\n [\n $efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN,\n $efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN\n ],\n // ()\n [\n $efca0cb2e3ea1e67$var$LEFTCORNERBRACKET,\n $efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET\n ],\n // 「」\n [\n $efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET,\n $efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET\n ],\n // 『』\n [\n $efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN,\n $efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN\n ] // <>\n ];\n for(let i = 0; i < bracketPairs.length; i++){\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = $efca0cb2e3ea1e67$var$tt(Url$1, OPEN); // URL followed by open bracket\n // Continue not accepting for open brackets\n $efca0cb2e3ea1e67$var$tt(UrlNonaccept, OPEN, UrlOpen);\n // Closing bracket component. This character WILL be included in the URL\n $efca0cb2e3ea1e67$var$tt(UrlOpen, CLOSE, Url$1);\n // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = $efca0cb2e3ea1e67$var$makeState($efca0cb2e3ea1e67$var$Url);\n $efca0cb2e3ea1e67$var$ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = $efca0cb2e3ea1e67$var$makeState(); // UrlOpen followed by some symbols it cannot end it\n $efca0cb2e3ea1e67$var$ta(UrlOpen, qsNonAccepting);\n // URL that begins with an opening bracket, followed by some symbols\n $efca0cb2e3ea1e67$var$ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n $efca0cb2e3ea1e67$var$ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n $efca0cb2e3ea1e67$var$ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n $efca0cb2e3ea1e67$var$ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n // Close brace/bracket to become regular URL\n $efca0cb2e3ea1e67$var$tt(UrlOpenQ, CLOSE, Url$1);\n $efca0cb2e3ea1e67$var$tt(UrlOpenSyms, CLOSE, Url$1);\n }\n $efca0cb2e3ea1e67$var$tt(Start, $efca0cb2e3ea1e67$var$LOCALHOST, DomainDotTld); // localhost is a valid URL state\n $efca0cb2e3ea1e67$var$tt(Start, $efca0cb2e3ea1e67$var$NL$1, $efca0cb2e3ea1e67$var$Nl); // single new line\n return {\n start: Start,\n tokens: $efca0cb2e3ea1e67$var$tk\n };\n}\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */ function $efca0cb2e3ea1e67$var$run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while(cursor < len){\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while(cursor < len && !(secondState = state.go(tokens[cursor].t)))// Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n while(cursor < len && (nextState = secondState || state.go(tokens[cursor].t))){\n // Get the next state\n secondState = null;\n state = nextState;\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) sinceAccepts++;\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push($efca0cb2e3ea1e67$var$initMultiToken($efca0cb2e3ea1e67$var$Text, input, textTokens));\n textTokens = [];\n }\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push($efca0cb2e3ea1e67$var$initMultiToken(Multi, input, subtokens));\n }\n }\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) multis.push($efca0cb2e3ea1e67$var$initMultiToken($efca0cb2e3ea1e67$var$Text, input, textTokens));\n return multis;\n}\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */ function $efca0cb2e3ea1e67$var$initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\nconst $efca0cb2e3ea1e67$var$warn = typeof console !== \"undefined\" && console && console.warn || (()=>{});\nconst $efca0cb2e3ea1e67$var$warnAdvice = \"until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.\";\n// Side-effect initialization state\nconst $efca0cb2e3ea1e67$var$INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n/**\n * @typedef {{\n * \tstart: State,\n * \ttokens: { groups: Collections } & typeof tk\n * }} ScannerInit\n */ /**\n * @typedef {{\n * \tstart: State,\n * \ttokens: typeof multi\n * }} ParserInit\n */ /**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */ /**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */ /**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */ function $efca0cb2e3ea1e67$export$aad8462122ac592b() {\n $efca0cb2e3ea1e67$export$7254cc27399e90bd.groups = {};\n $efca0cb2e3ea1e67$var$INIT.scanner = null;\n $efca0cb2e3ea1e67$var$INIT.parser = null;\n $efca0cb2e3ea1e67$var$INIT.tokenQueue = [];\n $efca0cb2e3ea1e67$var$INIT.pluginQueue = [];\n $efca0cb2e3ea1e67$var$INIT.customSchemes = [];\n $efca0cb2e3ea1e67$var$INIT.initialized = false;\n}\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */ function $efca0cb2e3ea1e67$export$56d1f1cb1f3c0e96(name, plugin) {\n if (typeof plugin !== \"function\") throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n for(let i = 0; i < $efca0cb2e3ea1e67$var$INIT.tokenQueue.length; i++)if (name === $efca0cb2e3ea1e67$var$INIT.tokenQueue[i][0]) {\n $efca0cb2e3ea1e67$var$warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n $efca0cb2e3ea1e67$var$INIT.tokenQueue[i] = [\n name,\n plugin\n ];\n return;\n }\n $efca0cb2e3ea1e67$var$INIT.tokenQueue.push([\n name,\n plugin\n ]);\n if ($efca0cb2e3ea1e67$var$INIT.initialized) $efca0cb2e3ea1e67$var$warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${$efca0cb2e3ea1e67$var$warnAdvice}`);\n}\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */ function $efca0cb2e3ea1e67$export$7612db19fb8beb1e(name, plugin) {\n if (typeof plugin !== \"function\") throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n for(let i = 0; i < $efca0cb2e3ea1e67$var$INIT.pluginQueue.length; i++)if (name === $efca0cb2e3ea1e67$var$INIT.pluginQueue[i][0]) {\n $efca0cb2e3ea1e67$var$warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n $efca0cb2e3ea1e67$var$INIT.pluginQueue[i] = [\n name,\n plugin\n ];\n return;\n }\n $efca0cb2e3ea1e67$var$INIT.pluginQueue.push([\n name,\n plugin\n ]);\n if ($efca0cb2e3ea1e67$var$INIT.initialized) $efca0cb2e3ea1e67$var$warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${$efca0cb2e3ea1e67$var$warnAdvice}`);\n}\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} protocol\n * @param {boolean} [optionalSlashSlash]\n */ function $efca0cb2e3ea1e67$export$821627edc2d26f5f(scheme, optionalSlashSlash) {\n if (optionalSlashSlash === void 0) optionalSlashSlash = false;\n if ($efca0cb2e3ea1e67$var$INIT.initialized) $efca0cb2e3ea1e67$var$warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${$efca0cb2e3ea1e67$var$warnAdvice}`);\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n $efca0cb2e3ea1e67$var$INIT.customSchemes.push([\n scheme,\n optionalSlashSlash\n ]);\n}\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */ function $efca0cb2e3ea1e67$export$2cd8252107eb640b() {\n // Initialize scanner state machine and plugins\n $efca0cb2e3ea1e67$var$INIT.scanner = $efca0cb2e3ea1e67$var$init$2($efca0cb2e3ea1e67$var$INIT.customSchemes);\n for(let i = 0; i < $efca0cb2e3ea1e67$var$INIT.tokenQueue.length; i++)$efca0cb2e3ea1e67$var$INIT.tokenQueue[i][1]({\n scanner: $efca0cb2e3ea1e67$var$INIT.scanner\n });\n // Initialize parser state machine and plugins\n $efca0cb2e3ea1e67$var$INIT.parser = $efca0cb2e3ea1e67$var$init$1($efca0cb2e3ea1e67$var$INIT.scanner.tokens);\n for(let i = 0; i < $efca0cb2e3ea1e67$var$INIT.pluginQueue.length; i++)$efca0cb2e3ea1e67$var$INIT.pluginQueue[i][1]({\n scanner: $efca0cb2e3ea1e67$var$INIT.scanner,\n parser: $efca0cb2e3ea1e67$var$INIT.parser\n });\n $efca0cb2e3ea1e67$var$INIT.initialized = true;\n}\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */ function $efca0cb2e3ea1e67$export$660b2ee2d4fb4eff(str) {\n if (!$efca0cb2e3ea1e67$var$INIT.initialized) $efca0cb2e3ea1e67$export$2cd8252107eb640b();\n return $efca0cb2e3ea1e67$var$run($efca0cb2e3ea1e67$var$INIT.parser.start, str, $efca0cb2e3ea1e67$var$run$1($efca0cb2e3ea1e67$var$INIT.scanner.start, str));\n}\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */ function $efca0cb2e3ea1e67$export$71aa6c912b956294(str, type, opts) {\n if (type === void 0) type = null;\n if (opts === void 0) opts = null;\n if (type && typeof type === \"object\") {\n if (opts) throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n opts = type;\n type = null;\n }\n const options = new $efca0cb2e3ea1e67$export$c019608e5b5bb4cb(opts);\n const tokens = $efca0cb2e3ea1e67$export$660b2ee2d4fb4eff(str);\n const filtered = [];\n for(let i = 0; i < tokens.length; i++){\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) filtered.push(token.toFormattedObject(options));\n }\n return filtered;\n}\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */ function $efca0cb2e3ea1e67$export$e0969da9b8fb378d(str, type) {\n if (type === void 0) type = null;\n const tokens = $efca0cb2e3ea1e67$export$660b2ee2d4fb4eff(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\n\nconst $3bbe59931da17a80$export$c0bb0b647f701bb5 = (0, $ea6c2efa7087cd4a$export$2e2bcd8739ae039).bind((0, $b2a774aae58c7b4e$export$c8a8987d4410bf2d));\n\n\n// RFC 1459\nconst $bd3c59ab25aed5ca$export$cac9ca3596de2b3a = \"001\";\nconst $bd3c59ab25aed5ca$export$533b33f42abb0931 = \"002\";\nconst $bd3c59ab25aed5ca$export$ad367ba3102df7fd = \"003\";\nconst $bd3c59ab25aed5ca$export$31b0bce566d09826 = \"004\";\nconst $bd3c59ab25aed5ca$export$1d0c7ae9b6b17819 = \"005\";\nconst $bd3c59ab25aed5ca$export$6184319b67962807 = \"221\";\nconst $bd3c59ab25aed5ca$export$5075048a1d9ba016 = \"263\";\nconst $bd3c59ab25aed5ca$export$cfb24fa60294f9b1 = \"301\";\nconst $bd3c59ab25aed5ca$export$9514b1191eaefcec = \"311\";\nconst $bd3c59ab25aed5ca$export$5fb4b19390213db9 = \"312\";\nconst $bd3c59ab25aed5ca$export$ed3b11a38dbfed2c = \"313\";\nconst $bd3c59ab25aed5ca$export$322843849bf6282 = \"317\";\nconst $bd3c59ab25aed5ca$export$ec20f8e9d0ad5539 = \"318\";\nconst $bd3c59ab25aed5ca$export$1982ce771bb0f0ea = \"319\";\nconst $bd3c59ab25aed5ca$export$1ea987b9a16ea266 = \"315\";\nconst $bd3c59ab25aed5ca$export$8e826dfe9edc5be1 = \"324\";\nconst $bd3c59ab25aed5ca$export$a675057415015158 = \"331\";\nconst $bd3c59ab25aed5ca$export$c233ee342453910 = \"332\";\nconst $bd3c59ab25aed5ca$export$b1fa6c92095fdab1 = \"333\";\nconst $bd3c59ab25aed5ca$export$6bc24f4e6578b579 = \"341\";\nconst $bd3c59ab25aed5ca$export$cf24d3ab5a850c9f = \"346\";\nconst $bd3c59ab25aed5ca$export$edbdd9cee2ab5be8 = \"347\";\nconst $bd3c59ab25aed5ca$export$a1ba792f52c3a77c = \"348\";\nconst $bd3c59ab25aed5ca$export$385b5d59fd211cdd = \"349\";\nconst $bd3c59ab25aed5ca$export$ea7f3a22477f88c4 = \"352\";\nconst $bd3c59ab25aed5ca$export$18c4a4c5c97dce9b = \"353\";\nconst $bd3c59ab25aed5ca$export$f45306e17f085f4e = \"354\";\nconst $bd3c59ab25aed5ca$export$698923df90b7ea6d = \"366\";\nconst $bd3c59ab25aed5ca$export$15ba3f1b034be103 = \"367\";\nconst $bd3c59ab25aed5ca$export$1766db7a19d745c = \"368\";\nconst $bd3c59ab25aed5ca$export$3db4cc949c7e95b3 = \"372\";\nconst $bd3c59ab25aed5ca$export$dc8b28cc395fae80 = \"375\";\nconst $bd3c59ab25aed5ca$export$cad5f2640c65ad1e = \"376\";\nconst $bd3c59ab25aed5ca$export$f0fc9feb21c3ef1b = \"400\";\nconst $bd3c59ab25aed5ca$export$7ea30511ef6ec211 = \"401\";\nconst $bd3c59ab25aed5ca$export$b889507e4da9d85b = \"403\";\nconst $bd3c59ab25aed5ca$export$d9dd0c5028129ffb = \"405\";\nconst $bd3c59ab25aed5ca$export$da101e59b60ec32a = \"421\";\nconst $bd3c59ab25aed5ca$export$7e8b5ab33a021d11 = \"422\";\nconst $bd3c59ab25aed5ca$export$4743685aa8150ce0 = \"432\";\nconst $bd3c59ab25aed5ca$export$8b9229ff310aa80f = \"433\";\nconst $bd3c59ab25aed5ca$export$7610afb40d396829 = \"436\";\nconst $bd3c59ab25aed5ca$export$e9c321b4bd63421d = \"461\";\nconst $bd3c59ab25aed5ca$export$3ae3da5f6b8010ab = \"463\";\nconst $bd3c59ab25aed5ca$export$9d6a3a6ab4c58e66 = \"464\";\nconst $bd3c59ab25aed5ca$export$1e0e84545800b47a = \"465\";\nconst $bd3c59ab25aed5ca$export$6ce9c178695ddc97 = \"471\";\nconst $bd3c59ab25aed5ca$export$1750cbcab1b05667 = \"473\";\nconst $bd3c59ab25aed5ca$export$30b572b38bbeae93 = \"474\";\nconst $bd3c59ab25aed5ca$export$cc57fea2b719b6fa = \"475\";\nconst $bd3c59ab25aed5ca$export$2b6618e870672e76 = \"437\";\nconst $bd3c59ab25aed5ca$export$7304bc4447b68935 = \"328\";\nconst $bd3c59ab25aed5ca$export$110395ee82c419bd = \"329\";\nconst $bd3c59ab25aed5ca$export$903bdc290bba373b = \"728\";\nconst $bd3c59ab25aed5ca$export$e4ff1ea9594cfaf7 = \"729\";\nconst $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3 = \"730\";\nconst $bd3c59ab25aed5ca$export$69132af27147d725 = \"731\";\nconst $bd3c59ab25aed5ca$export$4cefb1e79b9679ac = \"732\";\nconst $bd3c59ab25aed5ca$export$1a821ef70562463 = \"733\";\nconst $bd3c59ab25aed5ca$export$4263d790dc849b7 = \"734\";\nconst $bd3c59ab25aed5ca$export$97b01f8c0b76e599 = \"900\";\nconst $bd3c59ab25aed5ca$export$3ae55a67359785dc = \"901\";\nconst $bd3c59ab25aed5ca$export$37e8d81e1e359f6e = \"902\";\nconst $bd3c59ab25aed5ca$export$cba31abc2138b15e = \"903\";\nconst $bd3c59ab25aed5ca$export$724018c6aa2adbd0 = \"904\";\nconst $bd3c59ab25aed5ca$export$47bb6ff9e6eba14f = \"905\";\nconst $bd3c59ab25aed5ca$export$aae27a063aae3a16 = \"906\";\nconst $bd3c59ab25aed5ca$export$a74ae703a035d4a0 = \"907\";\nconst $bd3c59ab25aed5ca$export$23f1deb5c0b73a8d = \"~&@%+\";\nconst $bd3c59ab25aed5ca$export$85cfa99a207ea7bc = \"#&+!\";\nconst $bd3c59ab25aed5ca$var$tagEscapeMap = {\n \";\": \"\\\\:\",\n \" \": \"\\\\s\",\n \"\\\\\": \"\\\\\\\\\",\n \"\\r\": \"\\\\r\",\n \"\\n\": \"\\\\n\"\n};\nconst $bd3c59ab25aed5ca$var$tagUnescapeMap = Object.fromEntries(Object.entries($bd3c59ab25aed5ca$var$tagEscapeMap).map(([from, to])=>[\n to,\n from\n ]));\nfunction $bd3c59ab25aed5ca$var$escapeTag(s) {\n return String(s).replace(/[; \\\\\\r\\n]/g, (ch)=>$bd3c59ab25aed5ca$var$tagEscapeMap[ch]);\n}\nfunction $bd3c59ab25aed5ca$var$unescapeTag(s) {\n return s.replace(/\\\\[:s\\\\rn]/g, (seq)=>$bd3c59ab25aed5ca$var$tagUnescapeMap[seq]);\n}\nfunction $bd3c59ab25aed5ca$export$ede4b2e0172bbdb1(s) {\n let tags = {};\n s.split(\";\").forEach((s)=>{\n if (!s) return;\n let parts = s.split(\"=\", 2);\n let k = parts[0];\n let v = null;\n if (parts.length == 2) {\n v = $bd3c59ab25aed5ca$var$unescapeTag(parts[1]);\n if (v.endsWith(\"\\\\\")) v = v.slice(0, v.length - 1);\n }\n tags[k] = v;\n });\n return tags;\n}\nfunction $bd3c59ab25aed5ca$export$c27de7dba30c634a(tags) {\n let l = [];\n for(let k in tags){\n if (tags[k] === undefined || tags[k] === null) {\n l.push(k);\n continue;\n }\n let v = $bd3c59ab25aed5ca$var$escapeTag(tags[k]);\n l.push(k + \"=\" + v);\n }\n return l.join(\";\");\n}\nfunction $bd3c59ab25aed5ca$export$3059e96a5fe807c3(s) {\n let prefix = {\n name: null,\n user: null,\n host: null\n };\n let host = null;\n let i = s.indexOf(\"@\");\n if (i > 0) {\n host = s.slice(i + 1);\n s = s.slice(0, i);\n }\n let user = null;\n i = s.indexOf(\"!\");\n if (i > 0) {\n user = s.slice(i + 1);\n s = s.slice(0, i);\n }\n return {\n name: s,\n user: user,\n host: host\n };\n}\nfunction $bd3c59ab25aed5ca$var$formatPrefix(prefix) {\n let s = prefix.name;\n if (prefix.user) s += \"!\" + prefix.user;\n if (prefix.host) s += \"@\" + prefix.host;\n return s;\n}\nfunction $bd3c59ab25aed5ca$export$f2f615077a189f21(s) {\n if (s.endsWith(\"\\r\\n\")) s = s.slice(0, s.length - 2);\n let msg = {\n tags: {},\n prefix: null,\n command: null,\n params: []\n };\n if (s.startsWith(\"@\")) {\n let i = s.indexOf(\" \");\n if (i < 0) throw new Error(\"expected a space after tags\");\n msg.tags = $bd3c59ab25aed5ca$export$ede4b2e0172bbdb1(s.slice(1, i));\n s = s.slice(i + 1);\n }\n if (s.startsWith(\":\")) {\n let i = s.indexOf(\" \");\n if (i < 0) throw new Error(\"expected a space after prefix\");\n msg.prefix = $bd3c59ab25aed5ca$export$3059e96a5fe807c3(s.slice(1, i));\n s = s.slice(i + 1);\n }\n let i = s.indexOf(\" \");\n if (i < 0) {\n msg.command = s;\n return msg;\n }\n msg.command = s.slice(0, i);\n s = s.slice(i + 1);\n while(true){\n if (s.startsWith(\":\")) {\n msg.params.push(s.slice(1));\n break;\n }\n i = s.indexOf(\" \");\n if (i < 0) {\n msg.params.push(s);\n break;\n }\n msg.params.push(s.slice(0, i));\n s = s.slice(i + 1);\n }\n return msg;\n}\nfunction $bd3c59ab25aed5ca$export$25868d1e8e76735f(msg) {\n let s = \"\";\n if (msg.tags && Object.keys(msg.tags).length > 0) s += \"@\" + $bd3c59ab25aed5ca$export$c27de7dba30c634a(msg.tags) + \" \";\n if (msg.prefix) s += \":\" + $bd3c59ab25aed5ca$var$formatPrefix(msg.prefix) + \" \";\n s += msg.command;\n if (msg.params && msg.params.length > 0) {\n for(let i = 0; i < msg.params.length - 1; i++)s += \" \" + msg.params[i];\n let last = String(msg.params[msg.params.length - 1]);\n if (last.length === 0 || last.startsWith(\":\") || last.indexOf(\" \") >= 0) s += \" :\" + last;\n else s += \" \" + last;\n }\n return s;\n}\nfunction $bd3c59ab25aed5ca$export$4812b7165edd26af(s, allowedPrefixes = $bd3c59ab25aed5ca$export$23f1deb5c0b73a8d) {\n let i;\n for(i = 0; i < s.length; i++){\n if (allowedPrefixes.indexOf(s[i]) < 0) break;\n }\n return {\n prefix: s.slice(0, i),\n name: s.slice(i)\n };\n}\nconst $bd3c59ab25aed5ca$var$alphaNum = (()=>{\n try {\n return new RegExp(/^[\\p{L}0-9]$/, \"u\");\n } catch (e) {\n return new RegExp(/^[a-zA-Z0-9]$/, \"u\");\n }\n})();\nconst $bd3c59ab25aed5ca$var$space = new RegExp(/^\\s$/);\nfunction $bd3c59ab25aed5ca$var$isWordBoundary(ch) {\n switch(ch){\n case \"-\":\n case \"_\":\n case \"|\":\n return false;\n default:\n return !$bd3c59ab25aed5ca$var$alphaNum.test(ch);\n }\n}\nfunction $bd3c59ab25aed5ca$var$isURIPrefix(text) {\n for(let i = text.length - 1; i >= 0; i--)if ($bd3c59ab25aed5ca$var$space.test(text[i])) {\n text = text.slice(i);\n break;\n }\n let i = text.indexOf(\"://\");\n if (i <= 0) return false;\n // See RFC 3986 section 3\n let ch = text[i - 1];\n switch(ch){\n case \"+\":\n case \"-\":\n case \".\":\n return true;\n default:\n return $bd3c59ab25aed5ca$var$alphaNum.test(ch);\n }\n}\nfunction $bd3c59ab25aed5ca$export$fdd47ba7a4ecfeff(msg, nick, cm) {\n if (msg.command != \"PRIVMSG\" && msg.command != \"NOTICE\") return false;\n nick = cm(nick);\n if (msg.prefix && cm(msg.prefix.name) == nick) return false; // Our own messages aren't highlights\n let text = cm(msg.params[1]);\n while(true){\n let i = text.indexOf(nick);\n if (i < 0) return false;\n // Detect word boundaries\n let left = \"\\0\", right = \"\\0\";\n if (i > 0) left = text[i - 1];\n if (i + nick.length < text.length) right = text[i + nick.length];\n if ($bd3c59ab25aed5ca$var$isWordBoundary(left) && $bd3c59ab25aed5ca$var$isWordBoundary(right) && !$bd3c59ab25aed5ca$var$isURIPrefix(text.slice(0, i))) return true;\n text = text.slice(i + nick.length);\n }\n}\nfunction $bd3c59ab25aed5ca$export$8b29011f3cb5e124(msg) {\n if (msg.command != \"PRIVMSG\" && msg.command != \"NOTICE\") return false;\n return msg.params[0].startsWith(\"$\");\n}\nfunction $bd3c59ab25aed5ca$export$e6127cc7fe7395c3(cmd) {\n if (cmd >= \"400\" && cmd <= \"568\") return true;\n switch(cmd){\n case $bd3c59ab25aed5ca$export$37e8d81e1e359f6e:\n case $bd3c59ab25aed5ca$export$724018c6aa2adbd0:\n case $bd3c59ab25aed5ca$export$47bb6ff9e6eba14f:\n case $bd3c59ab25aed5ca$export$aae27a063aae3a16:\n case $bd3c59ab25aed5ca$export$a74ae703a035d4a0:\n case $bd3c59ab25aed5ca$export$4263d790dc849b7:\n return true;\n case \"FAIL\":\n return true;\n default:\n return false;\n }\n}\nfunction $bd3c59ab25aed5ca$export$3ae94a2503e890a1(date) {\n // ISO 8601\n let YYYY = date.getUTCFullYear().toString().padStart(4, \"0\");\n let MM = (date.getUTCMonth() + 1).toString().padStart(2, \"0\");\n let DD = date.getUTCDate().toString().padStart(2, \"0\");\n let hh = date.getUTCHours().toString().padStart(2, \"0\");\n let mm = date.getUTCMinutes().toString().padStart(2, \"0\");\n let ss = date.getUTCSeconds().toString().padStart(2, \"0\");\n let sss = date.getUTCMilliseconds().toString().padStart(3, \"0\");\n return `${YYYY}-${MM}-${DD}T${hh}:${mm}:${ss}.${sss}Z`;\n}\nfunction $bd3c59ab25aed5ca$export$60937d95e568734f(msg) {\n if (msg.command != \"PRIVMSG\" && msg.command != \"NOTICE\") return null;\n let text = msg.params[1];\n if (!text.startsWith(\"\\x01\")) return null;\n text = text.slice(1);\n if (text.endsWith(\"\\x01\")) text = text.slice(0, -1);\n let ctcp;\n let i = text.indexOf(\" \");\n if (i >= 0) ctcp = {\n command: text.slice(0, i),\n param: text.slice(i + 1)\n };\n else ctcp = {\n command: text,\n param: \"\"\n };\n ctcp.command = ctcp.command.toUpperCase();\n return ctcp;\n}\nfunction $bd3c59ab25aed5ca$var$unescapeISUPPORTValue(s) {\n return s.replace(/\\\\x[0-9A-Z]{2}/gi, (esc)=>{\n let hex = esc.slice(2);\n return String.fromCharCode(parseInt(hex, 16));\n });\n}\nclass $bd3c59ab25aed5ca$export$23c4b2cbd0633e6b {\n raw = new Map();\n parse(tokens) {\n tokens.forEach((tok)=>{\n if (tok.startsWith(\"-\")) {\n let k = tok.slice(1);\n this.raw.delete(k.toUpperCase());\n return;\n }\n let i = tok.indexOf(\"=\");\n let k = tok, v = \"\";\n if (i >= 0) {\n k = tok.slice(0, i);\n v = $bd3c59ab25aed5ca$var$unescapeISUPPORTValue(tok.slice(i + 1));\n }\n k = k.toUpperCase();\n this.raw.set(k, v);\n });\n }\n caseMapping() {\n let name = this.raw.get(\"CASEMAPPING\");\n if (!name) return $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459;\n let cm = $bd3c59ab25aed5ca$export$39aea81548242927.byName(name);\n if (!cm) {\n console.error(\"Unsupported case-mapping '\" + name + \"', falling back to RFC 1459\");\n return $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459;\n }\n return cm;\n }\n monitor() {\n if (!this.raw.has(\"MONITOR\")) return 0;\n let v = this.raw.get(\"MONITOR\");\n if (v === \"\") return Infinity;\n return parseInt(v, 10);\n }\n whox() {\n return this.raw.has(\"WHOX\");\n }\n prefix() {\n return this.raw.get(\"PREFIX\") || \"\";\n }\n chanTypes() {\n return this.raw.get(\"CHANTYPES\") || $bd3c59ab25aed5ca$export$85cfa99a207ea7bc;\n }\n statusMsg() {\n return this.raw.get(\"STATUSMSG\");\n }\n network() {\n return this.raw.get(\"NETWORK\");\n }\n chatHistory() {\n if (!this.raw.has(\"CHATHISTORY\")) return 0;\n let n = parseInt(this.raw.get(\"CHATHISTORY\"), 10);\n if (n <= 0) return Infinity;\n return n;\n }\n bouncerNetID() {\n return this.raw.get(\"BOUNCER_NETID\");\n }\n chanModes() {\n const stdChanModes = [\n \"beI\",\n \"k\",\n \"l\",\n \"imnst\"\n ];\n if (!this.raw.has(\"CHANMODES\")) return stdChanModes;\n let chanModes = this.raw.get(\"CHANMODES\").split(\",\");\n if (chanModes.length != 4) {\n console.error(\"Invalid CHANMODES: \", this.raw.get(\"CHANMODES\"));\n return stdChanModes;\n }\n return chanModes;\n }\n bot() {\n return this.raw.get(\"BOT\");\n }\n userLen() {\n if (!this.raw.has(\"USERLEN\")) return 20;\n return parseInt(this.raw.get(\"USERLEN\"), 10);\n }\n hostLen() {\n if (!this.raw.has(\"HOSTLEN\")) return 63;\n return parseInt(this.raw.get(\"HOSTLEN\"), 10);\n }\n lineLen() {\n if (!this.raw.has(\"LINELEN\")) return 512;\n return parseInt(this.raw.get(\"LINELEN\"), 10);\n }\n filehost() {\n return this.raw.get(\"SOJU.IM/FILEHOST\");\n }\n}\nfunction $bd3c59ab25aed5ca$export$feed2f17626e5168(isupport, nick, target) {\n let user = \"_\".repeat(isupport.userLen());\n let host = \"_\".repeat(isupport.hostLen());\n let prefix = {\n name: nick,\n user: user,\n host: host\n };\n let msg = {\n prefix: prefix,\n command: \"PRIVMSG\",\n params: [\n target,\n \"\"\n ]\n };\n let raw = $bd3c59ab25aed5ca$export$25868d1e8e76735f(msg) + \"\\r\\n\";\n return isupport.lineLen() - raw.length;\n}\nconst $bd3c59ab25aed5ca$export$39aea81548242927 = {\n ASCII (str) {\n let out = \"\";\n for(let i = 0; i < str.length; i++){\n let ch = str[i];\n if (\"A\" <= ch && ch <= \"Z\") ch = ch.toLowerCase();\n out += ch;\n }\n return out;\n },\n RFC1459 (str) {\n let out = \"\";\n for(let i = 0; i < str.length; i++){\n let ch = str[i];\n if (\"A\" <= ch && ch <= \"Z\") ch = ch.toLowerCase();\n else if (ch == \"{\") ch = \"[\";\n else if (ch == \"}\") ch = \"]\";\n else if (ch == \"\\\\\") ch = \"|\";\n else if (ch == \"~\") ch = \"^\";\n out += ch;\n }\n return out;\n },\n RFC1459Strict (str) {\n let out = \"\";\n for(let i = 0; i < str.length; i++){\n let ch = str[i];\n if (\"A\" <= ch && ch <= \"Z\") ch = ch.toLowerCase();\n else if (ch == \"{\") ch = \"[\";\n else if (ch == \"}\") ch = \"]\";\n else if (ch == \"\\\\\") ch = \"|\";\n out += ch;\n }\n return out;\n },\n byName (name) {\n switch(name){\n case \"ascii\":\n return $bd3c59ab25aed5ca$export$39aea81548242927.ASCII;\n case \"rfc1459\":\n return $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459;\n case \"rfc1459-strict\":\n return $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459Strict;\n }\n return null;\n }\n};\nfunction $bd3c59ab25aed5ca$var$createIterator(next) {\n let it = {\n next: next\n };\n // Not defining this can lead to surprises when feeding the iterator\n // to e.g. Array.from\n it[Symbol.iterator] = ()=>it;\n return it;\n}\nfunction $bd3c59ab25aed5ca$var$mapIterator(it, f) {\n return $bd3c59ab25aed5ca$var$createIterator(()=>{\n let { value: value, done: done } = it.next();\n if (done) return {\n done: true\n };\n return {\n value: f(value),\n done: false\n };\n });\n}\nclass $bd3c59ab25aed5ca$export$6296a711f00288b1 {\n caseMap = null;\n map = null;\n constructor(iterable, cm){\n if (iterable instanceof $bd3c59ab25aed5ca$export$6296a711f00288b1 && (iterable.caseMap === cm || !cm)) {\n // Fast-path if we're just cloning another CaseMapMap\n this.caseMap = iterable.caseMap;\n this.map = new Map(iterable.map);\n } else {\n if (!cm) throw new Error(\"Missing case-mapping when creating CaseMapMap\");\n this.caseMap = cm;\n this.map = new Map();\n if (iterable) for (let [key, value] of iterable)this.set(key, value);\n }\n }\n get size() {\n return this.map.size;\n }\n has(key) {\n return this.map.has(this.caseMap(key));\n }\n get(key) {\n let kv = this.map.get(this.caseMap(key));\n if (kv) return kv.value;\n return undefined;\n }\n set(key, value) {\n this.map.set(this.caseMap(key), {\n key: key,\n value: value\n });\n }\n delete(key) {\n this.map.delete(this.caseMap(key));\n }\n entries() {\n let it = this.map.values();\n return $bd3c59ab25aed5ca$var$mapIterator(it, (kv)=>{\n return [\n kv.key,\n kv.value\n ];\n });\n }\n keys() {\n let it = this.map.values();\n return $bd3c59ab25aed5ca$var$mapIterator(it, (kv)=>{\n return kv.key;\n });\n }\n values() {\n let it = this.map.values();\n return $bd3c59ab25aed5ca$var$mapIterator(it, (kv)=>{\n return kv.value;\n });\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n}\nfunction $bd3c59ab25aed5ca$export$3b27c9ff97cdb350(str) {\n if (str[0] !== \"(\") throw new Error(\"malformed ISUPPORT PREFIX value: expected opening parenthesis\");\n let sep = str.indexOf(\")\");\n if (sep < 0) throw new Error(\"malformed ISUPPORT PREFIX value: expected closing parenthesis\");\n let n = str.length - sep - 1;\n let memberships = [];\n for(let i = 0; i < n; i++){\n let mode = str[i + 1];\n let prefix = str[sep + i + 1];\n memberships.push({\n mode: mode,\n prefix: prefix\n });\n }\n return memberships;\n}\nfunction $bd3c59ab25aed5ca$export$f4751a564f6d84a3(msg, type) {\n let batch = msg.batch;\n while(batch){\n if (batch.type === type) return batch;\n batch = batch.parent;\n }\n return null;\n}\nfunction $bd3c59ab25aed5ca$export$ec840f96613effe2(msg) {\n if (msg.tags.label) return msg.tags.label;\n let batch = msg.batch;\n while(batch){\n if (batch.tags.label) return batch.tags.label;\n batch = batch.parent;\n }\n return null;\n}\nfunction $bd3c59ab25aed5ca$export$6115b92b9c2241a7(msg, isupport, callback) {\n let [a, b, c, d] = isupport.chanModes();\n let prefix = isupport.prefix();\n let typeByMode = new Map();\n Array.from(a).forEach((mode)=>typeByMode.set(mode, \"A\"));\n Array.from(b).forEach((mode)=>typeByMode.set(mode, \"B\"));\n Array.from(c).forEach((mode)=>typeByMode.set(mode, \"C\"));\n Array.from(d).forEach((mode)=>typeByMode.set(mode, \"D\"));\n $bd3c59ab25aed5ca$export$3b27c9ff97cdb350(prefix).forEach((membership)=>typeByMode.set(membership.mode, \"B\"));\n if (msg.command !== \"MODE\") throw new Error(\"Expected a MODE message\");\n let change = msg.params[1];\n let args = msg.params.slice(2);\n let plusMinus = null;\n let j = 0;\n for(let i = 0; i < change.length; i++){\n if (change[i] === \"+\" || change[i] === \"-\") {\n plusMinus = change[i];\n continue;\n }\n if (!plusMinus) throw new Error(\"malformed mode string: missing plus/minus\");\n let mode = change[i];\n let add = plusMinus === \"+\";\n let modeType = typeByMode.get(mode);\n if (!modeType) continue;\n let arg = null;\n if (modeType === \"A\" || modeType === \"B\" || modeType === \"C\" && add) {\n arg = args[j];\n j++;\n }\n callback(mode, add, arg);\n }\n}\nfunction $bd3c59ab25aed5ca$export$64ec8def5466157c(realname, nick) {\n if (!realname || realname === nick) return false;\n if (realname.toLowerCase() === \"realname\" || realname.toLowerCase() === \"unknown\" || realname.toLowerCase() === \"fullname\") return false;\n // TODO: add more quirks\n return true;\n}\nfunction $bd3c59ab25aed5ca$export$4b3d9a5bae55976(str) {\n if (!str.startsWith(\"irc://\") && !str.startsWith(\"ircs://\")) return null;\n str = str.slice(str.indexOf(\":\") + 3);\n let loc;\n let i = str.indexOf(\"/\");\n if (i < 0) {\n loc = str;\n str = \"\";\n } else {\n loc = str.slice(0, i);\n str = str.slice(i + 1);\n }\n let host = loc;\n i = loc.indexOf(\"@\");\n if (i >= 0) host = loc.slice(i + 1);\n i = str.indexOf(\"?\");\n if (i >= 0) str = str.slice(0, i);\n let enttype;\n i = str.indexOf(\",\");\n if (i >= 0) {\n let flags = str.slice(i + 1).split(\",\");\n str = str.slice(0, i);\n if (flags.indexOf(\"isuser\") >= 0) enttype = \"user\";\n else if (flags.indexOf(\"ischannel\") >= 0) enttype = \"channel\";\n // TODO: parse hosttype\n }\n let entity = decodeURIComponent(str);\n if (!enttype) // TODO: technically we should use the PREFIX ISUPPORT here\n enttype = entity.startsWith(\"#\") ? \"channel\" : \"user\";\n return {\n host: host,\n enttype: enttype,\n entity: entity\n };\n}\nfunction $bd3c59ab25aed5ca$export$b1ef46223b559f9d({ host: host, enttype: enttype, entity: entity } = {}) {\n host = host || \"\";\n entity = entity || \"\";\n let s = \"irc://\" + host + \"/\" + encodeURIComponent(entity);\n if (enttype) s += \",is\" + enttype;\n return s;\n}\nclass $bd3c59ab25aed5ca$export$e3d1e02a8f18f40e {\n available = new Map();\n enabled = new Set();\n addAvailable(s) {\n let l = s.split(\" \");\n l.forEach((s)=>{\n let i = s.indexOf(\"=\");\n let k = s, v = \"\";\n if (i >= 0) {\n k = s.slice(0, i);\n v = s.slice(i + 1);\n }\n this.available.set(k.toLowerCase(), v);\n });\n }\n parse(msg) {\n if (msg.command !== \"CAP\") return;\n let subCmd = msg.params[1];\n let args = msg.params.slice(2);\n switch(subCmd){\n case \"LS\":\n this.addAvailable(args[args.length - 1]);\n break;\n case \"NEW\":\n this.addAvailable(args[0]);\n break;\n case \"DEL\":\n args[0].split(\" \").forEach((cap)=>{\n cap = cap.toLowerCase();\n this.available.delete(cap);\n this.enabled.delete(cap);\n });\n break;\n case \"ACK\":\n args[0].split(\" \").forEach((cap)=>{\n cap = cap.toLowerCase();\n if (cap.startsWith(\"-\")) this.enabled.delete(cap.slice(1));\n else this.enabled.add(cap);\n });\n break;\n }\n }\n requestAvailable(l) {\n l = l.filter((cap)=>{\n return this.available.has(cap) && !this.enabled.has(cap);\n });\n if (l.length === 0) return null;\n return {\n command: \"CAP\",\n params: [\n \"REQ\",\n l.join(\" \")\n ]\n };\n }\n}\n\n\n\nconst $71e07b0506970322$var$alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nfunction $71e07b0506970322$export$c564cdbbe6da493(data) {\n if (!window.TextEncoder) return btoa(data);\n var encoder = new TextEncoder();\n var bytes = encoder.encode(data);\n var trailing = bytes.length % 3;\n var out = \"\";\n for(var i = 0; i < bytes.length - trailing; i += 3){\n var u24 = (bytes[i] << 16) + (bytes[i + 1] << 8) + bytes[i + 2];\n out += $71e07b0506970322$var$alphabet[u24 >> 18 & 0x3F];\n out += $71e07b0506970322$var$alphabet[u24 >> 12 & 0x3F];\n out += $71e07b0506970322$var$alphabet[u24 >> 6 & 0x3F];\n out += $71e07b0506970322$var$alphabet[u24 & 0x3F];\n }\n if (trailing == 1) {\n var u8 = bytes[bytes.length - 1];\n out += $71e07b0506970322$var$alphabet[u8 >> 2];\n out += $71e07b0506970322$var$alphabet[u8 << 4 & 0x3F];\n out += \"==\";\n } else if (trailing == 2) {\n var u16 = (bytes[bytes.length - 2] << 8) + bytes[bytes.length - 1];\n out += $71e07b0506970322$var$alphabet[u16 >> 10];\n out += $71e07b0506970322$var$alphabet[u16 >> 4 & 0x3F];\n out += $71e07b0506970322$var$alphabet[u16 << 2 & 0x3F];\n out += \"=\";\n }\n return out;\n}\n\n\n// Static list of capabilities that are always requested when supported by the\n// server\nconst $6796cfbd59091fe3$var$permanentCaps = [\n \"account-notify\",\n \"away-notify\",\n \"batch\",\n \"chghost\",\n \"echo-message\",\n \"extended-join\",\n \"extended-monitor\",\n \"invite-notify\",\n \"labeled-response\",\n \"message-tags\",\n \"multi-prefix\",\n \"sasl\",\n \"server-time\",\n \"setname\",\n \"draft/account-registration\",\n \"draft/chathistory\",\n \"draft/extended-monitor\",\n \"draft/read-marker\",\n \"soju.im/bouncer-networks\"\n];\nconst $6796cfbd59091fe3$var$RECONNECT_MIN_DELAY_MSEC = 10000; // 10s\nconst $6796cfbd59091fe3$var$RECONNECT_MAX_DELAY_MSEC = 600000; // 10min\n// WebSocket status codes\n// https://www.rfc-editor.org/rfc/rfc6455.html#section-7.4.1\nconst $6796cfbd59091fe3$var$NORMAL_CLOSURE = 1000;\nconst $6796cfbd59091fe3$var$GOING_AWAY = 1001;\nconst $6796cfbd59091fe3$var$UNSUPPORTED_DATA = 1003;\n// See https://github.com/quakenet/snircd/blob/master/doc/readme.who\n// Sorted by order of appearance in RPL_WHOSPCRPL\nconst $6796cfbd59091fe3$var$WHOX_FIELDS = {\n \"channel\": \"c\",\n \"username\": \"u\",\n \"hostname\": \"h\",\n \"server\": \"s\",\n \"nick\": \"n\",\n \"flags\": \"f\",\n \"account\": \"a\",\n \"realname\": \"r\"\n};\nconst $6796cfbd59091fe3$var$FALLBACK_SERVER_PREFIX = {\n name: \"*\"\n};\nlet $6796cfbd59091fe3$var$lastLabel = 0;\nlet $6796cfbd59091fe3$var$lastWhoxToken = 0;\nclass $6796cfbd59091fe3$var$IRCError extends Error {\n constructor(msg){\n let text;\n if (msg.params.length > 0) // IRC errors have a human-readable message as last param\n text = msg.params[msg.params.length - 1];\n else text = `unknown error (${msg.command})`;\n super(text);\n this.msg = msg;\n }\n}\n/**\n * Implements a simple exponential backoff.\n */ class $6796cfbd59091fe3$var$Backoff {\n n = 0;\n constructor(min, max){\n this.min = min;\n this.max = max;\n }\n reset() {\n this.n = 0;\n }\n next() {\n if (this.n === 0) {\n this.n = 1;\n return this.min;\n }\n let dur = this.n * this.min;\n if (dur > this.max) dur = this.max;\n else this.n *= 2;\n return dur;\n }\n}\nclass $6796cfbd59091fe3$export$2e2bcd8739ae039 extends EventTarget {\n static Status = {\n DISCONNECTED: \"disconnected\",\n CONNECTING: \"connecting\",\n REGISTERING: \"registering\",\n REGISTERED: \"registered\"\n };\n status = $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.DISCONNECTED;\n serverPrefix = $6796cfbd59091fe3$var$FALLBACK_SERVER_PREFIX;\n nick = null;\n supportsCap = false;\n caps = new $bd3c59ab25aed5ca$export$e3d1e02a8f18f40e();\n isupport = new $bd3c59ab25aed5ca$export$23c4b2cbd0633e6b();\n ws = null;\n params = {\n url: null,\n username: null,\n realname: null,\n nick: null,\n pass: null,\n saslPlain: null,\n saslExternal: false,\n saslOauthBearer: null,\n bouncerNetwork: null,\n ping: 0,\n eventPlayback: true\n };\n debug = false;\n batches = new Map();\n autoReconnect = true;\n reconnectTimeoutID = null;\n reconnectBackoff = new $6796cfbd59091fe3$var$Backoff($6796cfbd59091fe3$var$RECONNECT_MIN_DELAY_MSEC, $6796cfbd59091fe3$var$RECONNECT_MAX_DELAY_MSEC);\n pingIntervalID = null;\n pendingCmds = {\n WHO: Promise.resolve(null),\n CHATHISTORY: Promise.resolve(null)\n };\n cm = $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459;\n monitored = new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459);\n pendingLists = new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459);\n whoxQueries = new Map();\n constructor(params){\n super();\n this.params = {\n ...this.params,\n ...params\n };\n this.reconnect();\n }\n reconnect() {\n let autoReconnect = this.autoReconnect;\n this.disconnect();\n this.autoReconnect = autoReconnect;\n console.log(\"Connecting to \" + this.params.url);\n this.setStatus($6796cfbd59091fe3$export$2e2bcd8739ae039.Status.CONNECTING);\n try {\n this.ws = new WebSocket(this.params.url);\n } catch (err) {\n console.error(\"Failed to create connection:\", err);\n setTimeout(()=>{\n this.dispatchError(new Error(\"Failed to create connection\", {\n cause: err\n }));\n this.setStatus($6796cfbd59091fe3$export$2e2bcd8739ae039.Status.DISCONNECTED);\n }, 0);\n return;\n }\n this.ws.addEventListener(\"open\", this.handleOpen.bind(this));\n this.ws.addEventListener(\"message\", (event)=>{\n try {\n this.handleMessage(event);\n } catch (err) {\n this.dispatchError(err);\n this.disconnect();\n }\n });\n this.ws.addEventListener(\"close\", (event)=>{\n console.log(\"Connection closed (code: \" + event.code + \")\");\n if (event.code !== $6796cfbd59091fe3$var$NORMAL_CLOSURE && event.code !== $6796cfbd59091fe3$var$GOING_AWAY) this.dispatchError(new Error(\"Connection error\"));\n this.ws = null;\n this.setStatus($6796cfbd59091fe3$export$2e2bcd8739ae039.Status.DISCONNECTED);\n this.nick = null;\n this.serverPrefix = $6796cfbd59091fe3$var$FALLBACK_SERVER_PREFIX;\n this.caps = new $bd3c59ab25aed5ca$export$e3d1e02a8f18f40e();\n this.batches = new Map();\n Object.keys(this.pendingCmds).forEach((k)=>{\n this.pendingCmds[k] = Promise.resolve(null);\n });\n this.isupport = new $bd3c59ab25aed5ca$export$23c4b2cbd0633e6b();\n this.monitored = new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459);\n if (this.autoReconnect) {\n if (!navigator.onLine) {\n console.info(\"Waiting for network to go back online\");\n const handleOnline = ()=>{\n window.removeEventListener(\"online\", handleOnline);\n this.reconnect();\n };\n window.addEventListener(\"online\", handleOnline);\n } else {\n let delay = this.reconnectBackoff.next();\n console.info(\"Reconnecting to server in \" + delay / 1000 + \" seconds\");\n clearTimeout(this.reconnectTimeoutID);\n this.reconnectTimeoutID = setTimeout(()=>{\n this.reconnect();\n }, delay);\n }\n }\n });\n }\n disconnect() {\n this.autoReconnect = false;\n clearTimeout(this.reconnectTimeoutID);\n this.reconnectTimeoutID = null;\n this.setPingInterval(0);\n if (this.ws) this.ws.close($6796cfbd59091fe3$var$NORMAL_CLOSURE);\n }\n setStatus(status) {\n if (this.status === status) return;\n this.status = status;\n this.dispatchEvent(new CustomEvent(\"status\"));\n }\n dispatchError(err) {\n this.dispatchEvent(new CustomEvent(\"error\", {\n detail: err\n }));\n }\n handleOpen() {\n console.log(\"Connection opened\");\n this.setStatus($6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERING);\n this.reconnectBackoff.reset();\n this.setPingInterval(this.params.ping);\n this.nick = this.params.nick;\n this.send({\n command: \"CAP\",\n params: [\n \"LS\",\n \"302\"\n ]\n });\n if (this.params.pass) this.send({\n command: \"PASS\",\n params: [\n this.params.pass\n ]\n });\n this.send({\n command: \"NICK\",\n params: [\n this.nick\n ]\n });\n this.send({\n command: \"USER\",\n params: [\n this.params.username,\n \"0\",\n \"*\",\n this.params.realname\n ]\n });\n }\n pushPendingList(k, msg) {\n let l = this.pendingLists.get(k);\n if (!l) {\n l = [];\n this.pendingLists.set(k, l);\n }\n l.push(msg);\n }\n endPendingList(k, msg) {\n msg.list = this.pendingLists.get(k) || [];\n this.pendingLists.delete(k);\n }\n handleMessage(event) {\n if (typeof event.data !== \"string\") {\n console.error(\"Received unsupported data type:\", event.data);\n this.ws.close($6796cfbd59091fe3$var$UNSUPPORTED_DATA);\n return;\n }\n let raw = event.data;\n if (this.debug) console.debug(\"Received:\", raw);\n let msg = $bd3c59ab25aed5ca$export$f2f615077a189f21(raw);\n // If the prefix is missing, assume it's coming from the server on the\n // other end of the connection\n if (!msg.prefix) msg.prefix = this.serverPrefix;\n if (!msg.tags) msg.tags = {};\n let msgBatch = null;\n if (msg.tags[\"batch\"]) {\n msgBatch = this.batches.get(msg.tags[\"batch\"]);\n if (msgBatch) msg.batch = msgBatch;\n }\n let deleteBatch = null;\n let k;\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$cac9ca3596de2b3a:\n if (this.params.saslPlain && !this.supportsCap) {\n this.dispatchError(new Error(\"Server doesn't support SASL PLAIN\"));\n this.disconnect();\n return;\n }\n if (msg.prefix) this.serverPrefix = msg.prefix;\n this.nick = msg.params[0];\n console.log(\"Registration complete\");\n this.setStatus($6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERED);\n break;\n case $bd3c59ab25aed5ca$export$1d0c7ae9b6b17819:\n let prevMaxMonitorTargets = this.isupport.monitor();\n let tokens = msg.params.slice(1, -1);\n this.isupport.parse(tokens);\n this.updateCaseMapping();\n let maxMonitorTargets = this.isupport.monitor();\n if (prevMaxMonitorTargets === 0 && this.monitored.size > 0 && maxMonitorTargets > 0) {\n let targets = Array.from(this.monitored.keys()).slice(0, maxMonitorTargets);\n this.send({\n command: \"MONITOR\",\n params: [\n \"+\",\n targets.join(\",\")\n ]\n });\n }\n break;\n case $bd3c59ab25aed5ca$export$cad5f2640c65ad1e:\n case $bd3c59ab25aed5ca$export$7e8b5ab33a021d11:\n // These messages are used to indicate the end of the ISUPPORT list\n if (!this.isupport.raw.has(\"CASEMAPPING\")) // Server didn't send any CASEMAPPING token, assume RFC 1459\n this.updateCaseMapping();\n break;\n case \"CAP\":\n this.handleCap(msg);\n break;\n case \"AUTHENTICATE\":\n // Both PLAIN and EXTERNAL expect an empty challenge\n let challengeStr = msg.params[0];\n if (challengeStr != \"+\") {\n this.dispatchError(new Error(\"Expected an empty challenge, got: \" + challengeStr));\n this.send({\n command: \"AUTHENTICATE\",\n params: [\n \"*\"\n ]\n });\n }\n break;\n case $bd3c59ab25aed5ca$export$97b01f8c0b76e599:\n console.log(\"Logged in\");\n break;\n case $bd3c59ab25aed5ca$export$3ae55a67359785dc:\n console.log(\"Logged out\");\n break;\n case $bd3c59ab25aed5ca$export$18c4a4c5c97dce9b:\n this.pushPendingList(\"NAMES \" + msg.params[2], msg);\n break;\n case $bd3c59ab25aed5ca$export$698923df90b7ea6d:\n this.endPendingList(\"NAMES \" + msg.params[1], msg);\n break;\n case $bd3c59ab25aed5ca$export$9514b1191eaefcec:\n case $bd3c59ab25aed5ca$export$5fb4b19390213db9:\n case $bd3c59ab25aed5ca$export$ed3b11a38dbfed2c:\n case $bd3c59ab25aed5ca$export$322843849bf6282:\n case $bd3c59ab25aed5ca$export$1982ce771bb0f0ea:\n this.pushPendingList(\"WHOIS \" + msg.params[1], msg);\n break;\n case $bd3c59ab25aed5ca$export$ec20f8e9d0ad5539:\n this.endPendingList(\"WHOIS \" + msg.params[1], msg);\n break;\n case $bd3c59ab25aed5ca$export$ea7f3a22477f88c4:\n case $bd3c59ab25aed5ca$export$f45306e17f085f4e:\n this.pushPendingList(\"WHO\", msg);\n break;\n case $bd3c59ab25aed5ca$export$1ea987b9a16ea266:\n this.endPendingList(\"WHO\", msg);\n break;\n case \"PING\":\n this.send({\n command: \"PONG\",\n params: [\n msg.params[0]\n ]\n });\n break;\n case \"NICK\":\n let newNick = msg.params[0];\n if (this.isMyNick(msg.prefix.name)) this.nick = newNick;\n break;\n case \"BATCH\":\n let enter = msg.params[0].startsWith(\"+\");\n let name = msg.params[0].slice(1);\n if (enter) {\n let batch = {\n name: name,\n type: msg.params[1],\n params: msg.params.slice(2),\n tags: msg.tags,\n parent: msgBatch\n };\n this.batches.set(name, batch);\n } else deleteBatch = name;\n break;\n case \"ERROR\":\n this.dispatchError(new $6796cfbd59091fe3$var$IRCError(msg));\n this.disconnect();\n break;\n case $bd3c59ab25aed5ca$export$9d6a3a6ab4c58e66:\n case $bd3c59ab25aed5ca$export$4743685aa8150ce0:\n case $bd3c59ab25aed5ca$export$8b9229ff310aa80f:\n case $bd3c59ab25aed5ca$export$7610afb40d396829:\n case $bd3c59ab25aed5ca$export$2b6618e870672e76:\n case $bd3c59ab25aed5ca$export$3ae3da5f6b8010ab:\n case $bd3c59ab25aed5ca$export$1e0e84545800b47a:\n this.dispatchError(new $6796cfbd59091fe3$var$IRCError(msg));\n if (this.status != $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERED) this.disconnect();\n break;\n case \"FAIL\":\n if (this.status === $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERED) break;\n let reason = msg.params[msg.params.length - 1];\n if (msg.params[0] === \"BOUNCER\" && msg.params[2] === \"BIND\") {\n this.dispatchError(new Error(\"Failed to bind to bouncer network\", {\n cause: new $6796cfbd59091fe3$var$IRCError(msg)\n }));\n this.disconnect();\n }\n if (msg.params[1] === \"ACCOUNT_REQUIRED\") {\n this.dispatchError(new $6796cfbd59091fe3$var$IRCError(msg));\n this.disconnect();\n }\n break;\n }\n this.dispatchEvent(new CustomEvent(\"message\", {\n detail: {\n message: msg,\n batch: msgBatch\n }\n }));\n // Delete after firing the message event so that handlers can access\n // the batch\n if (deleteBatch) this.batches.delete(deleteBatch);\n }\n authenticate(mechanism, params) {\n if (!this.supportsSASL(mechanism)) throw new Error(`${mechanism} authentication not supported by the server`);\n console.log(`Starting SASL ${mechanism} authentication`);\n // Send the first SASL response immediately to avoid a roundtrip\n let initialResp = null;\n switch(mechanism){\n case \"PLAIN\":\n let respStr = $71e07b0506970322$export$c564cdbbe6da493(\"\\0\" + params.username + \"\\0\" + params.password);\n initialResp = {\n command: \"AUTHENTICATE\",\n params: [\n respStr\n ]\n };\n break;\n case \"EXTERNAL\":\n initialResp = {\n command: \"AUTHENTICATE\",\n params: [\n \"+\"\n ]\n };\n break;\n case \"OAUTHBEARER\":\n let raw = \"n,,\\x01auth=Bearer \" + params.token + \"\\x01\\x01\";\n initialResp = {\n command: \"AUTHENTICATE\",\n params: [\n $71e07b0506970322$export$c564cdbbe6da493(raw)\n ]\n };\n break;\n default:\n throw new Error(`Unknown authentication mechanism '${mechanism}'`);\n }\n let startMsg = {\n command: \"AUTHENTICATE\",\n params: [\n mechanism\n ]\n };\n let promise = this.roundtrip(startMsg, (msg)=>{\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$cba31abc2138b15e:\n return true;\n case $bd3c59ab25aed5ca$export$37e8d81e1e359f6e:\n case $bd3c59ab25aed5ca$export$724018c6aa2adbd0:\n case $bd3c59ab25aed5ca$export$47bb6ff9e6eba14f:\n case $bd3c59ab25aed5ca$export$aae27a063aae3a16:\n case $bd3c59ab25aed5ca$export$a74ae703a035d4a0:\n throw new $6796cfbd59091fe3$var$IRCError(msg);\n }\n });\n this.send(initialResp);\n return promise;\n }\n who(mask, options) {\n let params = [\n mask\n ];\n let fields = \"\", token = \"\";\n if (options && this.isupport.whox()) {\n let match = \"\"; // Matches exact channel or nick\n fields = \"t\"; // Always include token in reply\n if (options.fields) options.fields.forEach((k)=>{\n if (!$6796cfbd59091fe3$var$WHOX_FIELDS[k]) throw new Error(`Unknown WHOX field ${k}`);\n fields += $6796cfbd59091fe3$var$WHOX_FIELDS[k];\n });\n token = String($6796cfbd59091fe3$var$lastWhoxToken % 1000);\n $6796cfbd59091fe3$var$lastWhoxToken++;\n params.push(`${match}%${fields},${token}`);\n this.whoxQueries.set(token, fields);\n }\n let msg = {\n command: \"WHO\",\n params: params\n };\n let l = [];\n let promise = this.pendingCmds.WHO.then(()=>{\n return this.roundtrip(msg, (msg)=>{\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$ea7f3a22477f88c4:\n msg.internal = true;\n l.push(this.parseWhoReply(msg));\n break;\n case $bd3c59ab25aed5ca$export$f45306e17f085f4e:\n if (msg.params.length !== fields.length + 1 || msg.params[1] !== token) break;\n msg.internal = true;\n l.push(this.parseWhoReply(msg));\n break;\n case $bd3c59ab25aed5ca$export$1ea987b9a16ea266:\n if (msg.params[1] === mask) {\n msg.internal = true;\n return l;\n }\n break;\n }\n }).finally(()=>{\n this.whoxQueries.delete(token);\n });\n });\n this.pendingCmds.WHO = promise.catch(()=>{});\n return promise;\n }\n parseWhoReply(msg) {\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$ea7f3a22477f88c4:\n let last = msg.params[msg.params.length - 1];\n return {\n username: msg.params[2],\n hostname: msg.params[3],\n server: msg.params[4],\n nick: msg.params[5],\n flags: msg.params[6],\n realname: last.slice(last.indexOf(\" \") + 1)\n };\n case $bd3c59ab25aed5ca$export$f45306e17f085f4e:\n let token = msg.params[1];\n let fields = this.whoxQueries.get(token);\n if (!fields) throw new Error(\"Unknown WHOX token: \" + token);\n let who = {};\n let i = 0;\n Object.keys($6796cfbd59091fe3$var$WHOX_FIELDS).forEach((k)=>{\n if (fields.indexOf($6796cfbd59091fe3$var$WHOX_FIELDS[k]) < 0) return;\n who[k] = msg.params[2 + i];\n i++;\n });\n if (who.account === \"0\") // WHOX uses \"0\" to mean \"no account\"\n who.account = null;\n return who;\n default:\n throw new Error(\"Not a WHO reply: \" + msg.command);\n }\n }\n whois(target) {\n let targetCM = this.cm(target);\n let msg = {\n command: \"WHOIS\",\n params: [\n target\n ]\n };\n return this.roundtrip(msg, (msg)=>{\n let nick;\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$ec20f8e9d0ad5539:\n nick = msg.params[1];\n if (this.cm(nick) === targetCM) {\n let whois = {};\n msg.list.forEach((reply)=>{\n whois[reply.command] = reply;\n });\n return whois;\n }\n break;\n case $bd3c59ab25aed5ca$export$7ea30511ef6ec211:\n nick = msg.params[1];\n if (this.cm(nick) === targetCM) throw new $6796cfbd59091fe3$var$IRCError(msg);\n break;\n }\n });\n }\n supportsSASL(mech) {\n let saslCap = this.caps.available.get(\"sasl\");\n if (saslCap === undefined) return false;\n return saslCap.split(\",\").includes(mech);\n }\n checkAccountRegistrationCap(k) {\n let v = this.caps.available.get(\"draft/account-registration\");\n if (v === undefined) return false;\n return v.split(\",\").includes(k);\n }\n requestCaps() {\n let wantCaps = [].concat($6796cfbd59091fe3$var$permanentCaps);\n if (!this.params.bouncerNetwork) wantCaps.push(\"soju.im/bouncer-networks-notify\");\n if (this.params.eventPlayback) wantCaps.push(\"draft/event-playback\");\n let msg = this.caps.requestAvailable(wantCaps);\n if (msg) this.send(msg);\n }\n handleCap(msg) {\n this.caps.parse(msg);\n let subCmd = msg.params[1];\n let args = msg.params.slice(2);\n switch(subCmd){\n case \"LS\":\n this.supportsCap = true;\n if (args[0] == \"*\") break;\n console.log(\"Available server caps:\", this.caps.available);\n this.requestCaps();\n if (this.status !== $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERED) {\n if (this.caps.available.has(\"sasl\")) {\n let promise;\n if (this.params.saslPlain) promise = this.authenticate(\"PLAIN\", this.params.saslPlain);\n else if (this.params.saslExternal) promise = this.authenticate(\"EXTERNAL\");\n else if (this.params.saslOauthBearer) promise = this.authenticate(\"OAUTHBEARER\", this.params.saslOauthBearer);\n (promise || Promise.resolve()).catch((err)=>{\n this.dispatchError(err);\n this.disconnect();\n });\n }\n if (this.caps.available.has(\"soju.im/bouncer-networks\") && this.params.bouncerNetwork) this.send({\n command: \"BOUNCER\",\n params: [\n \"BIND\",\n this.params.bouncerNetwork\n ]\n });\n this.send({\n command: \"CAP\",\n params: [\n \"END\"\n ]\n });\n }\n break;\n case \"NEW\":\n console.log(\"Server added available caps:\", args[0]);\n this.requestCaps();\n break;\n case \"DEL\":\n console.log(\"Server removed available caps:\", args[0]);\n break;\n case \"ACK\":\n console.log(\"Server ack'ed caps:\", args[0]);\n break;\n case \"NAK\":\n console.log(\"Server nak'ed caps:\", args[0]);\n if (this.status !== $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.REGISTERED) this.send({\n command: \"CAP\",\n params: [\n \"END\"\n ]\n });\n break;\n }\n }\n send(msg) {\n if (!this.ws) throw new Error(\"Failed to send IRC message \" + msg.command + \": socket is closed\");\n let raw = $bd3c59ab25aed5ca$export$25868d1e8e76735f(msg);\n this.ws.send(raw);\n if (this.debug) console.debug(\"Sent:\", raw);\n }\n updateCaseMapping() {\n this.cm = this.isupport.caseMapping();\n this.pendingLists = new $bd3c59ab25aed5ca$export$6296a711f00288b1(this.pendingLists, this.cm);\n this.monitored = new $bd3c59ab25aed5ca$export$6296a711f00288b1(this.monitored, this.cm);\n }\n isServer(name) {\n return name === \"*\" || this.cm(name) === this.cm(this.serverPrefix.name);\n }\n isMyNick(nick) {\n return this.cm(nick) == this.cm(this.nick);\n }\n isChannel(name) {\n let chanTypes = this.isupport.chanTypes();\n return chanTypes.indexOf(name[0]) >= 0;\n }\n isNick(name) {\n // A dollar sign is used for server-wide broadcasts\n return !this.isServer(name) && !this.isChannel(name) && !name.startsWith(\"$\");\n }\n setPingInterval(sec) {\n clearInterval(this.pingIntervalID);\n this.pingIntervalID = null;\n if (sec <= 0) return;\n this.pingIntervalID = setInterval(()=>{\n if (this.ws) this.send({\n command: \"PING\",\n params: [\n \"gamja\"\n ]\n });\n }, sec * 1000);\n }\n /* Execute a command that expects a response. `done` is called with message\n\t * events until it returns a truthy value. */ roundtrip(msg, done) {\n let cmd = msg.command;\n let label;\n if (this.caps.enabled.has(\"labeled-response\")) {\n $6796cfbd59091fe3$var$lastLabel++;\n label = String($6796cfbd59091fe3$var$lastLabel);\n msg.tags = {\n ...msg.tags,\n label: label\n };\n }\n return new Promise((resolve, reject)=>{\n let removeEventListeners;\n let handleMessage = (event)=>{\n let msg = event.detail.message;\n let msgLabel = $bd3c59ab25aed5ca$export$ec840f96613effe2(msg);\n if (msgLabel && msgLabel != label) return;\n let isError = false;\n switch(msg.command){\n case \"FAIL\":\n isError = msg.params[0] === cmd;\n break;\n case $bd3c59ab25aed5ca$export$f0fc9feb21c3ef1b:\n case $bd3c59ab25aed5ca$export$da101e59b60ec32a:\n case $bd3c59ab25aed5ca$export$e9c321b4bd63421d:\n case $bd3c59ab25aed5ca$export$5075048a1d9ba016:\n isError = msg.params[1] === cmd;\n break;\n }\n if (isError) {\n removeEventListeners();\n reject(new $6796cfbd59091fe3$var$IRCError(msg));\n return;\n }\n let result;\n try {\n result = done(msg);\n } catch (err) {\n removeEventListeners();\n reject(err);\n }\n if (result) {\n removeEventListeners();\n resolve(result);\n }\n // TODO: handle end of labeled response somehow\n };\n let handleStatus = ()=>{\n if (this.status === $6796cfbd59091fe3$export$2e2bcd8739ae039.Status.DISCONNECTED) {\n removeEventListeners();\n reject(new Error(\"Connection closed\"));\n }\n };\n removeEventListeners = ()=>{\n this.removeEventListener(\"message\", handleMessage);\n this.removeEventListener(\"status\", handleStatus);\n };\n // Turn on capture to handle messages before external users and\n // have the opportunity to set the \"internal\" flag\n this.addEventListener(\"message\", handleMessage, {\n capture: true\n });\n this.addEventListener(\"status\", handleStatus);\n this.send(msg);\n });\n }\n join(channel, password) {\n let params = [\n channel\n ];\n if (password) params.push(password);\n let msg = {\n command: \"JOIN\",\n params: params\n };\n return this.roundtrip(msg, (msg)=>{\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$b889507e4da9d85b:\n case $bd3c59ab25aed5ca$export$d9dd0c5028129ffb:\n case $bd3c59ab25aed5ca$export$cc57fea2b719b6fa:\n case $bd3c59ab25aed5ca$export$30b572b38bbeae93:\n case $bd3c59ab25aed5ca$export$6ce9c178695ddc97:\n case $bd3c59ab25aed5ca$export$1750cbcab1b05667:\n if (this.cm(msg.params[1]) === this.cm(channel)) throw new $6796cfbd59091fe3$var$IRCError(msg);\n break;\n case \"JOIN\":\n if (this.isMyNick(msg.prefix.name) && this.cm(msg.params[0]) === this.cm(channel)) return true;\n break;\n }\n });\n }\n fetchBatch(msg, batchType) {\n let batchName = null;\n let messages = [];\n let cmd = msg.command;\n return this.roundtrip(msg, (msg)=>{\n if (batchName) {\n let batch = msg.batch;\n while(batch){\n if (batch.name === batchName) {\n messages.push(msg);\n break;\n }\n batch = batch.parent;\n }\n }\n if (msg.command !== \"BATCH\") return;\n let enter = msg.params[0].startsWith(\"+\");\n let name = msg.params[0].slice(1);\n if (enter && msg.params[1] === batchType) {\n batchName = name;\n return;\n }\n if (!enter && name === batchName) return {\n ...this.batches.get(name),\n messages: messages\n };\n });\n }\n roundtripChatHistory(params) {\n // Don't send multiple CHATHISTORY commands in parallel, we can't\n // properly handle batches and errors.\n let promise = this.pendingCmds.CHATHISTORY.then(()=>{\n let msg = {\n command: \"CHATHISTORY\",\n params: params\n };\n return this.fetchBatch(msg, \"chathistory\").then((batch)=>batch.messages);\n });\n this.pendingCmds.CHATHISTORY = promise.catch(()=>{});\n return promise;\n }\n /* Fetch one page of history before the given date. */ async fetchHistoryBefore(target, before, limit) {\n let max = Math.min(limit, this.isupport.chatHistory());\n let params = [\n \"BEFORE\",\n target,\n \"timestamp=\" + before,\n max\n ];\n let messages = await this.roundtripChatHistory(params);\n return {\n messages: messages,\n more: messages.length >= max\n };\n }\n /* Fetch history in ascending order. */ async fetchHistoryBetween(target, after, before, limit) {\n let max = Math.min(limit, this.isupport.chatHistory());\n let params = [\n \"AFTER\",\n target,\n \"timestamp=\" + after.time,\n max\n ];\n let messages = await this.roundtripChatHistory(params);\n limit -= messages.length;\n if (limit <= 0) throw new Error(\"Cannot fetch all chat history: too many messages\");\n if (messages.length >= max) {\n // There are still more messages to fetch\n after.time = messages[messages.length - 1].tags.time;\n return await this.fetchHistoryBetween(target, after, before, limit);\n }\n return {\n messages: messages\n };\n }\n async fetchHistoryTargets(t1, t2) {\n let msg = {\n command: \"CHATHISTORY\",\n params: [\n \"TARGETS\",\n \"timestamp=\" + t1,\n \"timestamp=\" + t2,\n 1000\n ]\n };\n let batch = await this.fetchBatch(msg, \"draft/chathistory-targets\");\n return batch.messages.map((msg)=>{\n console.assert(msg.command === \"CHATHISTORY\" && msg.params[0] === \"TARGETS\");\n return {\n name: msg.params[1],\n latestMessage: msg.params[2]\n };\n });\n }\n async listBouncerNetworks() {\n let req = {\n command: \"BOUNCER\",\n params: [\n \"LISTNETWORKS\"\n ]\n };\n let batch = await this.fetchBatch(req, \"soju.im/bouncer-networks\");\n let networks = new Map();\n for (let msg of batch.messages){\n console.assert(msg.command === \"BOUNCER\" && msg.params[0] === \"NETWORK\");\n let id = msg.params[1];\n let params = $bd3c59ab25aed5ca$export$ede4b2e0172bbdb1(msg.params[2]);\n networks.set(id, params);\n }\n return networks;\n }\n monitor(target) {\n if (this.monitored.has(target)) return;\n this.monitored.set(target, true);\n // TODO: add poll-based fallback when MONITOR is not supported\n if (this.monitored.size + 1 > this.isupport.monitor()) return;\n this.send({\n command: \"MONITOR\",\n params: [\n \"+\",\n target\n ]\n });\n }\n unmonitor(target) {\n if (!this.monitored.has(target)) return;\n this.monitored.delete(target);\n if (this.isupport.monitor() <= 0) return;\n this.send({\n command: \"MONITOR\",\n params: [\n \"-\",\n target\n ]\n });\n }\n createBouncerNetwork(attrs) {\n let msg = {\n command: \"BOUNCER\",\n params: [\n \"ADDNETWORK\",\n $bd3c59ab25aed5ca$export$c27de7dba30c634a(attrs)\n ]\n };\n return this.roundtrip(msg, (msg)=>{\n if (msg.command === \"BOUNCER\" && msg.params[0] === \"ADDNETWORK\") return msg.params[1];\n });\n }\n registerAccount(email, password) {\n let msg = {\n command: \"REGISTER\",\n params: [\n \"*\",\n email || \"*\",\n password\n ]\n };\n return this.roundtrip(msg, (msg)=>{\n if (msg.command !== \"REGISTER\") return;\n let result = msg.params[0];\n return {\n verificationRequired: result === \"VERIFICATION_REQUIRED\",\n account: msg.params[1],\n message: msg.params[2]\n };\n });\n }\n verifyAccount(account, code) {\n let msg = {\n command: \"VERIFY\",\n params: [\n account,\n code\n ]\n };\n return this.roundtrip(msg, (msg)=>{\n if (msg.command !== \"VERIFY\") return;\n return {\n message: msg.params[2]\n };\n });\n }\n supportsReadMarker() {\n return this.caps.enabled.has(\"draft/read-marker\");\n }\n fetchReadMarker(target) {\n this.send({\n command: \"MARKREAD\",\n params: [\n target\n ]\n });\n }\n setReadMarker(target, t) {\n this.send({\n command: \"MARKREAD\",\n params: [\n target,\n \"timestamp=\" + t\n ]\n });\n }\n}\n\n\nfunction $572a887a57d3418e$var$formatQueryString(params) {\n let l = [];\n for(let k in params)l.push(encodeURIComponent(k) + \"=\" + encodeURIComponent(params[k]));\n return l.join(\"&\");\n}\nasync function $572a887a57d3418e$export$9326d7767c1b7bbc(url) {\n // TODO: handle path in config.oauth2.url\n let resp;\n try {\n resp = await fetch(url + \"/.well-known/oauth-authorization-server\");\n if (!resp.ok) throw new Error(`HTTP error: ${resp.status} ${resp.statusText}`);\n } catch (err) {\n console.warn(\"OAuth 2.0 server doesn't support Authorization Server Metadata (retrying with OpenID Connect Discovery): \", err);\n resp = await fetch(url + \"/.well-known/openid-configuration\");\n if (!resp.ok) throw new Error(`HTTP error: ${resp.status} ${resp.statusText}`);\n }\n let data = await resp.json();\n if (!data.issuer) throw new Error(\"Missing issuer in response\");\n if (!data.authorization_endpoint) throw new Error(\"Missing authorization_endpoint in response\");\n if (!data.token_endpoint) throw new Error(\"Missing authorization_endpoint in response\");\n if (!data.response_types_supported.includes(\"code\")) throw new Error(\"Server doesn't support authorization code response type\");\n return data;\n}\nfunction $572a887a57d3418e$export$425e62132119a96f({ serverMetadata: serverMetadata, clientId: clientId, redirectUri: redirectUri, scope: scope }) {\n // TODO: move fragment to query string in redirect_uri\n // TODO: use the state param to prevent cross-site request\n // forgery\n let params = {\n response_type: \"code\",\n client_id: clientId,\n redirect_uri: redirectUri\n };\n if (scope) params.scope = scope;\n window.location.replace(serverMetadata.authorization_endpoint + \"?\" + $572a887a57d3418e$var$formatQueryString(params));\n}\nfunction $572a887a57d3418e$var$buildPostHeaders(clientId, clientSecret) {\n let headers = {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Accept\": \"application/json\"\n };\n if (clientSecret) headers[\"Authorization\"] = \"Basic \" + btoa(encodeURIComponent(clientId) + \":\" + encodeURIComponent(clientSecret));\n return headers;\n}\nasync function $572a887a57d3418e$export$97e44d582df4b68f({ serverMetadata: serverMetadata, redirectUri: redirectUri, code: code, clientId: clientId, clientSecret: clientSecret }) {\n let data = {\n grant_type: \"authorization_code\",\n code: code,\n redirect_uri: redirectUri\n };\n if (!clientSecret) data.client_id = clientId;\n let resp = await fetch(serverMetadata.token_endpoint, {\n method: \"POST\",\n headers: $572a887a57d3418e$var$buildPostHeaders(clientId, clientSecret),\n body: $572a887a57d3418e$var$formatQueryString(data)\n });\n if (!resp.ok) throw new Error(`HTTP error: ${resp.status} ${resp.statusText}`);\n data = await resp.json();\n if (data.error) throw new Error(\"Authentication failed: \" + (data.error_description || data.error));\n return data;\n}\nasync function $572a887a57d3418e$export$e03aeda7cfb66622({ serverMetadata: serverMetadata, token: token, clientId: clientId, clientSecret: clientSecret }) {\n let resp = await fetch(serverMetadata.introspection_endpoint, {\n method: \"POST\",\n headers: $572a887a57d3418e$var$buildPostHeaders(clientId, clientSecret),\n body: $572a887a57d3418e$var$formatQueryString({\n token: token\n })\n });\n if (!resp.ok) throw new Error(`HTTP error: ${resp.status} ${resp.statusText}`);\n let data = await resp.json();\n if (!data.active) throw new Error(\"Expired token\");\n return data;\n}\n\n\n\n\n(0, $efca0cb2e3ea1e67$exports).options.defaults.defaultProtocol = \"https\";\n(0, $efca0cb2e3ea1e67$exports).registerCustomProtocol(\"irc\");\n(0, $efca0cb2e3ea1e67$exports).registerCustomProtocol(\"ircs\");\n(0, $efca0cb2e3ea1e67$exports).registerCustomProtocol(\"geo\", true);\nconst $37d24d778c2f247c$var$IRCChannelToken = (0, $efca0cb2e3ea1e67$exports).createTokenClass(\"ircChannel\", {\n isLink: true,\n toHref () {\n return \"irc:///\" + this.v;\n }\n});\n(0, $efca0cb2e3ea1e67$exports).registerPlugin(\"ircChannel\", ({ scanner: scanner, parser: parser })=>{\n const { POUND: POUND, UNDERSCORE: UNDERSCORE, DOT: DOT, HYPHEN: HYPHEN } = scanner.tokens;\n const { alphanumeric: alphanumeric } = scanner.tokens.groups;\n const Prefix = parser.start.tt(POUND);\n const Channel = new (0, $efca0cb2e3ea1e67$exports).State($37d24d778c2f247c$var$IRCChannelToken);\n const Divider = Channel.tt(DOT);\n Prefix.ta(alphanumeric, Channel);\n Prefix.tt(POUND, Channel);\n Prefix.tt(UNDERSCORE, Channel);\n Prefix.tt(DOT, Divider);\n Prefix.tt(HYPHEN, Channel);\n Channel.ta(alphanumeric, Channel);\n Channel.tt(POUND, Channel);\n Channel.tt(UNDERSCORE, Channel);\n Channel.tt(HYPHEN, Channel);\n Divider.ta(alphanumeric, Channel);\n});\nfunction $37d24d778c2f247c$export$2e2bcd8739ae039(text, onClick) {\n let links = (0, $efca0cb2e3ea1e67$exports).find(text);\n let children = [];\n let last = 0;\n links.forEach((match)=>{\n if (!match.isLink) return;\n const prefix = text.substring(last, match.start);\n children.push(prefix);\n children.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t${match.value}\n\t\t`);\n last = match.end;\n });\n const suffix = text.substring(last);\n children.push(suffix);\n return children;\n}\n\n\n\n// See https://modern.ircdocs.horse/formatting.html\nconst $803ef401580605c5$var$BOLD = \"\\x02\";\nconst $803ef401580605c5$var$ITALIC = \"\\x1d\";\nconst $803ef401580605c5$var$UNDERLINE = \"\\x1f\";\nconst $803ef401580605c5$var$STRIKETHROUGH = \"\\x1e\";\nconst $803ef401580605c5$var$MONOSPACE = \"\\x11\";\nconst $803ef401580605c5$var$COLOR = \"\\x03\";\nconst $803ef401580605c5$var$COLOR_HEX = \"\\x04\";\nconst $803ef401580605c5$var$REVERSE_COLOR = \"\\x16\";\nconst $803ef401580605c5$var$RESET = \"\\x0f\";\nconst $803ef401580605c5$var$HEX_COLOR_LENGTH = 6;\nfunction $803ef401580605c5$var$isDigit(ch) {\n return ch >= \"0\" && ch <= \"9\";\n}\nfunction $803ef401580605c5$var$isHexColor(text) {\n if (text.length < $803ef401580605c5$var$HEX_COLOR_LENGTH) return false;\n for(let i = 0; i < $803ef401580605c5$var$HEX_COLOR_LENGTH; i++){\n let ch = text[i].toUpperCase();\n let ok = ch >= \"0\" && ch <= \"9\" || ch >= \"A\" && ch <= \"F\";\n if (!ok) return false;\n }\n return true;\n}\nfunction $803ef401580605c5$export$6a0f863afc2134d8(text) {\n let out = \"\";\n for(let i = 0; i < text.length; i++){\n let ch = text[i];\n switch(ch){\n case $803ef401580605c5$var$BOLD:\n case $803ef401580605c5$var$ITALIC:\n case $803ef401580605c5$var$UNDERLINE:\n case $803ef401580605c5$var$STRIKETHROUGH:\n case $803ef401580605c5$var$MONOSPACE:\n case $803ef401580605c5$var$REVERSE_COLOR:\n case $803ef401580605c5$var$RESET:\n break; // skip\n case $803ef401580605c5$var$COLOR:\n if (!$803ef401580605c5$var$isDigit(text[i + 1])) break;\n i++;\n if ($803ef401580605c5$var$isDigit(text[i + 1])) i++;\n if (text[i + 1] == \",\" && $803ef401580605c5$var$isDigit(text[i + 2])) {\n i += 2;\n if ($803ef401580605c5$var$isDigit(text[i + 1])) i++;\n }\n break;\n case $803ef401580605c5$var$COLOR_HEX:\n if (!$803ef401580605c5$var$isHexColor(text.slice(i + 1))) break;\n i += $803ef401580605c5$var$HEX_COLOR_LENGTH;\n if (text[i + 1] == \",\" && $803ef401580605c5$var$isHexColor(text.slice(i + 2))) i += 1 + $803ef401580605c5$var$HEX_COLOR_LENGTH;\n break;\n default:\n out += ch;\n }\n }\n return out;\n}\n\n\n\n\n\nconst $fca64bf918d5638f$export$50f2960994553271 = \"*\";\nconst $fca64bf918d5638f$export$a9b603917c4d9863 = {\n SERVER: \"server\",\n CHANNEL: \"channel\",\n NICK: \"nick\"\n};\nconst $fca64bf918d5638f$export$ac0b13ba2bbce4d5 = (0, $6796cfbd59091fe3$export$2e2bcd8739ae039).Status;\nconst $fca64bf918d5638f$export$9be0a2424da959ae = {\n NONE: \"\",\n MESSAGE: \"message\",\n HIGHLIGHT: \"highlight\",\n compare (a, b) {\n const priority = {\n [$fca64bf918d5638f$export$9be0a2424da959ae.NONE]: 0,\n [$fca64bf918d5638f$export$9be0a2424da959ae.MESSAGE]: 1,\n [$fca64bf918d5638f$export$9be0a2424da959ae.HIGHLIGHT]: 2\n };\n return priority[a] - priority[b];\n },\n union (a, b) {\n return $fca64bf918d5638f$export$9be0a2424da959ae.compare(a, b) > 0 ? a : b;\n }\n};\nconst $fca64bf918d5638f$export$c49c54eaac29b59a = {\n DELIVERED: \"delivered\",\n READ: \"read\"\n};\nconst $fca64bf918d5638f$export$3ee12e3d13dfa897 = {\n FOLD: \"fold\",\n EXPAND: \"expand\",\n HIDE: \"hide\"\n};\nconst $fca64bf918d5638f$export$8fa45c82eddfe270 = (0, $b2a774aae58c7b4e$export$fd42f52fd3ae1109)(\"settings\");\nfunction $fca64bf918d5638f$export$64b0f097aebd4e10(buf) {\n switch(buf.type){\n case $fca64bf918d5638f$export$a9b603917c4d9863.SERVER:\n return $bd3c59ab25aed5ca$export$b1ef46223b559f9d();\n case $fca64bf918d5638f$export$a9b603917c4d9863.CHANNEL:\n return $bd3c59ab25aed5ca$export$b1ef46223b559f9d({\n entity: buf.name\n });\n case $fca64bf918d5638f$export$a9b603917c4d9863.NICK:\n return $bd3c59ab25aed5ca$export$b1ef46223b559f9d({\n entity: buf.name,\n enttype: \"user\"\n });\n }\n throw new Error(\"Unknown buffer type: \" + buf.type);\n}\nfunction $fca64bf918d5638f$export$8499bd1ed7c872c2(buf, msg) {\n let bufURL = $fca64bf918d5638f$export$64b0f097aebd4e10(buf);\n if (msg.tags.msgid) return bufURL + \"?msgid=\" + encodeURIComponent(msg.tags.msgid);\n else return bufURL + \"?timestamp=\" + encodeURIComponent(msg.tags.time);\n}\nfunction $fca64bf918d5638f$export$53e73e095c2ac1e2(server, bouncerNetwork) {\n let netName = server.name;\n if (bouncerNetwork && bouncerNetwork.name && bouncerNetwork.name !== bouncerNetwork.host) // User has picked a custom name for the network, use that\n return bouncerNetwork.name;\n if (netName) // Server has specified a name\n return netName;\n if (bouncerNetwork) return bouncerNetwork.name || bouncerNetwork.host || \"server\";\n else if (server.isBouncer) return \"bouncer\";\n else return \"server\";\n}\nfunction $fca64bf918d5638f$export$1274528beb7cd977(msg) {\n // At this point all messages are supposed to have a time tag.\n // App.addMessage ensures this is the case even if the server doesn't\n // support server-time.\n if (!msg.tags.time) throw new Error(\"Missing time message tag\");\n return {\n time: msg.tags.time\n };\n}\nfunction $fca64bf918d5638f$export$4f7e80d679306a83(a, b) {\n if (!b) return false;\n if (!a) return true;\n if (!a.time || !b.time) throw new Error(\"Missing receipt time\");\n return a.time <= b.time;\n}\nfunction $fca64bf918d5638f$export$23261bae4c963bb3(msg, receipt) {\n if (!receipt) return false;\n if (!msg.tags.time) throw new Error(\"Missing time message tag\");\n if (!receipt.time) throw new Error(\"Missing receipt time\");\n return msg.tags.time <= receipt.time;\n}\nfunction $fca64bf918d5638f$var$updateState(state, updater) {\n let updated;\n if (typeof updater === \"function\") updated = updater(state, state);\n else updated = updater;\n if (state === updated || !updated) return;\n return {\n ...state,\n ...updated\n };\n}\nfunction $fca64bf918d5638f$var$isServerBuffer(buf) {\n return buf.type == $fca64bf918d5638f$export$a9b603917c4d9863.SERVER;\n}\n/* Returns 1 if a should appear after b, -1 if a should appear before b, or\n * 0 otherwise. */ function $fca64bf918d5638f$var$compareBuffers(a, b) {\n if (a.server != b.server) return a.server > b.server ? 1 : -1;\n if ($fca64bf918d5638f$var$isServerBuffer(a) != $fca64bf918d5638f$var$isServerBuffer(b)) return $fca64bf918d5638f$var$isServerBuffer(b) ? 1 : -1;\n if (a.name != b.name) return a.name.localeCompare(b.name);\n return 0;\n}\nfunction $fca64bf918d5638f$var$updateMembership(membership, letter, add, client) {\n let prefix = client.isupport.prefix();\n let prefixPrivs = new Map($bd3c59ab25aed5ca$export$3b27c9ff97cdb350(prefix).map((membership, i)=>{\n return [\n membership.prefix,\n i\n ];\n }));\n if (add) {\n let i = membership.indexOf(letter);\n if (i < 0) {\n membership += letter;\n membership = Array.from(membership).sort((a, b)=>{\n return prefixPrivs.get(a) - prefixPrivs.get(b);\n }).join(\"\");\n }\n } else membership = membership.replace(letter, \"\");\n return membership;\n}\n/* Insert a message in an immutable list of sorted messages. */ function $fca64bf918d5638f$var$insertMessage(list, msg) {\n if (list.length == 0) return [\n msg\n ];\n else if (!$bd3c59ab25aed5ca$export$f4751a564f6d84a3(msg, \"chathistory\") || list[list.length - 1].tags.time <= msg.tags.time) return list.concat(msg);\n let insertBefore = -1;\n for(let i = 0; i < list.length; i++){\n let other = list[i];\n if (msg.tags.time < other.tags.time) {\n insertBefore = i;\n break;\n }\n }\n console.assert(insertBefore >= 0, \"\");\n list = [\n ...list\n ];\n list.splice(insertBefore, 0, msg);\n return list;\n}\nlet $fca64bf918d5638f$var$lastServerID = 0;\nlet $fca64bf918d5638f$var$lastBufferID = 0;\nlet $fca64bf918d5638f$var$lastMessageKey = 0;\nconst $fca64bf918d5638f$export$7254cc27399e90bd = {\n create () {\n return {\n servers: new Map(),\n buffers: new Map(),\n activeBuffer: null,\n bouncerNetworks: new Map(),\n settings: {\n secondsInTimestamps: true,\n bufferEvents: $fca64bf918d5638f$export$3ee12e3d13dfa897.FOLD\n }\n };\n },\n updateServer (state, id, updater) {\n let server = state.servers.get(id);\n if (!server) return;\n let updated = $fca64bf918d5638f$var$updateState(server, updater);\n if (!updated) return;\n let servers = new Map(state.servers);\n servers.set(id, updated);\n return {\n servers: servers\n };\n },\n updateBuffer (state, id, updater) {\n let buf = $fca64bf918d5638f$export$7254cc27399e90bd.getBuffer(state, id);\n if (!buf) return;\n let updated = $fca64bf918d5638f$var$updateState(buf, updater);\n if (!updated) return;\n let buffers = new Map(state.buffers);\n buffers.set(buf.id, updated);\n return {\n buffers: buffers\n };\n },\n getActiveServerID (state) {\n let buf = state.buffers.get(state.activeBuffer);\n if (!buf) return null;\n return buf.server;\n },\n getBuffer (state, id) {\n switch(typeof id){\n case \"number\":\n return state.buffers.get(id);\n case \"object\":\n if (id.id) return state.buffers.get(id.id);\n let serverID = id.server, name = id.name;\n if (!serverID) serverID = $fca64bf918d5638f$export$7254cc27399e90bd.getActiveServerID(state);\n if (!name) name = $fca64bf918d5638f$export$50f2960994553271;\n let cm = $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459;\n let server = state.servers.get(serverID);\n if (server) cm = server.cm;\n let nameCM = cm(name);\n for (let buf of state.buffers.values()){\n if (buf.server === serverID && cm(buf.name) === nameCM) return buf;\n }\n return null;\n default:\n throw new Error(\"Invalid buffer ID type: \" + typeof id);\n }\n },\n createServer (state) {\n $fca64bf918d5638f$var$lastServerID++;\n let id = $fca64bf918d5638f$var$lastServerID;\n let servers = new Map(state.servers);\n servers.set(id, {\n id: id,\n name: null,\n status: $fca64bf918d5638f$export$ac0b13ba2bbce4d5.DISCONNECTED,\n cm: $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459,\n users: new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, $bd3c59ab25aed5ca$export$39aea81548242927.RFC1459),\n account: null,\n supportsSASLPlain: false,\n supportsAccountRegistration: false,\n reliableUserAccounts: false,\n statusMsg: null,\n isBouncer: false,\n bouncerNetID: null\n });\n return [\n id,\n {\n servers: servers\n }\n ];\n },\n createBuffer (state, name, serverID, client) {\n let buf = $fca64bf918d5638f$export$7254cc27399e90bd.getBuffer(state, {\n server: serverID,\n name: name\n });\n if (buf) return [\n buf.id,\n null\n ];\n $fca64bf918d5638f$var$lastBufferID++;\n let id = $fca64bf918d5638f$var$lastBufferID;\n let type;\n if (name == $fca64bf918d5638f$export$50f2960994553271) type = $fca64bf918d5638f$export$a9b603917c4d9863.SERVER;\n else if (client.isChannel(name)) type = $fca64bf918d5638f$export$a9b603917c4d9863.CHANNEL;\n else type = $fca64bf918d5638f$export$a9b603917c4d9863.NICK;\n let bufferList = Array.from(state.buffers.values());\n bufferList.push({\n id: id,\n name: name,\n type: type,\n server: serverID,\n serverInfo: null,\n joined: false,\n topic: null,\n hasInitialWho: false,\n members: new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, client.cm),\n messages: [],\n unread: $fca64bf918d5638f$export$9be0a2424da959ae.NONE,\n prevReadReceipt: null\n });\n bufferList = bufferList.sort($fca64bf918d5638f$var$compareBuffers);\n let buffers = new Map(bufferList.map((buf)=>[\n buf.id,\n buf\n ]));\n return [\n id,\n {\n buffers: buffers\n }\n ];\n },\n storeBouncerNetwork (state, id, attrs) {\n let bouncerNetworks = new Map(state.bouncerNetworks);\n bouncerNetworks.set(id, {\n ...bouncerNetworks.get(id),\n ...attrs\n });\n return {\n bouncerNetworks: bouncerNetworks\n };\n },\n deleteBouncerNetwork (state, id) {\n let bouncerNetworks = new Map(state.bouncerNetworks);\n bouncerNetworks.delete(id);\n return {\n bouncerNetworks: bouncerNetworks\n };\n },\n handleMessage (state, msg, serverID, client) {\n function updateServer(updater) {\n return $fca64bf918d5638f$export$7254cc27399e90bd.updateServer(state, serverID, updater);\n }\n function updateBuffer(name, updater) {\n return $fca64bf918d5638f$export$7254cc27399e90bd.updateBuffer(state, {\n server: serverID,\n name: name\n }, updater);\n }\n function updateUser(name, updater) {\n return updateServer((server)=>{\n let users = new $bd3c59ab25aed5ca$export$6296a711f00288b1(server.users);\n let updated = $fca64bf918d5638f$var$updateState(users.get(name), updater);\n if (!updated) return;\n users.set(name, updated);\n return {\n users: users\n };\n });\n }\n // Don't update our internal state if it's a chat history message\n if ($bd3c59ab25aed5ca$export$f4751a564f6d84a3(msg, \"chathistory\")) return;\n let target, channel, topic, targets, who, update, buffers;\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$31b0bce566d09826:\n // TODO: parse available modes\n let serverInfo = {\n name: msg.params[1],\n version: msg.params[2]\n };\n return updateBuffer($fca64bf918d5638f$export$50f2960994553271, {\n serverInfo: serverInfo\n });\n case $bd3c59ab25aed5ca$export$1d0c7ae9b6b17819:\n buffers = new Map(state.buffers);\n state.buffers.forEach((buf)=>{\n if (buf.server != serverID) return;\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members, client.cm);\n buffers.set(buf.id, {\n ...buf,\n members: members\n });\n });\n return {\n buffers: buffers,\n ...updateServer((server)=>{\n return {\n name: client.isupport.network(),\n cm: client.cm,\n users: new $bd3c59ab25aed5ca$export$6296a711f00288b1(server.users, client.cm),\n reliableUserAccounts: client.isupport.monitor() > 0 && client.isupport.whox(),\n statusMsg: client.isupport.statusMsg(),\n bouncerNetID: client.isupport.bouncerNetID()\n };\n })\n };\n case \"CAP\":\n return updateServer({\n supportsSASLPlain: client.supportsSASL(\"PLAIN\"),\n supportsAccountRegistration: client.caps.enabled.has(\"draft/account-registration\"),\n isBouncer: client.caps.enabled.has(\"soju.im/bouncer-networks\")\n });\n case $bd3c59ab25aed5ca$export$97b01f8c0b76e599:\n return updateServer({\n account: msg.params[2]\n });\n case $bd3c59ab25aed5ca$export$3ae55a67359785dc:\n return updateServer({\n account: null\n });\n case \"REGISTER\":\n case \"VERIFY\":\n if (msg.params[0] === \"SUCCESS\") return updateServer({\n account: msg.params[1]\n });\n break;\n case $bd3c59ab25aed5ca$export$a675057415015158:\n channel = msg.params[1];\n return updateBuffer(channel, {\n topic: null\n });\n case $bd3c59ab25aed5ca$export$c233ee342453910:\n channel = msg.params[1];\n topic = msg.params[2];\n return updateBuffer(channel, {\n topic: topic\n });\n case $bd3c59ab25aed5ca$export$b1fa6c92095fdab1:\n break;\n case $bd3c59ab25aed5ca$export$698923df90b7ea6d:\n channel = msg.params[1];\n return updateBuffer(channel, (buf)=>{\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(null, buf.members.caseMap);\n msg.list.forEach((namreply)=>{\n let membersList = namreply.params[3].split(\" \");\n membersList.forEach((s)=>{\n let member = $bd3c59ab25aed5ca$export$4812b7165edd26af(s);\n members.set(member.name, member.prefix);\n });\n });\n return {\n members: members\n };\n });\n case $bd3c59ab25aed5ca$export$1ea987b9a16ea266:\n target = msg.params[1];\n if (msg.list.length == 0 && !client.isChannel(target) && target.indexOf(\"*\") < 0) // Not a channel nor a mask, likely a nick\n return updateUser(target, (user)=>{\n return {\n offline: true\n };\n });\n else return updateServer((server)=>{\n let users = new $bd3c59ab25aed5ca$export$6296a711f00288b1(server.users);\n for (let reply of msg.list){\n let who = client.parseWhoReply(reply);\n if (who.flags !== undefined) {\n who.away = who.flags.indexOf(\"G\") >= 0; // H for here, G for gone\n who.operator = who.flags.indexOf(\"*\") >= 0;\n let botFlag = client.isupport.bot();\n if (botFlag) who.bot = who.flags.indexOf(botFlag) >= 0;\n delete who.flags;\n }\n who.offline = false;\n users.set(who.nick, who);\n }\n return {\n users: users\n };\n });\n break;\n case \"JOIN\":\n channel = msg.params[0];\n if (client.isMyNick(msg.prefix.name)) {\n let [id, update] = $fca64bf918d5638f$export$7254cc27399e90bd.createBuffer(state, channel, serverID, client);\n state = {\n ...state,\n ...update\n };\n }\n update = updateBuffer(channel, (buf)=>{\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n members.set(msg.prefix.name, \"\");\n let joined = buf.joined || client.isMyNick(msg.prefix.name);\n return {\n members: members,\n joined: joined\n };\n });\n state = {\n ...state,\n ...update\n };\n who = {\n nick: msg.prefix.name,\n offline: false\n };\n if (msg.prefix.user) who.username = msg.prefix.user;\n if (msg.prefix.host) who.hostname = msg.prefix.host;\n if (msg.params.length > 2) {\n who.account = msg.params[1];\n if (who.account === \"*\") who.account = null;\n who.realname = msg.params[2];\n }\n update = updateUser(msg.prefix.name, who);\n state = {\n ...state,\n ...update\n };\n return state;\n case \"PART\":\n channel = msg.params[0];\n return updateBuffer(channel, (buf)=>{\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n members.delete(msg.prefix.name);\n let joined = buf.joined && !client.isMyNick(msg.prefix.name);\n return {\n members: members,\n joined: joined\n };\n });\n case \"KICK\":\n channel = msg.params[0];\n let nick = msg.params[1];\n return updateBuffer(channel, (buf)=>{\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n members.delete(nick);\n let joined = buf.joined && !client.isMyNick(nick);\n return {\n members: members,\n joined: joined\n };\n });\n case \"QUIT\":\n buffers = new Map(state.buffers);\n state.buffers.forEach((buf)=>{\n if (buf.server != serverID) return;\n if (!buf.members.has(msg.prefix.name)) return;\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n members.delete(msg.prefix.name);\n buffers.set(buf.id, {\n ...buf,\n members: members\n });\n });\n state = {\n ...state,\n buffers: buffers\n };\n update = updateUser(msg.prefix.name, (user)=>{\n if (!user) return;\n return {\n offline: true\n };\n });\n state = {\n ...state,\n ...update\n };\n return state;\n case \"NICK\":\n let newNick = msg.params[0];\n buffers = new Map(state.buffers);\n state.buffers.forEach((buf)=>{\n if (buf.server != serverID) return;\n if (!buf.members.has(msg.prefix.name)) return;\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n members.set(newNick, members.get(msg.prefix.name));\n members.delete(msg.prefix.name);\n buffers.set(buf.id, {\n ...buf,\n members: members\n });\n });\n state = {\n ...state,\n buffers: buffers\n };\n update = updateServer((server)=>{\n let users = new $bd3c59ab25aed5ca$export$6296a711f00288b1(server.users);\n let user = users.get(msg.prefix.name);\n if (!user) return;\n users.set(newNick, user);\n users.delete(msg.prefix.name);\n return {\n users: users\n };\n });\n state = {\n ...state,\n ...update\n };\n return state;\n case \"SETNAME\":\n return updateUser(msg.prefix.name, {\n realname: msg.params[0]\n });\n case \"CHGHOST\":\n return updateUser(msg.prefix.name, {\n username: msg.params[0],\n hostname: msg.params[1]\n });\n case \"ACCOUNT\":\n let account = msg.params[0];\n if (account === \"*\") account = null;\n return updateUser(msg.prefix.name, {\n account: account\n });\n case \"AWAY\":\n let awayMessage = msg.params[0];\n return updateUser(msg.prefix.name, {\n away: !!awayMessage\n });\n case \"TOPIC\":\n channel = msg.params[0];\n topic = msg.params[1];\n return updateBuffer(channel, {\n topic: topic\n });\n case \"MODE\":\n target = msg.params[0];\n if (!client.isChannel(target)) return; // TODO: handle user mode changes too\n let prefix = client.isupport.prefix();\n let prefixByMode = new Map($bd3c59ab25aed5ca$export$3b27c9ff97cdb350(prefix).map((membership)=>{\n return [\n membership.mode,\n membership.prefix\n ];\n }));\n return updateBuffer(target, (buf)=>{\n let members = new $bd3c59ab25aed5ca$export$6296a711f00288b1(buf.members);\n $bd3c59ab25aed5ca$export$6115b92b9c2241a7(msg, client.isupport, (mode, add, arg)=>{\n if (prefixByMode.has(mode)) {\n let nick = arg;\n let membership = members.get(nick);\n let letter = prefixByMode.get(mode);\n members.set(nick, $fca64bf918d5638f$var$updateMembership(membership, letter, add, client));\n }\n });\n return {\n members: members\n };\n });\n case $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3:\n case $bd3c59ab25aed5ca$export$69132af27147d725:\n targets = msg.params[1].split(\",\");\n for (let target of targets){\n let prefix = $bd3c59ab25aed5ca$export$3059e96a5fe807c3(target);\n let update = updateUser(prefix.name, {\n offline: msg.command == $bd3c59ab25aed5ca$export$69132af27147d725\n });\n state = {\n ...state,\n ...update\n };\n }\n return state;\n }\n },\n addMessage (state, msg, bufID) {\n $fca64bf918d5638f$var$lastMessageKey++;\n msg.key = $fca64bf918d5638f$var$lastMessageKey;\n return $fca64bf918d5638f$export$7254cc27399e90bd.updateBuffer(state, bufID, (buf)=>{\n let messages = $fca64bf918d5638f$var$insertMessage(buf.messages, msg);\n return {\n messages: messages\n };\n });\n }\n};\n\n\n\nconst $740325ae3fd2006f$var$PREFIX = \"gamja_\";\nclass $740325ae3fd2006f$var$Item {\n constructor(k){\n this.k = $740325ae3fd2006f$var$PREFIX + k;\n }\n load() {\n let v = localStorage.getItem(this.k);\n if (!v) return null;\n return JSON.parse(v);\n }\n put(v) {\n if (v) localStorage.setItem(this.k, JSON.stringify(v));\n else localStorage.removeItem(this.k);\n }\n}\nconst $740325ae3fd2006f$export$3b637ec8b5dd5146 = new $740325ae3fd2006f$var$Item(\"autoconnect\");\nconst $740325ae3fd2006f$export$a9ec709c82e011a4 = new $740325ae3fd2006f$var$Item(\"naggedProtocolHandler\");\nconst $740325ae3fd2006f$export$a5a6e0b888b2c992 = new $740325ae3fd2006f$var$Item(\"settings\");\nfunction $740325ae3fd2006f$var$debounce(f, delay) {\n let timeout = null;\n return (...args)=>{\n clearTimeout(timeout);\n timeout = setTimeout(()=>{\n timeout = null;\n f(...args);\n }, delay);\n };\n}\nclass $740325ae3fd2006f$export$a143d493d941bafc {\n raw = new $740325ae3fd2006f$var$Item(\"buffers\");\n m = null;\n constructor(){\n let obj = this.raw.load();\n this.m = new Map(Object.entries(obj || {}));\n let saveImmediately = this.save.bind(this);\n this.save = $740325ae3fd2006f$var$debounce(saveImmediately, 500);\n document.addEventListener(\"visibilitychange\", ()=>{\n if (document.visibilityState === \"hidden\") saveImmediately();\n });\n }\n key(buf) {\n // TODO: use case-mapping here somehow\n return JSON.stringify({\n name: buf.name.toLowerCase(),\n server: {\n bouncerNetwork: buf.server.bouncerNetwork\n }\n });\n }\n save() {\n if (this.m.size > 0) this.raw.put(Object.fromEntries(this.m));\n else this.raw.put(null);\n }\n get(buf) {\n return this.m.get(this.key(buf));\n }\n put(buf) {\n let key = this.key(buf);\n let updated = !this.m.has(key);\n let prev = this.m.get(key) || {};\n let unread = prev.unread || (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE;\n if (buf.unread !== undefined && buf.unread !== prev.unread) {\n unread = buf.unread;\n updated = true;\n }\n let receipts = {\n ...prev.receipts\n };\n if (buf.receipts) {\n Object.keys(buf.receipts).forEach((k)=>{\n // Use a not-equals comparison here so that no-op receipt\n // changes are correctly handled\n if (!receipts[k] || receipts[k].time < buf.receipts[k].time) {\n receipts[k] = buf.receipts[k];\n updated = true;\n }\n });\n if (receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED] < receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ]) {\n receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED] = receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ];\n updated = true;\n }\n }\n let closed = prev.closed || false;\n if (buf.closed !== undefined && buf.closed !== prev.closed) {\n closed = buf.closed;\n updated = true;\n }\n if (!updated) return false;\n this.m.set(this.key(buf), {\n name: buf.name,\n unread: unread,\n receipts: receipts,\n closed: closed,\n server: {\n bouncerNetwork: buf.server.bouncerNetwork\n }\n });\n this.save();\n return true;\n }\n delete(buf) {\n this.m.delete(this.key(buf));\n this.save();\n }\n list(server) {\n // Some gamja versions would store the same buffer multiple times\n let names = new Set();\n let buffers = [];\n for (const buf of this.m.values()){\n if (buf.server.bouncerNetwork !== server.bouncerNetwork) continue;\n if (names.has(buf.name)) continue;\n buffers.push(buf);\n names.add(buf.name);\n }\n return buffers;\n }\n clear(server) {\n if (server) for (const buf of this.list(server))this.m.delete(this.key(buf));\n else this.m = new Map();\n this.save();\n }\n}\n\n\n\n// XXX: If we were feeling creative we could generate unique colors for\n// each item in ISUPPORT CHANMODES. But I am not feeling creative.\nconst $0bbd5f20273017a0$var$names = {\n \"~\": \"owner\",\n \"&\": \"admin\",\n \"@\": \"op\",\n \"%\": \"halfop\",\n \"+\": \"voice\"\n};\nfunction $0bbd5f20273017a0$export$2e2bcd8739ae039(props) {\n if (!this.props.value) return null;\n const name = $0bbd5f20273017a0$var$names[this.props.value[0]] || \"\";\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\n\t\t\t${this.props.value}\n\t\t\n\t`;\n}\n\n\nfunction $47db4ea8a56fc107$var$djb2(s) {\n let hash = 5381;\n for(let i = 0; i < s.length; i++){\n hash = (hash << 5) + hash + s.charCodeAt(i);\n hash = hash >>> 0; // convert to uint32\n }\n return hash;\n}\nfunction $47db4ea8a56fc107$var$Nick(props) {\n function handleClick(event) {\n event.preventDefault();\n props.onClick();\n }\n let title;\n if (props.user && $bd3c59ab25aed5ca$export$64ec8def5466157c(props.user.realname, props.nick)) title = (0, $803ef401580605c5$export$6a0f863afc2134d8)(props.user.realname);\n let colorIndex = $47db4ea8a56fc107$var$djb2(props.nick) % 16 + 1;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t${props.nick}\n\t`;\n}\nfunction $47db4ea8a56fc107$var$_Timestamp({ date: date, url: url, showSeconds: showSeconds }) {\n if (!date) {\n let timestamp = \"--:--\";\n if (showSeconds) timestamp += \":--\";\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${timestamp}`;\n }\n let hh = date.getHours().toString().padStart(2, \"0\");\n let mm = date.getMinutes().toString().padStart(2, \"0\");\n let timestamp = `${hh}:${mm}`;\n if (showSeconds) {\n let ss = date.getSeconds().toString().padStart(2, \"0\");\n timestamp += \":\" + ss;\n }\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\tevent.preventDefault()}\n\t\t>\n\t\t\t${timestamp}\n\t\t\n\t`;\n}\nfunction $47db4ea8a56fc107$var$Timestamp(props) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t<${(0, $fca64bf918d5638f$export$8fa45c82eddfe270).Consumer}>\n\t\t\t${(settings)=>(0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$_Timestamp} ...${props} showSeconds=${settings.secondsInTimestamps}/>\n\t\t\t`}\n\t\t\n\t`;\n}\n/**\n * Check whether a message can be folded.\n *\n * Unimportant and noisy messages that may clutter the discussion should be\n * folded.\n */ function $47db4ea8a56fc107$var$canFoldMessage(msg) {\n switch(msg.command){\n case \"JOIN\":\n case \"PART\":\n case \"QUIT\":\n case \"NICK\":\n return true;\n }\n return false;\n}\nclass $47db4ea8a56fc107$var$LogLine extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n shouldComponentUpdate(nextProps) {\n return this.props.message !== nextProps.message;\n }\n render() {\n let msg = this.props.message;\n let buf = this.props.buffer;\n let server = this.props.server;\n let onNickClick = this.props.onNickClick;\n let onChannelClick = this.props.onChannelClick;\n let onVerifyClick = this.props.onVerifyClick;\n function createNick(nick) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$Nick}\n\t\t\t\t\tnick=${nick}\n\t\t\t\t\tuser=${server.users.get(nick)}\n\t\t\t\t\tonClick=${()=>onNickClick(nick)}\n\t\t\t\t/>\n\t\t\t`;\n }\n function createChannel(channel) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t\t${channel}\n\t\t\t\t\n\t\t\t`;\n }\n let lineClass = \"\";\n let content;\n let invitee, target, account;\n switch(msg.command){\n case \"NOTICE\":\n case \"PRIVMSG\":\n target = msg.params[0];\n let text = msg.params[1];\n let ctcp = $bd3c59ab25aed5ca$export$60937d95e568734f(msg);\n if (ctcp) {\n if (ctcp.command == \"ACTION\") {\n lineClass = \"me-tell\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`* ${createNick(msg.prefix.name)} ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)((0, $803ef401580605c5$export$6a0f863afc2134d8)(ctcp.param), onChannelClick)}`;\n } else content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t\t${createNick(msg.prefix.name)} has sent a CTCP command: ${ctcp.command} ${ctcp.param}\n\t\t\t\t\t`;\n } else {\n lineClass = \"talk\";\n let prefix = \"<\", suffix = \">\";\n if (msg.command == \"NOTICE\") prefix = suffix = \"-\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${prefix}${createNick(msg.prefix.name)}${suffix} ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)((0, $803ef401580605c5$export$6a0f863afc2134d8)(text), onChannelClick)}`;\n }\n let status = null;\n let allowedPrefixes = server.statusMsg;\n if (target !== buf.name && allowedPrefixes) {\n let parts = $bd3c59ab25aed5ca$export$4812b7165edd26af(target, allowedPrefixes);\n if (parts.name === buf.name) content = [\n (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`(<${(0, $0bbd5f20273017a0$export$2e2bcd8739ae039)} value=${parts.prefix}/>)`,\n \" \",\n content\n ];\n }\n if (msg.tags[\"+draft/channel-context\"]) content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`(only visible to you) ${content}`;\n if (msg.isHighlight) lineClass += \" highlight\";\n break;\n case \"JOIN\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} has joined\n\t\t\t`;\n break;\n case \"PART\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} has left\n\t\t\t`;\n break;\n case \"QUIT\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} has quit\n\t\t\t`;\n break;\n case \"NICK\":\n let newNick = msg.params[0];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} is now known as ${createNick(newNick)}\n\t\t\t`;\n break;\n case \"KICK\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.params[1])} was kicked by ${createNick(msg.prefix.name)} (${msg.params.slice(2)})\n\t\t\t`;\n break;\n case \"MODE\":\n target = msg.params[0];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t* ${createNick(msg.prefix.name)} sets mode ${msg.params.slice(1).join(\" \")}\n\t\t\t`;\n // TODO: case-mapping\n if (buf.name !== target) content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${content} on ${target}`;\n break;\n case \"TOPIC\":\n let topic = msg.params[1];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} changed the topic to: ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)((0, $803ef401580605c5$export$6a0f863afc2134d8)(topic), onChannelClick)}\n\t\t\t`;\n break;\n case \"INVITE\":\n invitee = msg.params[0];\n let channel = msg.params[1];\n // TODO: instead of checking buffer type, check if invitee is our nick\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) {\n lineClass = \"talk\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\tYou have been invited to ${createChannel(channel)} by ${createNick(msg.prefix.name)}\n\t\t\t\t`;\n } else content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t${createNick(msg.prefix.name)} has invited ${createNick(invitee)} to the channel\n\t\t\t\t`;\n break;\n case $bd3c59ab25aed5ca$export$cac9ca3596de2b3a:\n let nick = msg.params[0];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`Connected to server, your nickname is ${nick}`;\n break;\n case $bd3c59ab25aed5ca$export$6bc24f4e6578b579:\n invitee = msg.params[1];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${createNick(invitee)} has been invited to the channel`;\n break;\n case $bd3c59ab25aed5ca$export$3db4cc949c7e95b3:\n lineClass = \"motd\";\n content = (0, $37d24d778c2f247c$export$2e2bcd8739ae039)((0, $803ef401580605c5$export$6a0f863afc2134d8)(msg.params[1]), onChannelClick);\n break;\n case $bd3c59ab25aed5ca$export$97b01f8c0b76e599:\n account = msg.params[2];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`You are now authenticated as ${account}`;\n break;\n case $bd3c59ab25aed5ca$export$3ae55a67359785dc:\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`You are now unauthenticated`;\n break;\n case \"REGISTER\":\n account = msg.params[1];\n let reason = msg.params[2];\n function handleVerifyClick(event) {\n event.preventDefault();\n onVerifyClick(account, reason);\n }\n switch(msg.params[0]){\n case \"SUCCESS\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`A new account has been created, you are now authenticated as ${account}`;\n break;\n case \"VERIFICATION_REQUIRED\":\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`A new account has been created, but you need to verify it: ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)(reason)}`;\n break;\n }\n break;\n case \"VERIFY\":\n account = msg.params[1];\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`The new account has been verified, you are now authenticated as ${account}`;\n break;\n case $bd3c59ab25aed5ca$export$6184319b67962807:\n let mode = msg.params[1];\n if (mode) content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`Your user mode is ${mode}`;\n else content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`You have no user mode`;\n break;\n case $bd3c59ab25aed5ca$export$8e826dfe9edc5be1:\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`Channel mode is ${msg.params.slice(2).join(\" \")}`;\n break;\n case $bd3c59ab25aed5ca$export$110395ee82c419bd:\n let date = new Date(parseInt(msg.params[2], 10) * 1000);\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`Channel was created on ${date.toLocaleString()}`;\n break;\n // MONITOR messages are only displayed in user buffers\n case $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3:\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${createNick(buf.name)} is online`;\n break;\n case $bd3c59ab25aed5ca$export$69132af27147d725:\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${createNick(buf.name)} is offline`;\n break;\n default:\n if ($bd3c59ab25aed5ca$export$e6127cc7fe7395c3(msg.command) && msg.command != $bd3c59ab25aed5ca$export$7e8b5ab33a021d11) lineClass = \"error\";\n content = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${msg.command} ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)(msg.params.join(\" \"))}`;\n }\n if (!content) return null;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t<${$47db4ea8a56fc107$var$Timestamp} date=${new Date(msg.tags.time)} url=${(0, $fca64bf918d5638f$export$8499bd1ed7c872c2)(buf, msg)}/>\n\t\t\t\t${\" \"}\n\t\t\t\t${content}\n\t\t\t
\n\t\t`;\n }\n}\nfunction $47db4ea8a56fc107$var$createNickList(nicks, createNick) {\n if (nicks.length === 0) return null;\n else if (nicks.length === 1) return createNick(nicks[0]);\n let l = nicks.slice(0, nicks.length - 1).map((nick, i)=>{\n if (i === 0) return createNick(nick);\n else return [\n \", \",\n createNick(nick)\n ];\n });\n l.push(\" and \");\n l.push(createNick(nicks[nicks.length - 1]));\n return l;\n}\nclass $47db4ea8a56fc107$var$FoldGroup extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n shouldComponentUpdate(nextProps) {\n return this.props.messages[0] !== nextProps.messages[0] || this.props.messages[this.props.messages.length - 1] !== nextProps.messages[nextProps.messages.length - 1];\n }\n render() {\n let msgs = this.props.messages;\n let buf = this.props.buffer;\n let server = this.props.server;\n let onNickClick = this.props.onNickClick;\n function createNick(nick) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$Nick}\n\t\t\t\t\tnick=${nick}\n\t\t\t\t\tuser=${server.users.get(nick)}\n\t\t\t\t\tonClick=${()=>onNickClick(nick)}\n\t\t\t\t/>\n\t\t\t`;\n }\n let byCommand = {\n \"JOIN\": [],\n \"PART\": [],\n \"QUIT\": [],\n \"NICK\": []\n };\n msgs.forEach((msg)=>{\n byCommand[msg.command].push(msg);\n });\n let first = true;\n let content = [];\n [\n \"JOIN\",\n \"PART\",\n \"QUIT\"\n ].forEach((cmd)=>{\n if (byCommand[cmd].length === 0) return;\n let nicks = new Set(byCommand[cmd].map((msg)=>msg.prefix.name));\n let plural = nicks.size > 1;\n let action;\n switch(cmd){\n case \"JOIN\":\n action = plural ? \"have joined\" : \"has joined\";\n break;\n case \"PART\":\n action = plural ? \"have left\" : \"has left\";\n break;\n case \"QUIT\":\n action = plural ? \"have quit\" : \"has quit\";\n break;\n }\n if (first) first = false;\n else content.push(\", \");\n content.push($47db4ea8a56fc107$var$createNickList([\n ...nicks\n ], createNick));\n content.push(\" \" + action);\n });\n byCommand[\"NICK\"].forEach((msg)=>{\n if (first) first = false;\n else content.push(\", \");\n let newNick = msg.params[0];\n content.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${createNick(msg.prefix.name)} is now known as ${createNick(newNick)}\n\t\t\t`);\n });\n let lastMsg = msgs[msgs.length - 1];\n let firstDate = new Date(msgs[0].tags.time);\n let lastDate = new Date(lastMsg.tags.time);\n let timestamp = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t<${$47db4ea8a56fc107$var$Timestamp} date=${firstDate} url=${(0, $fca64bf918d5638f$export$8499bd1ed7c872c2)(buf, msgs[0])}/>\n\t\t`;\n if (lastDate - firstDate > 6000) timestamp = [\n timestamp,\n \" \\u2014 \",\n (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t<${$47db4ea8a56fc107$var$Timestamp} date=${lastDate} url=${(0, $fca64bf918d5638f$export$8499bd1ed7c872c2)(buf, lastMsg)}/>\n\t\t\t\t`\n ];\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t${timestamp}\n\t\t\t\t${\" \"}\n\t\t\t\t${content}\n\t\t\t
\n\t\t`;\n }\n}\n// Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=481856\nlet $47db4ea8a56fc107$var$notificationsSupported = false;\nif (window.Notification) {\n $47db4ea8a56fc107$var$notificationsSupported = true;\n if (Notification.permission === \"default\") try {\n new Notification(\"\");\n } catch (err) {\n if (err.name === \"TypeError\") $47db4ea8a56fc107$var$notificationsSupported = false;\n }\n}\nclass $47db4ea8a56fc107$var$NotificationNagger extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n nag: false\n };\n constructor(props){\n super(props);\n this.handleClick = this.handleClick.bind(this);\n this.state.nag = this.shouldNag();\n }\n shouldNag() {\n return $47db4ea8a56fc107$var$notificationsSupported && Notification.permission === \"default\";\n }\n handleClick(event) {\n event.preventDefault();\n Notification.requestPermission((permission)=>{\n this.setState({\n nag: this.shouldNag()\n });\n });\n }\n render() {\n if (!this.state.nag) return null;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t<${$47db4ea8a56fc107$var$Timestamp}/>\n\t\t\t\t${\" \"}\n\t\t\t\tTurn on desktop notifications to get notified about new messages\n\t\t\t
\n\t\t`;\n }\n}\nclass $47db4ea8a56fc107$var$ProtocolHandlerNagger extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n nag: true\n };\n constructor(props){\n super(props);\n this.handleClick = this.handleClick.bind(this);\n this.state.nag = !$740325ae3fd2006f$export$a9ec709c82e011a4.load();\n }\n handleClick(event) {\n event.preventDefault();\n let url = window.location.origin + window.location.pathname + \"?open=%s\";\n try {\n navigator.registerProtocolHandler(\"irc\", url);\n navigator.registerProtocolHandler(\"ircs\", url);\n } catch (err) {\n console.error(\"Failed to register protocol handler: \", err);\n }\n $740325ae3fd2006f$export$a9ec709c82e011a4.put(true);\n this.setState({\n nag: false\n });\n }\n render() {\n if (!navigator.registerProtocolHandler || !this.state.nag) return null;\n let name = this.props.bouncerName || \"this bouncer\";\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t<${$47db4ea8a56fc107$var$Timestamp}/>\n\t\t\t\t${\" \"}\n\t\t\t\tRegister our protocol handler to open IRC links with ${name}\n\t\t\t
\n\t\t`;\n }\n}\nfunction $47db4ea8a56fc107$var$AccountNagger({ server: server, onAuthClick: onAuthClick, onRegisterClick: onRegisterClick }) {\n let accDesc = \"an account on this server\";\n if (server.name) accDesc = \"a \" + server.name + \" account\";\n function handleAuthClick(event) {\n event.preventDefault();\n onAuthClick();\n }\n function handleRegisterClick(event) {\n event.preventDefault();\n onRegisterClick();\n }\n let msg = [\n (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\tYou are unauthenticated on this server,\n\t\t${\" \"}\n\t\tlogin\n\t\t${\" \"}\n\t`\n ];\n if (server.supportsAccountRegistration) msg.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`or register ${accDesc}`);\n else msg.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`if you have ${accDesc}`);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t
\n\t\t\t<${$47db4ea8a56fc107$var$Timestamp}/> ${msg}\n\t\t
\n\t`;\n}\nclass $47db4ea8a56fc107$var$DateSeparator extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n constructor(props){\n super(props);\n }\n shouldComponentUpdate(nextProps) {\n return this.props.date.getTime() !== nextProps.date.getTime();\n }\n render() {\n let date = this.props.date;\n let text = date.toLocaleDateString([], {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\"\n });\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t${text}\n\t\t\t
\n\t\t`;\n }\n}\nfunction $47db4ea8a56fc107$var$UnreadSeparator(props) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
New messages
`;\n}\nfunction $47db4ea8a56fc107$var$sameDate(d1, d2) {\n return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate();\n}\nclass $47db4ea8a56fc107$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n shouldComponentUpdate(nextProps) {\n return this.props.buffer !== nextProps.buffer || this.props.settings !== nextProps.settings;\n }\n render() {\n let buf = this.props.buffer;\n if (!buf) return null;\n let server = this.props.server;\n let bouncerNetwork = this.props.bouncerNetwork;\n let settings = this.props.settings;\n let serverName = server.name;\n let children = [];\n if (buf.type == (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) children.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${$47db4ea8a56fc107$var$NotificationNagger}/>`);\n if (buf.type == (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER && server.isBouncer && !server.bouncerNetID) children.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${$47db4ea8a56fc107$var$ProtocolHandlerNagger} bouncerName=${serverName}/>`);\n if (buf.type == (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER && server.status == (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERED && server.supportsSASLPlain && !server.account) children.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$AccountNagger}\n\t\t\t\t\tserver=${server}\n\t\t\t\t\tonAuthClick=${this.props.onAuthClick}\n\t\t\t\t\tonRegisterClick=${this.props.onRegisterClick}\n\t\t\t\t/>\n\t\t\t`);\n let onChannelClick = this.props.onChannelClick;\n let onNickClick = this.props.onNickClick;\n let onVerifyClick = this.props.onVerifyClick;\n function createLogLine(msg) {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$LogLine}\n\t\t\t\t\tkey=${\"msg-\" + msg.key}\n\t\t\t\t\tmessage=${msg}\n\t\t\t\t\tbuffer=${buf}\n\t\t\t\t\tserver=${server}\n\t\t\t\t\tonChannelClick=${onChannelClick}\n\t\t\t\t\tonNickClick=${onNickClick}\n\t\t\t\t\tonVerifyClick=${onVerifyClick}\n\t\t\t\t/>\n\t\t\t`;\n }\n function createFoldGroup(msgs) {\n // Merge NICK change chains\n let nickChanges = new Map();\n let mergedMsgs = [];\n for (let msg of msgs){\n let keep = true;\n switch(msg.command){\n case \"PART\":\n case \"QUIT\":\n nickChanges.delete(msg.prefix.name);\n break;\n case \"NICK\":\n let prev = nickChanges.get(msg.prefix.name);\n if (!prev) {\n // Future NICK messages may mutate this one\n msg = {\n ...msg\n };\n nickChanges.set(msg.params[0], msg);\n break;\n }\n prev.params = msg.params;\n nickChanges.delete(msg.prefix.name);\n nickChanges.set(msg.params[0], prev);\n keep = false;\n break;\n }\n if (keep) mergedMsgs.push(msg);\n }\n msgs = mergedMsgs;\n // Filter out PART → JOIN pairs, as well as no-op NICKs from previous step\n let partIndexes = new Map();\n let keep = [];\n msgs.forEach((msg, i)=>{\n if (msg.command === \"PART\" || msg.command === \"QUIT\") partIndexes.set(msg.prefix.name, i);\n if (msg.command === \"JOIN\" && partIndexes.has(msg.prefix.name)) {\n keep[partIndexes.get(msg.prefix.name)] = false;\n partIndexes.delete(msg.prefix.name);\n keep.push(false);\n } else if (msg.command === \"NICK\" && msg.prefix.name == msg.params[0]) keep.push(false);\n else keep.push(true);\n });\n msgs = msgs.filter((msg, i)=>keep[i]);\n if (msgs.length === 0) return null;\n else if (msgs.length === 1) return createLogLine(msgs[0]);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$47db4ea8a56fc107$var$FoldGroup}\n\t\t\t\t\tkey=${\"fold-\" + msgs[0].key + \"-\" + msgs[msgs.length - 1].key}\n\t\t\t\t\tmessages=${msgs}\n\t\t\t\t\tbuffer=${buf}\n\t\t\t\t\tserver=${server}\n\t\t\t\t\tonNickClick=${onNickClick}\n\t\t\t\t/>\n\t\t\t`;\n }\n let hasUnreadSeparator = false;\n let prevDate = new Date();\n let foldMessages = [];\n let lastMonitor = null;\n buf.messages.forEach((msg)=>{\n let sep = [];\n if (settings.bufferEvents === (0, $fca64bf918d5638f$export$3ee12e3d13dfa897).HIDE && $47db4ea8a56fc107$var$canFoldMessage(msg)) return;\n if (msg.command === $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3 || msg.command === $bd3c59ab25aed5ca$export$69132af27147d725) {\n let skip = !lastMonitor || msg.command === lastMonitor;\n lastMonitor = msg.command;\n if (skip) return;\n }\n if (!hasUnreadSeparator && buf.type != (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER && !(0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, buf.prevReadReceipt)) {\n sep.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${$47db4ea8a56fc107$var$UnreadSeparator} key=\"unread\"/>`);\n hasUnreadSeparator = true;\n }\n let date = new Date(msg.tags.time);\n if (!$47db4ea8a56fc107$var$sameDate(prevDate, date)) sep.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${$47db4ea8a56fc107$var$DateSeparator} key=${\"date-\" + date} date=${date}/>`);\n prevDate = date;\n if (sep.length > 0) {\n children.push(createFoldGroup(foldMessages));\n children.push(sep);\n foldMessages = [];\n }\n // TODO: consider checking the time difference too\n if (settings.bufferEvents === (0, $fca64bf918d5638f$export$3ee12e3d13dfa897).FOLD && $47db4ea8a56fc107$var$canFoldMessage(msg)) {\n foldMessages.push(msg);\n return;\n }\n if (foldMessages.length > 0) {\n children.push(createFoldGroup(foldMessages));\n foldMessages = [];\n }\n children.push(createLogLine(msg));\n });\n children.push(createFoldGroup(foldMessages));\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
\n\t\t\t\t${children}\n\t\t\t
\n\t\t`;\n }\n}\n\n\n\n\n\n\nfunction $cd5f528e18548e6d$var$BufferItem(props) {\n function handleClick(event) {\n event.preventDefault();\n props.onClick();\n }\n function handleMouseDown(event) {\n if (event.button === 1) {\n event.preventDefault();\n props.onClose();\n }\n }\n let name = props.buffer.name;\n if (props.buffer.type == (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) name = (0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(props.server, props.bouncerNetwork);\n let title;\n let classes = [\n \"type-\" + props.buffer.type\n ];\n if (props.active) classes.push(\"active\");\n if (props.buffer.unread != (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE) classes.push(\"unread-\" + props.buffer.unread);\n switch(props.buffer.type){\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER:\n let isError = props.server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).DISCONNECTED;\n if (props.bouncerNetwork && props.bouncerNetwork.error) isError = true;\n if (isError) classes.push(\"error\");\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK:\n let user = props.server.users.get(name);\n if (user && $bd3c59ab25aed5ca$export$64ec8def5466157c(user.realname, name)) title = (0, $803ef401580605c5$export$6a0f863afc2134d8)(user.realname);\n break;\n }\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t
  • \n\t\t\t${name}\n\t\t
  • \n\t`;\n}\nfunction $cd5f528e18548e6d$export$2e2bcd8739ae039(props) {\n let items = Array.from(props.buffers.values()).map((buf)=>{\n let server = props.servers.get(buf.server);\n let bouncerNetwork = null;\n if (server.bouncerNetID) bouncerNetwork = props.bouncerNetworks.get(server.bouncerNetID);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t<${$cd5f528e18548e6d$var$BufferItem}\n\t\t\t\tkey=${buf.id}\n\t\t\t\tbuffer=${buf}\n\t\t\t\tserver=${server}\n\t\t\t\tbouncerNetwork=${bouncerNetwork}\n\t\t\t\tonClick=${()=>props.onBufferClick(buf)}\n\t\t\t\tonClose=${()=>props.onBufferClose(buf)}\n\t\t\t\tactive=${props.activeBuffer == buf.id}\n\t\t\t/>\n\t\t`;\n });\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
      ${items}
    `;\n}\n\n\n\n\n\n\n\nconst $94cb31469f63b35c$var$UserStatus = {\n HERE: \"here\",\n GONE: \"gone\",\n OFFLINE: \"offline\"\n};\nfunction $94cb31469f63b35c$var$NickStatus(props) {\n let textMap = {\n [$94cb31469f63b35c$var$UserStatus.HERE]: \"User is online\",\n [$94cb31469f63b35c$var$UserStatus.GONE]: \"User is away\",\n [$94cb31469f63b35c$var$UserStatus.OFFLINE]: \"User is offline\"\n };\n let text = textMap[props.status];\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)``;\n}\nfunction $94cb31469f63b35c$export$2e2bcd8739ae039(props) {\n let fullyConnected = props.server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERED;\n if (props.bouncerNetwork) fullyConnected = fullyConnected && props.bouncerNetwork.state === \"connected\";\n let description = null, actions = [];\n switch(props.buffer.type){\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER:\n switch(props.server.status){\n case (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).DISCONNECTED:\n description = \"Disconnected\";\n break;\n case (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).CONNECTING:\n description = \"Connecting...\";\n break;\n case (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERING:\n description = \"Logging in...\";\n break;\n case (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERED:\n if (props.bouncerNetwork) switch(props.bouncerNetwork.state){\n case \"disconnected\":\n description = \"Bouncer disconnected from network\";\n if (props.bouncerNetwork.error) description += \": \" + props.bouncerNetwork.error;\n break;\n case \"connecting\":\n description = \"Bouncer connecting to network...\";\n break;\n case \"connected\":\n // host can be undefined e.g. when using UNIX domain sockets\n description = `Connected to ${props.bouncerNetwork.host || \"network\"}`;\n break;\n }\n else if (props.buffer.serverInfo) {\n let serverInfo = props.buffer.serverInfo;\n description = `Connected to ${serverInfo.name}`;\n } else description = \"Connected\";\n break;\n }\n let joinButton = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\tJoin channel\n\t\t`;\n let reconnectButton = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\tReconnect\n\t\t`;\n let settingsButton = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\tSettings\n\t\t`;\n if (props.server.isBouncer) {\n if (props.server.bouncerNetID) {\n if (fullyConnected) actions.push(joinButton);\n if (props.server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERED) actions.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t\tManage network\n\t\t\t\t\t`);\n } else {\n if (fullyConnected) actions.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t\tAdd network\n\t\t\t\t\t`);\n else if (props.server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).DISCONNECTED) actions.push(reconnectButton);\n actions.push(settingsButton);\n }\n } else {\n if (fullyConnected) actions.push(joinButton);\n else if (props.server.status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).DISCONNECTED) actions.push(reconnectButton);\n actions.push(settingsButton);\n }\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL:\n if (props.buffer.topic) description = (0, $37d24d778c2f247c$export$2e2bcd8739ae039)((0, $803ef401580605c5$export$6a0f863afc2134d8)(props.buffer.topic), props.onChannelClick);\n if (props.buffer.joined) actions.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\tLeave\n\t\t\t`);\n else {\n if (fullyConnected) actions.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\tJoin\n\t\t\t\t`);\n actions.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\tClose\n\t\t\t`);\n }\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK:\n if (props.user) {\n let status = $94cb31469f63b35c$var$UserStatus.HERE;\n if (props.user.offline) status = $94cb31469f63b35c$var$UserStatus.OFFLINE;\n else if (props.user.away) status = $94cb31469f63b35c$var$UserStatus.GONE;\n let realname = props.buffer.name;\n if ($bd3c59ab25aed5ca$export$64ec8def5466157c(props.user.realname, props.buffer.name)) realname = (0, $803ef401580605c5$export$6a0f863afc2134d8)(props.user.realname || \"\");\n let details = [];\n if (props.user.username && props.user.hostname) details.push(`${props.user.username}@${props.user.hostname}`);\n if (props.user.account) {\n let desc = `This user is verified and has logged in to the server with the account ${props.user.account}.`;\n let item;\n if (props.user.account === props.buffer.name) item = \"authenticated\";\n else item = `authenticated as ${props.user.account}`;\n details.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`${item}`);\n } else if (props.server.reliableUserAccounts) {\n // If the server supports MONITOR and WHOX, we can faithfully\n // keep user.account up-to-date for user queries\n let desc = \"This user has not been verified and is not logged in.\";\n details.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`unauthenticated`);\n }\n if (props.user.operator) {\n let desc = \"This user is a server operator, they have administrator privileges.\";\n details.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`server operator`);\n }\n if (props.user.bot) {\n let desc = \"This user is an automated bot.\";\n details.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`bot`);\n }\n details = details.map((item, i)=>{\n if (i === 0) return item;\n return [\n \", \",\n item\n ];\n });\n if (details.length > 0) details = [\n \"(\",\n details,\n \")\"\n ];\n description = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${$94cb31469f63b35c$var$NickStatus} status=${status}/> ${realname} ${details}`;\n }\n actions = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\tClose\n\t\t`;\n break;\n }\n let name = props.buffer.name;\n if (props.buffer.type == (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) name = (0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(props.server, props.bouncerNetwork);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t
    ${name}
    \n\t\t${description ? (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
    ${description}
    ` : null}\n\t\t
    ${actions}
    \n\t`;\n}\n\n\n\n\n\n\nclass $15e0fa56cfe1c276$var$MemberItem extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n constructor(props){\n super(props);\n this.handleClick = this.handleClick.bind(this);\n }\n shouldComponentUpdate(nextProps) {\n return this.props.nick !== nextProps.nick || this.props.membership !== nextProps.membership || this.props.user !== nextProps.user;\n }\n handleClick(event) {\n event.preventDefault();\n this.props.onClick();\n }\n render() {\n // XXX: If we were feeling creative we could generate unique colors for\n // each item in ISUPPORT CHANMODES. But I am not feeling creative.\n const membmap = {\n \"~\": \"owner\",\n \"&\": \"admin\",\n \"@\": \"op\",\n \"%\": \"halfop\",\n \"+\": \"voice\"\n };\n const membclass = membmap[this.props.membership[0]] || \"\";\n let membership = \"\";\n if (this.props.membership) membership = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t\t${this.props.membership}\n\t\t\t\t\n\t\t\t`;\n let title;\n let user = this.props.user;\n let classes = [\n \"nick\"\n ];\n if (user) {\n let mask = \"\";\n if (user.username && user.hostname) mask = `${user.username}@${user.hostname}`;\n if ($bd3c59ab25aed5ca$export$64ec8def5466157c(user.realname, this.props.nick)) {\n title = (0, $803ef401580605c5$export$6a0f863afc2134d8)(user.realname);\n if (mask) title = `${title} (${mask})`;\n } else title = mask;\n if (user.account) title += `\\nAuthenticated as ${user.account}`;\n if (user.away) {\n classes.push(\"away\");\n title += \"\\nAway\";\n }\n }\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t<${0, $0bbd5f20273017a0$export$2e2bcd8739ae039} value=${this.props.membership}/>\n\t\t\t\t\t${this.props.nick}\n\t\t\t\t\n\t\t\t
  • \n\t\t`;\n }\n}\nfunction $15e0fa56cfe1c276$var$sortMembers(a, b) {\n let [nickA, membA] = a, [nickB, membB] = b;\n const prefixPrivs = [\n \"~\",\n \"&\",\n \"@\",\n \"%\",\n \"+\"\n ]; // TODO: grab it from ISUPPORT PREFIX\n let i = prefixPrivs.indexOf(membA[0]), j = prefixPrivs.indexOf(membB[0]);\n if (i < 0) i = prefixPrivs.length;\n if (j < 0) j = prefixPrivs.length;\n if (i !== j) return i - j;\n return nickA.localeCompare(nickB);\n}\nclass $15e0fa56cfe1c276$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n shouldComponentUpdate(nextProps) {\n return this.props.members !== nextProps.members || this.props.users !== nextProps.users;\n }\n render() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
      \n\t\t\t\t${Array.from(this.props.members).sort($15e0fa56cfe1c276$var$sortMembers).map(([nick, membership])=>(0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t<${$15e0fa56cfe1c276$var$MemberItem}\n\t\t\t\t\t\tkey=${nick}\n\t\t\t\t\t\tnick=${nick}\n\t\t\t\t\t\tmembership=${membership}\n\t\t\t\t\t\tuser=${this.props.users.get(nick)}\n\t\t\t\t\t\tonClick=${()=>this.props.onNickClick(nick)}\n\t\t\t\t\t/>\n\t\t\t\t`)}\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\n\nclass $c6f536f0bcf4fccd$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n url: \"\",\n pass: \"\",\n nick: \"\",\n password: \"\",\n rememberMe: false,\n username: \"\",\n realname: \"\",\n autojoin: true\n };\n nickInput = (0, $b2a774aae58c7b4e$export$7d1e3a5e95ceca43)();\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n if (props.params) this.state = {\n ...this.state,\n url: props.params.url || \"\",\n nick: props.params.nick || \"\",\n rememberMe: props.params.autoconnect || false,\n username: props.params.username || \"\",\n realname: props.params.realname || \"\"\n };\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type == \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n if (this.props.connecting) return;\n let params = {\n url: this.state.url,\n pass: this.state.pass,\n nick: this.state.nick,\n autoconnect: this.state.rememberMe,\n username: this.state.username,\n realname: this.state.realname,\n saslPlain: null,\n autojoin: []\n };\n if (this.state.password) params.saslPlain = {\n username: params.username || params.nick,\n password: this.state.password\n };\n else if (this.props.auth === \"external\") params.saslExternal = true;\n else if (this.props.auth === \"oauth2\") params.saslOauthBearer = this.props.params.saslOauthBearer;\n if (this.state.autojoin) params.autojoin = this.props.params.autojoin || [];\n this.props.onSubmit(params);\n }\n componentDidMount() {\n if (this.nickInput.current) this.nickInput.current.focus();\n }\n render() {\n let disabled = this.props.connecting;\n let serverURL = null;\n if (!this.props.params || !this.props.params.url) serverURL = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t

    \n\t\t\t`;\n let status = null;\n if (this.props.connecting) status = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t

    Connecting...

    \n\t\t\t`;\n else if (this.props.error) status = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t

    ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)(this.props.error)}

    \n\t\t\t`;\n let auth = null;\n if (this.props.auth !== \"disabled\" && this.props.auth !== \"external\" && this.props.auth !== \"oauth2\") auth = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t

    \n\t\t\t`;\n let autojoin = null;\n let channels = this.props.params.autojoin || [];\n if (channels.length > 0) {\n let s = channels.length > 1 ? \"s\" : \"\";\n autojoin = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t

    \n\t\t\t`;\n }\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t

    Connect to IRC

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t${auth}\n\n\t\t\t\t${autojoin}\n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t
    \n\t\t\t\t\tAdvanced options\n\n\t\t\t\t\t
    \n\n\t\t\t\t\t${serverURL}\n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\n\n\t\t\t\t${status}\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\nclass $b4b4b87f4b38722c$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n channel: \"#\"\n };\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n if (props.channel) this.state.channel = props.channel;\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type == \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n let params = {\n channel: this.state.channel\n };\n this.props.onSubmit(params);\n }\n render() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\n\nfunction $f6fdf5978ceb757f$var$getSiblingBuffer(buffers, bufID, delta) {\n let bufList = Array.from(buffers.values());\n let i = bufList.findIndex((buf)=>buf.id === bufID);\n if (i < 0) return null;\n i = (i + bufList.length + delta) % bufList.length;\n return bufList[i];\n}\nconst $f6fdf5978ceb757f$export$63ce3c18bd0f1276 = [\n {\n key: \"h\",\n altKey: true,\n description: \"Mark all messages as read\",\n execute: (app)=>{\n app.setState((state)=>{\n let buffers = new Map();\n state.buffers.forEach((buf)=>{\n buffers.set(buf.id, {\n ...buf,\n unread: (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE,\n prevReadReceipt: null\n });\n let receipts = {};\n if (buf.messages.length > 0) {\n let lastMsg = buf.messages[buf.messages.length - 1];\n receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ] = (0, $fca64bf918d5638f$export$1274528beb7cd977)(lastMsg);\n }\n let client = app.clients.get(buf.server);\n app.bufferStore.put({\n name: buf.name,\n server: client.params,\n unread: (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE,\n receipts: receipts\n });\n });\n return {\n buffers: buffers\n };\n }, ()=>{\n app.updateDocumentTitle();\n });\n }\n },\n {\n key: \"a\",\n altKey: true,\n description: \"Jump to next buffer with activity\",\n execute: (app)=>{\n // TODO: order by age if same priority\n let firstServerBuffer = null;\n let target = null;\n for (let buf of app.state.buffers.values()){\n if (!firstServerBuffer && buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) firstServerBuffer = buf;\n if (buf.unread === (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE) continue;\n if (!target || (0, $fca64bf918d5638f$export$9be0a2424da959ae).compare(buf.unread, target.unread) > 0) target = buf;\n }\n if (!target) target = firstServerBuffer;\n if (target) app.switchBuffer(target);\n }\n },\n {\n key: \"ArrowUp\",\n altKey: true,\n description: \"Jump to the previous buffer\",\n execute: (app)=>{\n let prev = $f6fdf5978ceb757f$var$getSiblingBuffer(app.state.buffers, app.state.activeBuffer, -1);\n if (prev) app.switchBuffer(prev);\n }\n },\n {\n key: \"ArrowDown\",\n altKey: true,\n description: \"Jump to the next buffer\",\n execute: (app)=>{\n let next = $f6fdf5978ceb757f$var$getSiblingBuffer(app.state.buffers, app.state.activeBuffer, 1);\n if (next) app.switchBuffer(next);\n }\n },\n {\n key: \"k\",\n ctrlKey: true,\n description: \"Switch to a buffer\",\n execute: (app)=>{\n app.openDialog(\"switch\");\n }\n }\n];\nfunction $f6fdf5978ceb757f$export$de27182ff8187d6c(app) {\n let byKey = {};\n $f6fdf5978ceb757f$export$63ce3c18bd0f1276.forEach((binding)=>{\n if (!byKey[binding.key]) byKey[binding.key] = [];\n byKey[binding.key].push(binding);\n });\n window.addEventListener(\"keydown\", (event)=>{\n let candidates = byKey[event.key];\n if (!candidates) return;\n candidates = candidates.filter((binding)=>{\n return !!binding.altKey == event.altKey && !!binding.ctrlKey == event.ctrlKey;\n });\n if (candidates.length != 1) return;\n event.preventDefault();\n candidates[0].execute(app);\n });\n}\n\n\n\n\nfunction $b5b0ab28313e6465$var$getActiveClient(app) {\n let buf = app.state.buffers.get(app.state.activeBuffer);\n if (!buf) throw new Error(\"Not connected to server\");\n return app.clients.get(buf.server);\n}\nfunction $b5b0ab28313e6465$var$getActiveTarget(app) {\n let activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n if (!activeBuffer) throw new Error(\"Not in a buffer\");\n return activeBuffer.name;\n}\nfunction $b5b0ab28313e6465$var$getActiveChannel(app) {\n let activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n if (!activeBuffer || activeBuffer.type !== (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL) throw new Error(\"Not in a channel\");\n return activeBuffer.name;\n}\nasync function $b5b0ab28313e6465$var$setUserHostMode(app, args, mode) {\n let nick = args[0];\n if (!nick) throw new Error(\"Missing nick\");\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n let client = $b5b0ab28313e6465$var$getActiveClient(app);\n let whois = await client.whois(nick);\n const info = whois[$bd3c59ab25aed5ca$export$9514b1191eaefcec].params;\n const user = info[2];\n const host = info[3];\n client.send({\n command: \"MODE\",\n params: [\n activeChannel,\n mode,\n `*!${user}@${host}`\n ]\n });\n}\nfunction $b5b0ab28313e6465$var$markServerBufferUnread(app) {\n let activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n if (!activeBuffer || activeBuffer.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) return;\n app.setBufferState({\n server: activeBuffer.server\n }, (buf)=>{\n return {\n unread: (0, $fca64bf918d5638f$export$9be0a2424da959ae).union(buf.unread, (0, $fca64bf918d5638f$export$9be0a2424da959ae).MESSAGE)\n };\n });\n}\nconst $b5b0ab28313e6465$var$join = {\n usage: \" [password]\",\n description: \"Join a channel\",\n execute: (app, args)=>{\n let channel = args[0];\n if (!channel) throw new Error(\"Missing channel name\");\n if (args.length > 1) app.open(channel, null, args[1]);\n else app.open(channel);\n }\n};\nconst $b5b0ab28313e6465$var$kick = {\n usage: \" [comment]\",\n description: \"Remove a user from the channel\",\n execute: (app, args)=>{\n let nick = args[0];\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n let params = [\n activeChannel,\n nick\n ];\n if (args.length > 1) params.push(args.slice(1).join(\" \"));\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"KICK\",\n params: params\n });\n }\n};\nconst $b5b0ab28313e6465$var$ban = {\n usage: \"[nick]\",\n description: \"Ban a user from the channel, or display the current ban list\",\n execute: (app, args)=>{\n if (args.length == 0) {\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"MODE\",\n params: [\n activeChannel,\n \"+b\"\n ]\n });\n } else return $b5b0ab28313e6465$var$setUserHostMode(app, args, \"+b\");\n }\n};\nfunction $b5b0ab28313e6465$var$givemode(app, args, mode) {\n // TODO: Handle several users at once\n let nick = args[0];\n if (!nick) throw new Error(\"Missing nick\");\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"MODE\",\n params: [\n activeChannel,\n mode,\n nick\n ]\n });\n}\nvar $b5b0ab28313e6465$export$2e2bcd8739ae039 = {\n \"away\": {\n usage: \"[message]\",\n description: \"Set away message\",\n execute: (app, args)=>{\n const params = [];\n if (args.length) params.push(args.join(\" \"));\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"AWAY\",\n params: params\n });\n }\n },\n \"ban\": $b5b0ab28313e6465$var$ban,\n \"buffer\": {\n usage: \"\",\n description: \"Switch to a buffer\",\n execute: (app, args)=>{\n let name = args[0];\n for (let buf of app.state.buffers.values())if (buf.name === name) {\n app.switchBuffer(buf);\n return;\n }\n throw new Error(\"Unknown buffer\");\n }\n },\n \"close\": {\n description: \"Close the current buffer\",\n execute: (app, args)=>{\n let activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n if (!activeBuffer || activeBuffer.type == (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) throw new Error(\"Not in a user or channel buffer\");\n app.close(activeBuffer.id);\n }\n },\n \"deop\": {\n usage: \"\",\n description: \"Remove operator status for a user on this channel\",\n execute: (app, args)=>$b5b0ab28313e6465$var$givemode(app, args, \"-o\")\n },\n \"devoice\": {\n usage: \"\",\n description: \"Remove voiced status for a user on this channel\",\n execute: (app, args)=>$b5b0ab28313e6465$var$givemode(app, args, \"-v\")\n },\n \"disconnect\": {\n description: \"Disconnect from the server\",\n execute: (app, args)=>{\n app.disconnect();\n }\n },\n \"help\": {\n description: \"Show help menu\",\n execute: (app, args)=>{\n app.openHelp();\n }\n },\n \"invite\": {\n usage: \"\",\n description: \"Invite a user to the channel\",\n execute: (app, args)=>{\n let nick = args[0];\n if (!nick) throw new Error(\"Missing nick\");\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"INVITE\",\n params: [\n nick,\n activeChannel\n ]\n });\n }\n },\n \"j\": $b5b0ab28313e6465$var$join,\n \"join\": $b5b0ab28313e6465$var$join,\n \"kick\": $b5b0ab28313e6465$var$kick,\n \"kickban\": {\n usage: \"\",\n description: \"Ban a user and removes them from the channel\",\n execute: (app, args)=>{\n $b5b0ab28313e6465$var$kick.execute(app, args);\n $b5b0ab28313e6465$var$ban.execute(app, args);\n }\n },\n \"lusers\": {\n usage: \"[ []]\",\n description: \"Request user statistics about the network\",\n execute: (app, args)=>{\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"LUSERS\",\n params: args\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n \"me\": {\n usage: \"\",\n description: \"Send an action message to the current buffer\",\n execute: (app, args)=>{\n let action = args.join(\" \");\n let target = $b5b0ab28313e6465$var$getActiveTarget(app);\n let text = `\\x01ACTION ${action}\\x01`;\n app.privmsg(target, text);\n }\n },\n \"mode\": {\n usage: \"[target] [modes] [mode args...]\",\n description: \"Query or change a channel or user mode\",\n execute: (app, args)=>{\n let target = args[0];\n if (!target || target.startsWith(\"+\") || target.startsWith(\"-\")) {\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n args = [\n activeChannel,\n ...args\n ];\n }\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"MODE\",\n params: args\n });\n }\n },\n \"motd\": {\n usage: \"[server]\",\n description: \"Get the Message Of The Day\",\n execute: (app, args)=>{\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"MOTD\",\n params: args\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n \"msg\": {\n usage: \" \",\n description: \"Send a message to a nickname or a channel\",\n execute: (app, args)=>{\n let target = args[0];\n let text = args.slice(1).join(\" \");\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"PRIVMSG\",\n params: [\n target,\n text\n ]\n });\n }\n },\n \"nick\": {\n usage: \"\",\n description: \"Change current nickname\",\n execute: (app, args)=>{\n let newNick = args[0];\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"NICK\",\n params: [\n newNick\n ]\n });\n }\n },\n \"notice\": {\n usage: \" \",\n description: \"Send a notice to a nickname or a channel\",\n execute: (app, args)=>{\n let target = args[0];\n let text = args.slice(1).join(\" \");\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"NOTICE\",\n params: [\n target,\n text\n ]\n });\n }\n },\n \"op\": {\n usage: \"\",\n description: \"Give a user operator status on this channel\",\n execute: (app, args)=>$b5b0ab28313e6465$var$givemode(app, args, \"+o\")\n },\n \"part\": {\n usage: \"[reason]\",\n description: \"Leave a channel\",\n execute: (app, args)=>{\n let reason = args.join(\" \");\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n let params = [\n activeChannel\n ];\n if (reason) params.push(reason);\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"PART\",\n params: params\n });\n }\n },\n \"query\": {\n usage: \" [message]\",\n description: \"Open a buffer to send messages to a nickname\",\n execute: (app, args)=>{\n let nick = args[0];\n if (!nick) throw new Error(\"Missing nickname\");\n app.open(nick);\n if (args.length > 1) {\n let text = args.slice(1).join(\" \");\n app.privmsg(nick, text);\n }\n }\n },\n \"quiet\": {\n usage: \"[nick]\",\n description: \"Quiet a user in the channel, or display the current quiet list\",\n execute: (app, args)=>{\n if (args.length == 0) $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"MODE\",\n params: [\n $b5b0ab28313e6465$var$getActiveChannel(app),\n \"+q\"\n ]\n });\n else return $b5b0ab28313e6465$var$setUserHostMode(app, args, \"+q\");\n }\n },\n \"quit\": {\n description: \"Quit\",\n execute: (app, args)=>{\n app.close({\n name: (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n }\n },\n \"quote\": {\n usage: \"\",\n description: \"Send a raw IRC command to the server\",\n execute: (app, args)=>{\n let msg;\n try {\n msg = $bd3c59ab25aed5ca$export$f2f615077a189f21(args.join(\" \"));\n } catch (err) {\n throw new Error(\"Failed to parse IRC command: \" + err.message);\n }\n $b5b0ab28313e6465$var$getActiveClient(app).send(msg);\n }\n },\n \"reconnect\": {\n description: \"Reconnect to the server\",\n execute: (app, args)=>{\n app.reconnect();\n }\n },\n \"setname\": {\n usage: \"\",\n description: \"Change current realname\",\n execute: (app, args)=>{\n let newRealname = args.join(\" \");\n let client = $b5b0ab28313e6465$var$getActiveClient(app);\n if (!client.caps.enabled.has(\"setname\")) throw new Error(\"Server doesn't support changing the realname\");\n client.send({\n command: \"SETNAME\",\n params: [\n newRealname\n ]\n });\n // TODO: save to local storage\n }\n },\n \"stats\": {\n usage: \" [server]\",\n description: \"Request server statistics\",\n execute: (app, args)=>{\n let query = args[0];\n if (!query) throw new Error(\"Missing query\");\n let params = [\n query\n ];\n if (args.length > 1) params.push(args.slice(1).join(\" \"));\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"STATS\",\n params: params\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n \"topic\": {\n usage: \"\",\n description: \"Change the topic of the current channel\",\n execute: (app, args)=>{\n let activeChannel = $b5b0ab28313e6465$var$getActiveChannel(app);\n let params = [\n activeChannel\n ];\n if (args.length > 0) params.push(args.join(\" \"));\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"TOPIC\",\n params: params\n });\n }\n },\n \"unban\": {\n usage: \"\",\n description: \"Remove a user from the ban list\",\n execute: (app, args)=>{\n return $b5b0ab28313e6465$var$setUserHostMode(app, args, \"-b\");\n }\n },\n \"unquiet\": {\n usage: \"\",\n description: \"Remove a user from the quiet list\",\n execute: (app, args)=>{\n return $b5b0ab28313e6465$var$setUserHostMode(app, args, \"-q\");\n }\n },\n \"voice\": {\n usage: \"\",\n description: \"Give a user voiced status on this channel\",\n execute: (app, args)=>$b5b0ab28313e6465$var$givemode(app, args, \"+v\")\n },\n \"who\": {\n usage: \"\",\n description: \"Retrieve a list of users\",\n execute: (app, args)=>{\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"WHO\",\n params: args\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n \"whois\": {\n usage: \"\",\n description: \"Retrieve information about a user\",\n execute: (app, args)=>{\n let nick = args[0];\n if (!nick) throw new Error(\"Missing nick\");\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"WHOIS\",\n params: [\n nick\n ]\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n \"whowas\": {\n usage: \" [count]\",\n description: \"Retrieve information about an offline user\",\n execute: (app, args)=>{\n if (args.length < 1) throw new Error(\"Missing nick\");\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"WHOWAS\",\n params: args\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n },\n \"list\": {\n usage: \"[filter]\",\n description: \"Retrieve a list of channels from a network\",\n execute: (app, args)=>{\n $b5b0ab28313e6465$var$getActiveClient(app).send({\n command: \"LIST\",\n params: args\n });\n $b5b0ab28313e6465$var$markServerBufferUnread(app);\n }\n }\n};\n\n\nfunction $af9ce1e202e3524a$var$KeyBindingsHelp() {\n let l = (0, $f6fdf5978ceb757f$export$63ce3c18bd0f1276).map((binding)=>{\n let keys = [];\n if (binding.ctrlKey) keys.push(\"Ctrl\");\n if (binding.altKey) keys.push(\"Alt\");\n keys.push(binding.key);\n keys = keys.map((name, i)=>{\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t${i > 0 ? \"+\" : null}\n\t\t\t\t${name}\n\t\t\t`;\n });\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    ${keys}
    \n\t\t\t
    ${binding.description}
    \n\t\t`;\n });\n l.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t
    Tab
    \n\t\t
    Automatically complete nickname or channel
    \n\t`);\n if (!window.matchMedia(\"(pointer: none)\").matches) l.push((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    Middle mouse click
    \n\t\t\t
    Close buffer
    \n\t\t`);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
    ${l}
    `;\n}\nfunction $af9ce1e202e3524a$var$CommandsHelp() {\n let l = Object.keys((0, $b5b0ab28313e6465$export$2e2bcd8739ae039)).map((name)=>{\n let cmd = (0, $b5b0ab28313e6465$export$2e2bcd8739ae039)[name];\n let usage = [\n (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`/${name}`\n ];\n if (cmd.usage) usage.push(\" \" + cmd.usage);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    ${usage}
    \n\t\t\t
    ${cmd.description}
    \n\t\t`;\n });\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
    ${l}
    `;\n}\nfunction $af9ce1e202e3524a$export$2e2bcd8739ae039() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t

    Key bindings

    \n\t\t<${$af9ce1e202e3524a$var$KeyBindingsHelp}/>\n\n\t\t

    Commands

    \n\t\t<${$af9ce1e202e3524a$var$CommandsHelp}/>\n\t`;\n}\n\n\n\nconst $03b5941ba753e1f6$var$defaultParams = {\n name: \"\",\n host: \"\",\n port: 6697,\n nickname: \"\",\n username: \"\",\n realname: \"\",\n pass: \"\"\n};\nclass $03b5941ba753e1f6$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n prevParams = null;\n state = {\n ...$03b5941ba753e1f6$var$defaultParams,\n autojoin: true\n };\n constructor(props){\n super(props);\n this.prevParams = {\n ...$03b5941ba753e1f6$var$defaultParams\n };\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n if (props.params) Object.keys($03b5941ba753e1f6$var$defaultParams).forEach((k)=>{\n if (props.params[k] !== undefined) {\n this.state[k] = props.params[k];\n this.prevParams[k] = props.params[k];\n }\n });\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type == \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n let params = {};\n Object.keys($03b5941ba753e1f6$var$defaultParams).forEach((k)=>{\n if (!this.props.isNew && this.prevParams[k] == this.state[k]) return;\n if (this.props.isNew && $03b5941ba753e1f6$var$defaultParams[k] == this.state[k]) return;\n params[k] = this.state[k];\n });\n let autojoin = this.state.autojoin ? this.props.autojoin : null;\n this.props.onSubmit(params, autojoin);\n }\n render() {\n let removeNetwork = null;\n if (!this.props.isNew) removeNetwork = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t`;\n let autojoin = null;\n if (this.props.autojoin) autojoin = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t

    \n\t\t\t`;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t${autojoin}\n\n\t\t\t\t
    \n\t\t\t\t\tAdvanced options\n\n\t\t\t\t\t
    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t${removeNetwork}\n\t\t\t\t${\" \"}\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\nclass $368ce7ef0e8c1c36$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n username: \"\",\n password: \"\"\n };\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n if (props.username) this.state.username = props.username;\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type == \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onSubmit(this.state.username, this.state.password);\n }\n render() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\nclass $210f1d422ab09f4c$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n email: \"\",\n password: \"\"\n };\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type == \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onSubmit(this.state.email, this.state.password);\n }\n render() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\n\nclass $5855ce19a38be3e6$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n code: \"\"\n };\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type == \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onSubmit(this.state.code);\n }\n render() {\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t

    Your account ${this.props.account} has been created, but a verification code is required to complete the registration.

    \n\n\t\t\t\t

    ${(0, $37d24d778c2f247c$export$2e2bcd8739ae039)(this.props.message)}

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\nclass $9fbbfef00d6a25bf$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {};\n constructor(props){\n super(props);\n this.state.secondsInTimestamps = props.settings.secondsInTimestamps;\n this.state.bufferEvents = props.settings.bufferEvents;\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n handleInput(event) {\n let target = event.target;\n let value = target.type == \"checkbox\" ? target.checked : target.value;\n this.setState({\n [target.name]: value\n }, ()=>{\n this.props.onChange(this.state);\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onClose();\n }\n registerProtocol() {\n let url = window.location.origin + window.location.pathname + \"?open=%s\";\n try {\n navigator.registerProtocolHandler(\"irc\", url);\n navigator.registerProtocolHandler(\"ircs\", url);\n } catch (err) {\n console.error(\"Failed to register protocol handler: \", err);\n }\n }\n render() {\n let protocolHandler = null;\n if (this.props.showProtocolHandler) protocolHandler = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\tSet gamja as your default IRC client for this browser.\n\t\t\t\t\t\tIRC links will be automatically opened here.\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t

    \n\t\t\t`;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t${protocolHandler}\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n }\n}\n\n\n\n\n\nclass $9b625992f92feff7$var$SwitcherItem extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n constructor(props){\n super(props);\n this.handleClick = this.handleClick.bind(this);\n }\n handleClick(event) {\n event.preventDefault();\n this.props.onClick();\n }\n render() {\n let class_ = this.props.selected ? \"selected\" : \"\";\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${(0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(this.props.server, this.props.bouncerNetwork)}\n\t\t\t\t\t\n\t\t\t\t\t${this.props.buffer.name}\n\t\t\t\t\n\t\t\t
  • \n\t\t`;\n }\n}\nfunction $9b625992f92feff7$var$matchString(s, query) {\n return s.toLowerCase().includes(query) ? 1 : 0;\n}\nfunction $9b625992f92feff7$var$matchBuffer(buf, server, query) {\n let score = 2 * $9b625992f92feff7$var$matchString(buf.name, query);\n switch(buf.type){\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL:\n score += $9b625992f92feff7$var$matchString(buf.topic || \"\", query);\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK:\n let user = server.users.get(buf.name);\n if (user && user.realname && $bd3c59ab25aed5ca$export$64ec8def5466157c(user.realname, buf.name)) score += $9b625992f92feff7$var$matchString(user.realname, query);\n break;\n }\n return score;\n}\nclass $9b625992f92feff7$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n query: \"\",\n selected: 0\n };\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n }\n getSuggestions() {\n let query = this.state.query.toLowerCase();\n let l = [];\n let scores = new Map();\n for (let buf of this.props.buffers.values()){\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) continue;\n let score = 0;\n if (query !== \"\") {\n let server = this.props.servers.get(buf.server);\n score = $9b625992f92feff7$var$matchBuffer(buf, server, query);\n if (!score) continue;\n }\n scores.set(buf.id, score);\n l.push(buf);\n }\n l.sort((a, b)=>{\n return scores.get(b.id) - scores.get(a.id);\n });\n return l.slice(0, 20);\n }\n handleInput(event) {\n let target = event.target;\n this.setState({\n [target.name]: target.value\n });\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onSubmit(this.getSuggestions()[this.state.selected]);\n }\n handleKeyUp(event) {\n switch(event.key){\n case \"ArrowUp\":\n event.stopPropagation();\n this.move(-1);\n break;\n case \"ArrowDown\":\n event.stopPropagation();\n this.move(1);\n break;\n }\n }\n move(delta) {\n let numSuggestions = this.getSuggestions().length;\n this.setState((state)=>{\n return {\n selected: (state.selected + delta + numSuggestions) % numSuggestions\n };\n });\n }\n render() {\n let items = this.getSuggestions().map((buf, i)=>{\n let server = this.props.servers.get(buf.server);\n let bouncerNetwork = null;\n if (server.bouncerNetID) bouncerNetwork = this.props.bouncerNetworks.get(server.bouncerNetID);\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${$9b625992f92feff7$var$SwitcherItem}\n\t\t\t\t\tbuffer=${buf}\n\t\t\t\t\tserver=${server}\n\t\t\t\t\tbouncerNetwork=${bouncerNetwork}\n\t\t\t\t\tselected=${this.state.selected === i}\n\t\t\t\t\tonClick=${()=>this.props.onSubmit(buf)}\n\t\t\t\t/>\n\t\t\t`;\n });\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\n\t\t\t\t\n\t\t\t\t
      \n\t\t\t\t\t${items}\n\t\t\t\t
    \n\t\t\t\n\t\t`;\n }\n}\n\n\n\nfunction $142bbba13add3ea5$var$encodeContentDisposition(filename) {\n // Encode filename according to RFC 5987 if necessary. Note,\n // encodeURIComponent will percent-encode a superset of attr-char.\n let encodedFilename = encodeURIComponent(filename);\n if (encodedFilename === filename) return 'attachment; filename=\"' + filename + '\"';\n else return \"attachment; filename*=UTF-8''\" + encodedFilename;\n}\nclass $142bbba13add3ea5$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n text: \"\"\n };\n textInput = (0, $b2a774aae58c7b4e$export$7d1e3a5e95ceca43)();\n lastAutocomplete = null;\n constructor(props){\n super(props);\n this.handleInput = this.handleInput.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputPaste = this.handleInputPaste.bind(this);\n this.handleWindowKeyDown = this.handleWindowKeyDown.bind(this);\n this.handleWindowPaste = this.handleWindowPaste.bind(this);\n }\n handleInput(event) {\n this.setState({\n [event.target.name]: event.target.value\n });\n if (this.props.readOnly && event.target.name === \"text\" && !event.target.value) event.target.blur();\n }\n handleSubmit(event) {\n event.preventDefault();\n this.props.onSubmit(this.state.text);\n this.setState({\n text: \"\"\n });\n }\n handleInputKeyDown(event) {\n let input = event.target;\n if (!this.props.autocomplete || event.key !== \"Tab\") return;\n if (input.selectionStart !== input.selectionEnd) return;\n event.preventDefault();\n let carretPos = input.selectionStart;\n let text = this.state.text;\n let autocomplete;\n if (this.lastAutocomplete && this.lastAutocomplete.text === text && this.lastAutocomplete.carretPos === carretPos) autocomplete = this.lastAutocomplete;\n else {\n this.lastAutocomplete = null;\n let wordStart;\n for(wordStart = carretPos - 1; wordStart >= 0; wordStart--){\n if (text[wordStart] === \" \") break;\n }\n wordStart++;\n let wordEnd;\n for(wordEnd = carretPos; wordEnd < text.length; wordEnd++){\n if (text[wordEnd] === \" \") break;\n }\n let word = text.slice(wordStart, wordEnd);\n if (!word) return;\n let replacements = this.props.autocomplete(word);\n if (replacements.length === 0) return;\n autocomplete = {\n text: text,\n carretPos: input.selectionStart,\n prefix: text.slice(0, wordStart),\n suffix: text.slice(wordEnd),\n replacements: replacements,\n replIndex: -1\n };\n }\n let n = autocomplete.replacements.length;\n if (event.shiftKey) autocomplete.replIndex--;\n else autocomplete.replIndex++;\n autocomplete.replIndex = (autocomplete.replIndex + n) % n;\n let repl = autocomplete.replacements[autocomplete.replIndex];\n if (!autocomplete.prefix && !autocomplete.suffix) {\n if (repl.startsWith(\"/\")) repl += \" \";\n else repl += \": \";\n }\n autocomplete.text = autocomplete.prefix + repl + autocomplete.suffix;\n autocomplete.carretPos = autocomplete.prefix.length + repl.length;\n input.value = autocomplete.text;\n input.selectionStart = autocomplete.carretPos;\n input.selectionEnd = input.selectionStart;\n this.lastAutocomplete = autocomplete;\n this.setState({\n text: autocomplete.text\n });\n }\n async handleInputPaste(event) {\n let client = this.props.client;\n if (!event.clipboardData.files.length || !client || this.props.readOnly) return;\n let endpoint = client.isupport.filehost();\n if (!endpoint) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n // TODO: support more than one file\n let file = event.clipboardData.files.item(0);\n let auth;\n if (client.params.saslPlain) {\n let params = client.params.saslPlain;\n auth = \"Basic \" + btoa(params.username + \":\" + params.password);\n } else if (client.params.saslOauthBearer) auth = \"Bearer \" + client.params.saslOauthBearer.token;\n let headers = {\n \"Content-Length\": file.size,\n \"Content-Disposition\": $142bbba13add3ea5$var$encodeContentDisposition(file.name)\n };\n if (file.type) headers[\"Content-Type\"] = file.type;\n if (auth) headers[\"Authorization\"] = auth;\n // TODO: show a loading UI while uploading\n // TODO: show a cancel button\n let resp = await fetch(endpoint, {\n method: \"POST\",\n body: file,\n headers: headers,\n credentials: \"include\"\n });\n if (!resp.ok) throw new Error(`HTTP request failed (${resp.status})`);\n let loc = resp.headers.get(\"Location\");\n if (!loc) throw new Error(\"filehost response missing Location header field\");\n let uploadURL = new URL(loc, endpoint);\n this.setState((state)=>{\n if (state.text) return {\n text: state.text + \" \" + uploadURL.toString()\n };\n else return {\n text: uploadURL.toString()\n };\n });\n }\n handleWindowKeyDown(event) {\n // If an or \n\t\t\t\t\t\n\t\t\t\t\t${this.props.children}\n\t\t\t\t\n\t\t\t\n\t\t`;\n }\n}\n\n\n\n\n\n\n\n\nconst $5c2a91b7f6173cd8$var$baseConfig = {\n server: {}\n};\nconst $5c2a91b7f6173cd8$var$configPromise = fetch(\"./config.json\").then((resp)=>{\n if (resp.ok) return resp.json();\n if (resp.status !== 404) console.error(\"Failed to fetch config: HTTP error:\", resp.status, resp.statusText);\n return {};\n}).catch((err)=>{\n console.error(\"Failed to fetch config:\", err);\n return {};\n}).then((config)=>{\n return {\n ...$5c2a91b7f6173cd8$var$baseConfig,\n ...config\n };\n});\nconst $5c2a91b7f6173cd8$var$CHATHISTORY_MAX_SIZE = 4000;\nfunction $5c2a91b7f6173cd8$var$isProduction() {\n // NODE_ENV is set by the Parcel build system\n try {\n return true;\n } catch (err) {\n return false;\n }\n}\nfunction $5c2a91b7f6173cd8$var$parseQueryString() {\n let query = window.location.search.substring(1);\n let params = {};\n query.split(\"&\").forEach((s)=>{\n if (!s) return;\n let pair = s.split(\"=\");\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || \"\");\n });\n return params;\n}\nfunction $5c2a91b7f6173cd8$var$splitHostPort(str) {\n let host = str;\n let port = null;\n // Literal IPv6 addresses contain colons and are enclosed in square brackets\n let i = str.lastIndexOf(\":\");\n if (i > 0 && !str.endsWith(\"]\")) {\n host = str.slice(0, i);\n port = parseInt(str.slice(i + 1), 10);\n }\n if (host.startsWith(\"[\") && host.endsWith(\"]\")) host = host.slice(1, host.length - 1);\n return {\n host: host,\n port: port\n };\n}\nfunction $5c2a91b7f6173cd8$var$fillConnectParams(params) {\n let host = window.location.host || \"localhost:8080\";\n let proto = \"wss:\";\n if (window.location.protocol != \"https:\") proto = \"ws:\";\n let path = window.location.pathname || \"/\";\n if (!window.location.host) path = \"/\";\n params = {\n ...params\n };\n if (!params.url) params.url = proto + \"//\" + host + path + \"socket\";\n if (params.url.startsWith(\"/\")) params.url = proto + \"//\" + host + params.url;\n if (params.url.indexOf(\"://\") < 0) params.url = proto + \"//\" + params.url;\n if (!params.username) params.username = params.nick;\n if (!params.realname) params.realname = params.nick;\n return params;\n}\nfunction $5c2a91b7f6173cd8$var$showNotification(title, options) {\n if (!window.Notification || Notification.permission !== \"granted\") return null;\n // This can still fail due to:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=481856\n try {\n return new Notification(title, options);\n } catch (err) {\n console.error(\"Failed to show notification: \", err);\n return null;\n }\n}\nfunction $5c2a91b7f6173cd8$var$getReceipt(stored, type) {\n if (!stored || !stored.receipts) return null;\n return stored.receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ];\n}\nfunction $5c2a91b7f6173cd8$var$getLatestReceipt(bufferStore, server, type) {\n let buffers = bufferStore.list(server);\n let last = null;\n for (let buf of buffers){\n if (buf.name === \"*\") continue;\n let receipt = $5c2a91b7f6173cd8$var$getReceipt(buf, type);\n if ((0, $fca64bf918d5638f$export$4f7e80d679306a83)(last, receipt)) last = receipt;\n }\n return last;\n}\nlet $5c2a91b7f6173cd8$var$lastErrorID = 0;\nclass $5c2a91b7f6173cd8$export$2e2bcd8739ae039 extends (0, $b2a774aae58c7b4e$export$16fa2f45be04daa8) {\n state = {\n ...(0, $fca64bf918d5638f$export$7254cc27399e90bd).create(),\n connectParams: {\n url: null,\n pass: null,\n username: null,\n realname: null,\n nick: null,\n saslPlain: null,\n saslExternal: false,\n autoconnect: false,\n autojoin: [],\n ping: 0\n },\n connectForm: true,\n loading: true,\n dialog: null,\n dialogData: null,\n error: null,\n openPanels: {\n bufferList: false,\n memberList: false\n }\n };\n debug = !$5c2a91b7f6173cd8$var$isProduction();\n config = {\n ...$5c2a91b7f6173cd8$var$baseConfig\n };\n clients = new Map();\n endOfHistory = new Map();\n receipts = new Map();\n buffer = (0, $b2a774aae58c7b4e$export$7d1e3a5e95ceca43)();\n composer = (0, $b2a774aae58c7b4e$export$7d1e3a5e95ceca43)();\n switchToChannel = null;\n /**\n\t * Parsed irc:// URL to automatically open. The user will be prompted for\n\t * confirmation for security reasons.\n\t */ autoOpenURL = null;\n messageNotifications = new Set();\n baseTitle = null;\n lastFocusPingDate = null;\n constructor(props){\n super(props);\n this.handleConnectSubmit = this.handleConnectSubmit.bind(this);\n this.handleJoinSubmit = this.handleJoinSubmit.bind(this);\n this.handleBufferListClick = this.handleBufferListClick.bind(this);\n this.handleBufferListClose = this.handleBufferListClose.bind(this);\n this.toggleBufferList = this.toggleBufferList.bind(this);\n this.toggleMemberList = this.toggleMemberList.bind(this);\n this.handleComposerSubmit = this.handleComposerSubmit.bind(this);\n this.handleChannelClick = this.handleChannelClick.bind(this);\n this.handleNickClick = this.handleNickClick.bind(this);\n this.autocomplete = this.autocomplete.bind(this);\n this.handleBufferScrollTop = this.handleBufferScrollTop.bind(this);\n this.dismissDialog = this.dismissDialog.bind(this);\n this.handleAddNetworkClick = this.handleAddNetworkClick.bind(this);\n this.handleNetworkSubmit = this.handleNetworkSubmit.bind(this);\n this.handleNetworkRemove = this.handleNetworkRemove.bind(this);\n this.handleDismissError = this.handleDismissError.bind(this);\n this.handleAuthSubmit = this.handleAuthSubmit.bind(this);\n this.handleRegisterSubmit = this.handleRegisterSubmit.bind(this);\n this.handleVerifyClick = this.handleVerifyClick.bind(this);\n this.handleVerifySubmit = this.handleVerifySubmit.bind(this);\n this.handleOpenSettingsClick = this.handleOpenSettingsClick.bind(this);\n this.handleSettingsChange = this.handleSettingsChange.bind(this);\n this.handleSettingsDisconnect = this.handleSettingsDisconnect.bind(this);\n this.handleSwitchSubmit = this.handleSwitchSubmit.bind(this);\n this.handleWindowFocus = this.handleWindowFocus.bind(this);\n this.state.settings = {\n ...this.state.settings,\n ...$740325ae3fd2006f$export$a5a6e0b888b2c992.load()\n };\n this.bufferStore = new $740325ae3fd2006f$export$a143d493d941bafc();\n $5c2a91b7f6173cd8$var$configPromise.then((config)=>{\n this.handleConfig(config);\n return config;\n });\n }\n /**\n\t * Handle configuration data and populate the connection parameters.\n\t *\n\t * The priority order is:\n\t *\n\t * - URL params\n\t * - Saved parameters in local storage\n\t * - Configuration data (fetched from the config.json file)\n\t * - Default server URL constructed from the current URL location (this is\n\t * done in fillConnectParams)\n\t */ async handleConfig(config) {\n let connectParams = {\n ...this.state.connectParams\n };\n if (typeof config.server.url === \"string\") connectParams.url = config.server.url;\n if (Array.isArray(config.server.autojoin)) connectParams.autojoin = config.server.autojoin;\n else if (typeof config.server.autojoin === \"string\") connectParams.autojoin = [\n config.server.autojoin\n ];\n if (typeof config.server.nick === \"string\") connectParams.nick = config.server.nick;\n if (typeof config.server.autoconnect === \"boolean\") connectParams.autoconnect = config.server.autoconnect;\n if (config.server.auth === \"external\") connectParams.saslExternal = true;\n if (typeof config.server.ping === \"number\") connectParams.ping = config.server.ping;\n if (connectParams.autoconnect && config.server.auth === \"mandatory\") {\n console.error('Error in config.json: cannot set server.autoconnect = true and server.auth = \"mandatory\"');\n connectParams.autoconnect = false;\n }\n if (config.server.auth === \"oauth2\" && (!config.oauth2 || !config.oauth2.url || !config.oauth2.client_id)) {\n console.error('Error in config.json: server.auth = \"oauth2\" requires oauth2 settings');\n config.server.auth = null;\n }\n let autoconnect = $740325ae3fd2006f$export$3b637ec8b5dd5146.load();\n if (autoconnect) connectParams = {\n ...connectParams,\n ...autoconnect,\n autoconnect: true,\n autojoin: []\n };\n let autojoin = [];\n let queryParams = $5c2a91b7f6173cd8$var$parseQueryString();\n // Don't allow to silently override the server URL if there's one in\n // config.json, because this has security implications. But still allow\n // setting server to an empty string to reveal the server field in the\n // connect form.\n if (typeof queryParams.server === \"string\" && (!connectParams.url || !queryParams.server)) {\n connectParams.url = queryParams.server;\n // When using a custom server, some configuration options don't\n // make sense anymore.\n config.server.auth = null;\n }\n if (typeof queryParams.nick === \"string\") connectParams.nick = queryParams.nick;\n if (typeof queryParams.channels === \"string\") autojoin = queryParams.channels.split(\",\");\n if (typeof queryParams.open === \"string\") this.autoOpenURL = $bd3c59ab25aed5ca$export$4b3d9a5bae55976(queryParams.open);\n if (queryParams.debug === \"1\") this.debug = true;\n if (window.location.hash) autojoin = window.location.hash.split(\",\");\n this.config = config;\n if (!connectParams.nick && connectParams.autoconnect) connectParams.nick = \"user-*\";\n if (connectParams.nick && connectParams.nick.includes(\"*\")) {\n let placeholder = Math.random().toString(36).substr(2, 7);\n connectParams.nick = connectParams.nick.replace(\"*\", placeholder);\n }\n if (config.server.auth === \"oauth2\" && !connectParams.saslOauthBearer) {\n if (queryParams.error) {\n console.error(\"OAuth 2.0 authorization failed: \", queryParams.error);\n this.showError(\"Authentication failed: \" + (queryParams.error_description || queryParams.error));\n return;\n }\n if (!queryParams.code) {\n this.redirectOauth2Authorize();\n return;\n }\n // Strip code from query params, to prevent page refreshes from\n // trying to exchange the code again\n let url = new URL(window.location.toString());\n url.searchParams.delete(\"code\");\n url.searchParams.delete(\"state\");\n window.history.replaceState(null, \"\", url.toString());\n let saslOauthBearer;\n try {\n saslOauthBearer = await this.exchangeOauth2Code(queryParams.code);\n } catch (err) {\n this.showError(err);\n return;\n }\n connectParams.saslOauthBearer = saslOauthBearer;\n if (saslOauthBearer.username && !connectParams.nick) connectParams.nick = saslOauthBearer.username;\n }\n if (autojoin.length > 0) {\n if (connectParams.autoconnect) // Ask the user whether they want to join that new channel.\n // TODO: support multiple channels here\n this.autoOpenURL = {\n host: \"\",\n entity: autojoin[0]\n };\n else connectParams.autojoin = autojoin;\n }\n this.setState({\n loading: false,\n connectParams: connectParams\n });\n if (connectParams.autoconnect) {\n this.setState({\n connectForm: false\n });\n this.connect(connectParams);\n }\n }\n async redirectOauth2Authorize() {\n let serverMetadata;\n try {\n serverMetadata = await $572a887a57d3418e$export$9326d7767c1b7bbc(this.config.oauth2.url);\n } catch (err) {\n console.error(\"Failed to fetch OAuth 2.0 server metadata:\", err);\n this.showError(\"Failed to fetch OAuth 2.0 server metadata\");\n return;\n }\n $572a887a57d3418e$export$425e62132119a96f({\n serverMetadata: serverMetadata,\n clientId: this.config.oauth2.client_id,\n redirectUri: window.location.toString(),\n scope: this.config.oauth2.scope\n });\n }\n async exchangeOauth2Code(code) {\n let serverMetadata = await $572a887a57d3418e$export$9326d7767c1b7bbc(this.config.oauth2.url);\n let redirectUri = new URL(window.location.toString());\n redirectUri.searchParams.delete(\"code\");\n redirectUri.searchParams.delete(\"state\");\n let data = await $572a887a57d3418e$export$97e44d582df4b68f({\n serverMetadata: serverMetadata,\n redirectUri: redirectUri.toString(),\n code: code,\n clientId: this.config.oauth2.client_id,\n clientSecret: this.config.oauth2.client_secret\n });\n // TODO: handle expires_in/refresh_token\n let token = data.access_token;\n let username = null;\n if (serverMetadata.introspection_endpoint) try {\n let data = await $572a887a57d3418e$export$e03aeda7cfb66622({\n serverMetadata: serverMetadata,\n token: token,\n clientId: this.config.oauth2.client_id,\n clientSecret: this.config.oauth2.client_secret\n });\n username = data.username;\n } catch (err) {\n console.warn(\"Failed to introspect OAuth 2.0 token:\", err);\n }\n return {\n token: token,\n username: username\n };\n }\n showError(err) {\n console.error(\"App error: \", err);\n let text;\n if (err instanceof Error) {\n let l = [];\n while(err){\n l.push(err.message);\n err = err.cause;\n }\n text = l.join(\": \");\n } else text = String(err);\n this.setState({\n error: text\n });\n $5c2a91b7f6173cd8$var$lastErrorID++;\n return $5c2a91b7f6173cd8$var$lastErrorID;\n }\n dismissError(id) {\n if (id && id !== $5c2a91b7f6173cd8$var$lastErrorID) return;\n this.setState({\n error: null\n });\n }\n handleDismissError(event) {\n event.preventDefault();\n this.dismissError();\n }\n setServerState(id, updater, callback) {\n this.setState((state)=>{\n return (0, $fca64bf918d5638f$export$7254cc27399e90bd).updateServer(state, id, updater);\n }, callback);\n }\n setBufferState(id, updater, callback) {\n this.setState((state)=>{\n return (0, $fca64bf918d5638f$export$7254cc27399e90bd).updateBuffer(state, id, updater);\n }, callback);\n }\n syncBufferUnread(serverID, name) {\n let client = this.clients.get(serverID);\n let stored = this.bufferStore.get({\n name: name,\n server: client.params\n });\n if (client.caps.enabled.has(\"draft/chathistory\") && stored) this.setBufferState({\n server: serverID,\n name: name\n }, {\n unread: stored.unread\n }, ()=>{\n this.updateDocumentTitle();\n });\n this.bufferStore.put({\n name: name,\n server: client.params,\n closed: false\n });\n }\n createBuffer(serverID, name) {\n let client = this.clients.get(serverID);\n let id = null;\n let isNew = false;\n this.setState((state)=>{\n let updated;\n [id, updated] = (0, $fca64bf918d5638f$export$7254cc27399e90bd).createBuffer(state, name, serverID, client);\n isNew = !!updated;\n return updated;\n });\n if (isNew) this.syncBufferUnread(serverID, name);\n return id;\n }\n sendReadReceipt(client, storedBuffer) {\n if (!client.supportsReadMarker()) return;\n let readReceipt = storedBuffer.receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ];\n if (storedBuffer.name === \"*\" || !readReceipt) return;\n client.setReadMarker(storedBuffer.name, readReceipt.time);\n }\n switchBuffer(id) {\n let buf;\n this.setState((state)=>{\n buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(state, id);\n if (!buf) return;\n let client = this.clients.get(buf.server);\n let stored = this.bufferStore.get({\n name: buf.name,\n server: client.params\n });\n let prevReadReceipt = $5c2a91b7f6173cd8$var$getReceipt(stored, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ);\n let update = (0, $fca64bf918d5638f$export$7254cc27399e90bd).updateBuffer(state, buf.id, {\n prevReadReceipt: prevReadReceipt\n });\n return {\n activeBuffer: buf.id,\n ...update\n };\n }, ()=>{\n if (!buf) return;\n if (this.buffer.current) this.buffer.current.focus();\n let server = this.state.servers.get(buf.server);\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK && !server.users.has(buf.name)) this.whoUserBuffer(buf.name, buf.server);\n if (buf.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL && !buf.hasInitialWho) this.whoChannelBuffer(buf.name, buf.server);\n this.updateDocumentTitle();\n });\n // TODO: only mark as read if user scrolled at the bottom\n this.markBufferAsRead(id);\n }\n markBufferAsRead(id) {\n let buf;\n this.setState((state)=>{\n buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(state, id);\n if (!buf) return;\n return (0, $fca64bf918d5638f$export$7254cc27399e90bd).updateBuffer(state, buf.id, {\n unread: (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE\n });\n }, ()=>{\n if (!buf) return;\n let client = this.clients.get(buf.server);\n for (let notif of this.messageNotifications)if (client.cm(notif.data.bufferName) === client.cm(buf.name)) notif.close();\n if (buf.messages.length > 0) {\n let lastMsg = buf.messages[buf.messages.length - 1];\n let stored = {\n name: buf.name,\n server: client.params,\n unread: (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE,\n receipts: {\n [(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ]: (0, $fca64bf918d5638f$export$1274528beb7cd977)(lastMsg)\n }\n };\n if (this.bufferStore.put(stored)) this.sendReadReceipt(client, stored);\n }\n this.updateDocumentTitle();\n });\n }\n updateDocumentTitle() {\n let buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, this.state.activeBuffer);\n let server;\n if (buf) server = this.state.servers.get(buf.server);\n let bouncerNetwork;\n if (server.bouncerNetID) bouncerNetwork = this.state.bouncerNetworks.get(server.bouncerNetID);\n let numUnread = 0;\n for (let buffer of this.state.buffers.values())if ((0, $fca64bf918d5638f$export$9be0a2424da959ae).compare(buffer.unread, (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT) >= 0) numUnread++;\n let parts = [];\n if (buf && buf.type !== (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) parts.push(buf.name);\n if (bouncerNetwork) parts.push((0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(server, bouncerNetwork));\n parts.push(this.baseTitle);\n let title = \"\";\n if (numUnread > 0) title = `(${numUnread}) `;\n title += parts.join(\" \\xb7 \");\n document.title = title;\n }\n prepareChatMessage(serverID, msg) {\n // Treat server-wide broadcasts as highlights. They're sent by server\n // operators and can contain important information.\n if (msg.isHighlight === undefined) {\n let client = this.clients.get(serverID);\n msg.isHighlight = $bd3c59ab25aed5ca$export$fdd47ba7a4ecfeff(msg, client.nick, client.cm) || $bd3c59ab25aed5ca$export$8b29011f3cb5e124(msg);\n }\n if (!msg.tags) // Can happen for outgoing messages for instance\n msg.tags = {};\n if (!msg.tags.time) msg.tags.time = $bd3c59ab25aed5ca$export$3ae94a2503e890a1(new Date());\n }\n addChatMessage(serverID, bufName, msg) {\n this.prepareChatMessage(serverID, msg);\n let bufID = {\n server: serverID,\n name: bufName\n };\n this.setState((state)=>(0, $fca64bf918d5638f$export$7254cc27399e90bd).addMessage(state, msg, bufID));\n }\n handleChatMessage(serverID, bufName, msg) {\n let client = this.clients.get(serverID);\n this.prepareChatMessage(serverID, msg);\n let stored = this.bufferStore.get({\n name: bufName,\n server: client.params\n });\n let deliveryReceipt = $5c2a91b7f6173cd8$var$getReceipt(stored, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED);\n let readReceipt = $5c2a91b7f6173cd8$var$getReceipt(stored, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ);\n let isDelivered = (0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, deliveryReceipt);\n let isRead = (0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, readReceipt);\n if (client.isMyNick(msg.prefix.name)) isRead = true;\n let msgUnread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE;\n if ((msg.command == \"PRIVMSG\" || msg.command == \"NOTICE\") && !isRead) {\n let target = msg.params[0];\n let text = msg.params[1];\n let kind;\n if (msg.isHighlight) {\n msgUnread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT;\n kind = \"highlight\";\n } else if (client.isMyNick(target)) {\n msgUnread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT;\n kind = \"private message\";\n } else msgUnread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).MESSAGE;\n if (msgUnread == (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT && !isDelivered && !$bd3c59ab25aed5ca$export$60937d95e568734f(msg)) {\n let title = \"New \" + kind + \" from \" + msg.prefix.name;\n if (client.isChannel(bufName)) title += \" in \" + bufName;\n let notif = $5c2a91b7f6173cd8$var$showNotification(title, {\n body: (0, $803ef401580605c5$export$6a0f863afc2134d8)(text),\n requireInteraction: true,\n tag: \"msg,server=\" + serverID + \",from=\" + msg.prefix.name + \",to=\" + bufName,\n data: {\n bufferName: bufName,\n message: msg\n }\n });\n if (notif) {\n notif.addEventListener(\"click\", ()=>{\n // TODO: scroll to message\n this.switchBuffer({\n server: serverID,\n name: bufName\n });\n });\n notif.addEventListener(\"close\", ()=>{\n this.messageNotifications.delete(notif);\n });\n this.messageNotifications.add(notif);\n }\n }\n }\n if (msg.command === \"INVITE\" && client.isMyNick(msg.params[0])) {\n msgUnread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT;\n let channel = msg.params[1];\n let notif = new Notification(\"Invitation to \" + channel, {\n body: msg.prefix.name + \" has invited you to \" + channel,\n requireInteraction: true,\n tag: \"invite,server=\" + serverID + \",from=\" + msg.prefix.name + \",channel=\" + channel,\n actions: [\n {\n action: \"accept\",\n title: \"Accept\"\n }\n ]\n });\n if (notif) notif.addEventListener(\"click\", (event)=>{\n if (event.action === \"accept\") {\n let stored = {\n name: bufName,\n server: client.params,\n receipts: {\n [(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ]: (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg)\n }\n };\n if (this.bufferStore.put(stored)) this.sendReadReceipt(client, stored);\n this.open(channel, serverID);\n } else // TODO: scroll to message\n this.switchBuffer({\n server: serverID,\n name: bufName\n });\n });\n }\n // Open a new buffer if the message doesn't come from me or is a\n // self-message\n if ((!client.isMyNick(msg.prefix.name) || client.isMyNick(bufName)) && msg.command != \"PART\" && msg.comand != \"QUIT\" && msg.command != $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3 && msg.command != $bd3c59ab25aed5ca$export$69132af27147d725) this.createBuffer(serverID, bufName);\n let bufID = {\n server: serverID,\n name: bufName\n };\n this.setState((state)=>(0, $fca64bf918d5638f$export$7254cc27399e90bd).addMessage(state, msg, bufID));\n this.setBufferState(bufID, (buf)=>{\n // TODO: set unread if scrolled up\n let unread = buf.unread;\n let prevReadReceipt = buf.prevReadReceipt;\n let receipts = {\n [(0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED]: (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg)\n };\n if (this.state.activeBuffer !== buf.id || !document.hasFocus()) unread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).union(unread, msgUnread);\n else receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ] = (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg);\n // Don't show unread marker for my own messages\n if (client.isMyNick(msg.prefix.name) && !(0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, prevReadReceipt)) prevReadReceipt = (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg);\n let stored = {\n name: buf.name,\n server: client.params,\n unread: unread,\n receipts: receipts\n };\n if (this.bufferStore.put(stored)) this.sendReadReceipt(client, stored);\n return {\n unread: unread,\n prevReadReceipt: prevReadReceipt\n };\n }, ()=>{\n if (msgUnread === (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT) this.updateDocumentTitle();\n });\n }\n connect(params) {\n // Merge our previous connection params so that config options such as\n // the ping interval are applied\n params = {\n ...this.state.connectParams,\n ...params\n };\n let serverID = null;\n this.setState((state)=>{\n let update;\n [serverID, update] = (0, $fca64bf918d5638f$export$7254cc27399e90bd).createServer(state);\n return update;\n });\n this.setState({\n connectParams: params\n });\n let client = new (0, $6796cfbd59091fe3$export$2e2bcd8739ae039)({\n ...$5c2a91b7f6173cd8$var$fillConnectParams(params),\n eventPlayback: this.state.settings.bufferEvents !== (0, $fca64bf918d5638f$export$3ee12e3d13dfa897).HIDE\n });\n client.debug = this.debug;\n this.clients.set(serverID, client);\n this.setServerState(serverID, {\n status: client.status\n });\n let errorID = null;\n client.addEventListener(\"status\", ()=>{\n this.setServerState(serverID, {\n status: client.status\n });\n switch(client.status){\n case (0, $6796cfbd59091fe3$export$2e2bcd8739ae039).Status.DISCONNECTED:\n this.setServerState(serverID, {\n account: null\n });\n this.setState((state)=>{\n let buffers = new Map(state.buffers);\n state.buffers.forEach((buf)=>{\n if (buf.server !== serverID) return;\n buffers.set(buf.id, {\n ...buf,\n joined: false\n });\n });\n return {\n buffers: buffers\n };\n });\n break;\n case (0, $6796cfbd59091fe3$export$2e2bcd8739ae039).Status.REGISTERED:\n this.setState({\n connectForm: false\n });\n if (errorID) this.dismissError(errorID);\n break;\n }\n });\n client.addEventListener(\"message\", (event)=>{\n this.handleMessage(serverID, event.detail.message);\n });\n client.addEventListener(\"error\", (event)=>{\n errorID = this.showError(event.detail);\n });\n this.createBuffer(serverID, (0, $fca64bf918d5638f$export$50f2960994553271));\n if (!this.state.activeBuffer) this.switchBuffer({\n server: serverID,\n name: (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n if (params.autojoin.length > 0) this.switchToChannel = params.autojoin[0];\n }\n disconnect(serverID) {\n if (!serverID) serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n if (client) {\n this.clients.delete(serverID);\n client.disconnect();\n }\n }\n reconnect(serverID) {\n if (!serverID) serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n if (client) client.reconnect();\n }\n serverFromBouncerNetwork(bouncerNetworkID) {\n for (let [id, client] of this.clients){\n if (client.params.bouncerNetwork === bouncerNetworkID) return id;\n }\n return null;\n }\n routeMessage(serverID, msg) {\n let client = this.clients.get(serverID);\n let chatHistoryBatch = $bd3c59ab25aed5ca$export$f4751a564f6d84a3(msg, \"chathistory\");\n // Reply triggered by some command sent by us, not worth displaying to\n // the user\n if (msg.internal) return [];\n let target, channel, affectedBuffers;\n switch(msg.command){\n case \"MODE\":\n target = msg.params[0];\n if (client.isChannel(target)) return [\n target\n ];\n return [\n (0, $fca64bf918d5638f$export$50f2960994553271)\n ];\n case \"NOTICE\":\n case \"PRIVMSG\":\n target = msg.params[0];\n if (client.isMyNick(target)) {\n if (client.cm(msg.prefix.name) === client.cm(client.serverPrefix.name)) target = (0, $fca64bf918d5638f$export$50f2960994553271);\n else {\n let context = msg.tags[\"+draft/channel-context\"];\n if (context && client.isChannel(context) && (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, {\n server: serverID,\n name: context\n })) target = context;\n else target = msg.prefix.name;\n }\n }\n let allowedPrefixes = client.isupport.statusMsg();\n if (allowedPrefixes) {\n let parts = $bd3c59ab25aed5ca$export$4812b7165edd26af(target, allowedPrefixes);\n if (client.isChannel(parts.name)) target = parts.name;\n }\n // Don't open a new buffer if this is just a NOTICE or a garbage\n // CTCP message\n let openNewBuffer = true;\n if (msg.command !== \"PRIVMSG\") openNewBuffer = false;\n else {\n let ctcp = $bd3c59ab25aed5ca$export$60937d95e568734f(msg);\n if (ctcp && ctcp.command !== \"ACTION\") openNewBuffer = false;\n }\n if (!openNewBuffer && !(0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, {\n server: serverID,\n name: target\n })) target = (0, $fca64bf918d5638f$export$50f2960994553271);\n return [\n target\n ];\n case \"JOIN\":\n channel = msg.params[0];\n if (!client.isMyNick(msg.prefix.name)) return [\n channel\n ];\n return [];\n case \"PART\":\n channel = msg.params[0];\n return [\n channel\n ];\n case \"KICK\":\n channel = msg.params[0];\n return [\n channel\n ];\n case \"QUIT\":\n affectedBuffers = [];\n if (chatHistoryBatch) affectedBuffers.push(chatHistoryBatch.params[0]);\n else this.state.buffers.forEach((buf)=>{\n if (buf.server != serverID) return;\n if (!buf.members.has(msg.prefix.name)) return;\n affectedBuffers.push(buf.name);\n });\n return affectedBuffers;\n case \"NICK\":\n let newNick = msg.params[0];\n affectedBuffers = [];\n if (chatHistoryBatch) affectedBuffers.push(chatHistoryBatch.params[0]);\n else {\n this.state.buffers.forEach((buf)=>{\n if (buf.server != serverID) return;\n if (!buf.members.has(msg.prefix.name)) return;\n affectedBuffers.push(buf.name);\n });\n if (client.isMyNick(newNick)) affectedBuffers.push((0, $fca64bf918d5638f$export$50f2960994553271));\n }\n return affectedBuffers;\n case \"TOPIC\":\n channel = msg.params[0];\n return [\n channel\n ];\n case \"INVITE\":\n channel = msg.params[1];\n // TODO: find a more reliable way to do this\n let bufName = channel;\n if (!(0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, {\n server: serverID,\n name: channel\n })) bufName = (0, $fca64bf918d5638f$export$50f2960994553271);\n return [\n bufName\n ];\n case $bd3c59ab25aed5ca$export$8e826dfe9edc5be1:\n case $bd3c59ab25aed5ca$export$110395ee82c419bd:\n case $bd3c59ab25aed5ca$export$cf24d3ab5a850c9f:\n case $bd3c59ab25aed5ca$export$edbdd9cee2ab5be8:\n case $bd3c59ab25aed5ca$export$a1ba792f52c3a77c:\n case $bd3c59ab25aed5ca$export$385b5d59fd211cdd:\n case $bd3c59ab25aed5ca$export$15ba3f1b034be103:\n case $bd3c59ab25aed5ca$export$1766db7a19d745c:\n case $bd3c59ab25aed5ca$export$903bdc290bba373b:\n case $bd3c59ab25aed5ca$export$e4ff1ea9594cfaf7:\n channel = msg.params[1];\n return [\n channel\n ];\n case $bd3c59ab25aed5ca$export$6bc24f4e6578b579:\n channel = msg.params[2];\n return [\n channel\n ];\n case $bd3c59ab25aed5ca$export$b3c89fff1b2cdce3:\n case $bd3c59ab25aed5ca$export$69132af27147d725:\n let targets = msg.params[1].split(\",\");\n affectedBuffers = [];\n for (let target of targets){\n let prefix = $bd3c59ab25aed5ca$export$3059e96a5fe807c3(target);\n affectedBuffers.push(prefix.name);\n }\n return affectedBuffers;\n case $bd3c59ab25aed5ca$export$533b33f42abb0931:\n case $bd3c59ab25aed5ca$export$31b0bce566d09826:\n case $bd3c59ab25aed5ca$export$1d0c7ae9b6b17819:\n case $bd3c59ab25aed5ca$export$cad5f2640c65ad1e:\n case $bd3c59ab25aed5ca$export$7e8b5ab33a021d11:\n case $bd3c59ab25aed5ca$export$cfb24fa60294f9b1:\n case $bd3c59ab25aed5ca$export$a675057415015158:\n case $bd3c59ab25aed5ca$export$c233ee342453910:\n case $bd3c59ab25aed5ca$export$b1fa6c92095fdab1:\n case $bd3c59ab25aed5ca$export$18c4a4c5c97dce9b:\n case $bd3c59ab25aed5ca$export$698923df90b7ea6d:\n case $bd3c59ab25aed5ca$export$cba31abc2138b15e:\n case $bd3c59ab25aed5ca$export$7304bc4447b68935:\n case \"AWAY\":\n case \"SETNAME\":\n case \"CHGHOST\":\n case \"ACCOUNT\":\n case \"CAP\":\n case \"AUTHENTICATE\":\n case \"PING\":\n case \"PONG\":\n case \"BATCH\":\n case \"TAGMSG\":\n case \"CHATHISTORY\":\n case \"ACK\":\n case \"BOUNCER\":\n case \"MARKREAD\":\n // Ignore these\n return [];\n default:\n return [\n (0, $fca64bf918d5638f$export$50f2960994553271)\n ];\n }\n }\n handleMessage(serverID, msg) {\n let client = this.clients.get(serverID);\n if ($bd3c59ab25aed5ca$export$f4751a564f6d84a3(msg, \"chathistory\")) return; // Handled by the caller\n let destBuffers = this.routeMessage(serverID, msg);\n this.setState((state)=>(0, $fca64bf918d5638f$export$7254cc27399e90bd).handleMessage(state, msg, serverID, client));\n let target, channel;\n switch(msg.command){\n case $bd3c59ab25aed5ca$export$cac9ca3596de2b3a:\n this.fetchBacklog(serverID);\n break;\n case $bd3c59ab25aed5ca$export$cad5f2640c65ad1e:\n case $bd3c59ab25aed5ca$export$7e8b5ab33a021d11:\n // These messages are used to indicate the end of the ISUPPORT list\n // Restore opened channel and user buffers\n let join = [];\n for (let buf of this.bufferStore.list(client.params)){\n if (buf.name === \"*\" || buf.closed) continue;\n if (client.isChannel(buf.name)) {\n if (client.caps.enabled.has(\"soju.im/bouncer-networks\")) continue;\n join.push(buf.name);\n } else {\n this.createBuffer(serverID, buf.name);\n this.whoUserBuffer(buf.name, serverID);\n }\n }\n // Auto-join channels given at connect-time\n let server = this.state.servers.get(serverID);\n let bouncerNetID = server.bouncerNetID;\n let bouncerNetwork = null;\n if (bouncerNetID) bouncerNetwork = this.state.bouncerNetworks.get(bouncerNetID);\n if (!bouncerNetwork || bouncerNetwork.state === \"connected\") {\n join = join.concat(client.params.autojoin);\n client.params.autojoin = [];\n }\n if (join.length > 0) client.send({\n command: \"JOIN\",\n params: [\n join.join(\",\")\n ]\n });\n let serverHost = bouncerNetwork ? bouncerNetwork.host : \"\";\n if (this.autoOpenURL && serverHost === this.autoOpenURL.host) {\n this.openURL(this.autoOpenURL);\n this.autoOpenURL = null;\n }\n case \"JOIN\":\n channel = msg.params[0];\n if (client.isMyNick(msg.prefix.name)) this.syncBufferUnread(serverID, channel);\n if (channel == this.switchToChannel) {\n this.switchBuffer({\n server: serverID,\n name: channel\n });\n this.switchToChannel = null;\n }\n break;\n case \"BOUNCER\":\n if (msg.params[0] !== \"NETWORK\") break; // We're only interested in network updates\n if (client.isupport.bouncerNetID()) break;\n let id = msg.params[1];\n let attrs = null;\n if (msg.params[2] !== \"*\") attrs = $bd3c59ab25aed5ca$export$ede4b2e0172bbdb1(msg.params[2]);\n let isNew = false;\n this.setState((state)=>{\n if (!attrs) return (0, $fca64bf918d5638f$export$7254cc27399e90bd).deleteBouncerNetwork(state, id);\n else {\n isNew = !state.bouncerNetworks.has(id);\n return (0, $fca64bf918d5638f$export$7254cc27399e90bd).storeBouncerNetwork(state, id, attrs);\n }\n }, ()=>{\n if (!attrs) {\n let serverID = this.serverFromBouncerNetwork(id);\n if (serverID) this.close({\n server: serverID,\n name: (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n } else if (isNew) this.connect({\n ...client.params,\n bouncerNetwork: id\n });\n if (attrs && attrs.state === \"connected\") {\n let serverID = this.serverFromBouncerNetwork(id);\n let client = this.clients.get(serverID);\n if (client && client.status === (0, $6796cfbd59091fe3$export$2e2bcd8739ae039).Status.REGISTERED && client.params.autojoin && client.params.autojoin.length > 0) {\n client.send({\n command: \"JOIN\",\n params: [\n client.params.autojoin.join(\",\")\n ]\n });\n client.params.autojoin = [];\n }\n }\n });\n break;\n case \"BATCH\":\n if (!msg.params[0].startsWith(\"-\")) break;\n let name = msg.params[0].slice(1);\n let batch = client.batches.get(name);\n if (!batch || batch.type !== \"soju.im/bouncer-networks\") break;\n // We've received a BOUNCER NETWORK batch. If we have a URL to\n // auto-open and no existing network matches it, ask the user to\n // create a new network.\n if (this.autoOpenURL && this.autoOpenURL.host && !this.findBouncerNetIDByHost(this.autoOpenURL.host)) {\n this.openURL(this.autoOpenURL);\n this.autoOpenURL = null;\n }\n break;\n case \"MARKREAD\":\n target = msg.params[0];\n let bound = msg.params[1];\n if (bound === \"*\" || !bound.startsWith(\"timestamp=\")) break;\n let readReceipt = {\n time: bound.replace(\"timestamp=\", \"\")\n };\n let stored = this.bufferStore.get({\n name: target,\n server: client.params\n });\n if ((0, $fca64bf918d5638f$export$4f7e80d679306a83)(readReceipt, $5c2a91b7f6173cd8$var$getReceipt(stored, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ))) break;\n for (let notif of this.messageNotifications){\n if (client.cm(notif.data.bufferName) !== client.cm(target)) continue;\n if ((0, $fca64bf918d5638f$export$23261bae4c963bb3)(notif.data.message, readReceipt)) notif.close();\n }\n let unread;\n let closed = true;\n this.setBufferState({\n server: serverID,\n name: target\n }, (buf)=>{\n closed = false;\n // Re-compute unread status\n unread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).NONE;\n for(let i = buf.messages.length - 1; i >= 0; i--){\n let msg = buf.messages[i];\n if (msg.command !== \"PRIVMSG\" && msg.command !== \"NOTICE\") continue;\n if ((0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, readReceipt)) break;\n if (msg.isHighlight || client.isMyNick(buf.name)) {\n unread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).HIGHLIGHT;\n break;\n }\n unread = (0, $fca64bf918d5638f$export$9be0a2424da959ae).MESSAGE;\n }\n return {\n unread: unread\n };\n }, ()=>{\n this.bufferStore.put({\n name: target,\n server: client.params,\n unread: unread,\n closed: closed,\n receipts: {\n [(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ]: readReceipt\n }\n });\n this.updateDocumentTitle();\n });\n break;\n default:\n if ($bd3c59ab25aed5ca$export$e6127cc7fe7395c3(msg.command) && msg.command != $bd3c59ab25aed5ca$export$7e8b5ab33a021d11) {\n let description = msg.params[msg.params.length - 1];\n this.showError(description);\n }\n }\n destBuffers.forEach((bufName)=>{\n this.handleChatMessage(serverID, bufName, msg);\n });\n }\n async fetchBacklog(serverID) {\n let client = this.clients.get(serverID);\n if (!client.caps.enabled.has(\"draft/chathistory\")) return;\n if (client.caps.enabled.has(\"soju.im/bouncer-networks\") && !client.params.bouncerNetwork) return;\n let lastReceipt = $5c2a91b7f6173cd8$var$getLatestReceipt(this.bufferStore, client.params, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED);\n if (!lastReceipt) return;\n let now = $bd3c59ab25aed5ca$export$3ae94a2503e890a1(new Date());\n let targets = await client.fetchHistoryTargets(now, lastReceipt.time);\n targets.forEach(async (target)=>{\n let from = lastReceipt;\n let to = {\n time: now\n };\n // Maybe we've just received a READ update from the\n // server, avoid over-fetching history\n let stored = this.bufferStore.get({\n name: target.name,\n server: client.params\n });\n let readReceipt = $5c2a91b7f6173cd8$var$getReceipt(stored, (0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ);\n if ((0, $fca64bf918d5638f$export$4f7e80d679306a83)(from, readReceipt)) from = readReceipt;\n // If we already have messages stored for the target,\n // fetch all messages we've missed\n let buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, {\n server: serverID,\n name: target.name\n });\n if (buf && buf.messages.length > 0) {\n let lastMsg = buf.messages[buf.messages.length - 1];\n from = (0, $fca64bf918d5638f$export$1274528beb7cd977)(lastMsg);\n }\n // Query read marker if this is a user (ie, we haven't received\n // the read marker as part of a JOIN burst)\n if (client.supportsReadMarker() && client.isNick(target.name)) client.fetchReadMarker(target.name);\n let result;\n try {\n result = await client.fetchHistoryBetween(target.name, from, to, $5c2a91b7f6173cd8$var$CHATHISTORY_MAX_SIZE);\n } catch (err) {\n console.error(\"Failed to fetch backlog for '\" + target.name + \"': \", err);\n this.showError(\"Failed to fetch backlog for '\" + target.name + \"'\");\n return;\n }\n for (let msg of result.messages){\n let destBuffers = this.routeMessage(serverID, msg);\n for (let bufName of destBuffers)this.handleChatMessage(serverID, bufName, msg);\n }\n });\n }\n handleConnectSubmit(connectParams) {\n this.dismissError();\n if (connectParams.autoconnect) $740325ae3fd2006f$export$3b637ec8b5dd5146.put(connectParams);\n else $740325ae3fd2006f$export$3b637ec8b5dd5146.put(null);\n // Disconnect previous server, if any\n let activeBuffer = this.state.buffers.get(this.state.activeBuffer);\n if (activeBuffer) this.close(activeBuffer.server);\n this.connect(connectParams);\n }\n handleChannelClick(event) {\n let handled = this.openURL(event.target.href);\n if (handled) event.preventDefault();\n }\n findBouncerNetIDByHost(host) {\n for (let [id, bouncerNetwork] of this.state.bouncerNetworks){\n if (bouncerNetwork.host === host) return id;\n }\n return null;\n }\n openURL(url) {\n if (typeof url === \"string\") url = $bd3c59ab25aed5ca$export$4b3d9a5bae55976(url);\n if (!url) return false;\n let { host: host, port: port } = $5c2a91b7f6173cd8$var$splitHostPort(url.host);\n let serverID;\n if (!url.host) serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n else {\n let bouncerNetID = this.findBouncerNetIDByHost(host);\n if (!bouncerNetID) {\n // Open dialog to create network if bouncer\n let client = this.clients.values().next().value;\n if (!client || !client.caps.enabled.has(\"soju.im/bouncer-networks\")) return false;\n let params = {\n host: host\n };\n if (typeof port === \"number\") params.port = port;\n this.openDialog(\"network\", {\n params: params,\n autojoin: url.entity\n });\n return true;\n }\n for (let [id, server] of this.state.servers)if (server.bouncerNetID === bouncerNetID) {\n serverID = id;\n break;\n }\n }\n if (!serverID) return false;\n let buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, {\n server: serverID,\n name: url.entity || (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n if (buf) this.switchBuffer(buf.id);\n else this.openDialog(\"join\", {\n server: serverID,\n channel: url.entity\n });\n return true;\n }\n handleNickClick(nick) {\n this.open(nick);\n }\n whoUserBuffer(target, serverID) {\n let client = this.clients.get(serverID);\n client.who(target, {\n fields: [\n \"flags\",\n \"hostname\",\n \"nick\",\n \"realname\",\n \"username\",\n \"account\"\n ]\n });\n client.monitor(target);\n if (client.supportsReadMarker()) client.fetchReadMarker(target);\n }\n async whoChannelBuffer(target, serverID) {\n let client = this.clients.get(serverID);\n // Prevent multiple WHO commands for the same channel in parallel\n this.setBufferState({\n name: target,\n server: serverID\n }, {\n hasInitialWho: true\n });\n let hasInitialWho = false;\n try {\n await client.who(target, {\n fields: [\n \"flags\",\n \"hostname\",\n \"nick\",\n \"realname\",\n \"username\",\n \"account\"\n ]\n });\n hasInitialWho = true;\n } finally{\n this.setBufferState({\n name: target,\n server: serverID\n }, {\n hasInitialWho: hasInitialWho\n });\n }\n }\n open(target, serverID, password) {\n if (!serverID) serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n if (client.isServer(target)) this.switchBuffer({\n server: serverID\n });\n else if (client.isChannel(target)) {\n this.switchToChannel = target;\n client.join(target, password).catch((err)=>{\n this.showError(err);\n });\n } else {\n this.whoUserBuffer(target, serverID);\n this.createBuffer(serverID, target);\n this.switchBuffer({\n server: serverID,\n name: target\n });\n }\n }\n close(id) {\n let buf = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getBuffer(this.state, id);\n if (!buf) return;\n let client = this.clients.get(buf.server);\n switch(buf.type){\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER:\n this.setState((state)=>{\n let buffers = new Map(state.buffers);\n for (let [id, b] of state.buffers)if (b.server === buf.server) buffers.delete(id);\n let activeBuffer = state.activeBuffer;\n if (activeBuffer && state.buffers.get(activeBuffer).server === buf.server) {\n if (buffers.size > 0) activeBuffer = buffers.keys().next().value;\n else activeBuffer = null;\n }\n return {\n buffers: buffers,\n activeBuffer: activeBuffer\n };\n });\n let disconnectAll = client && !client.params.bouncerNetwork && client.caps.enabled.has(\"soju.im/bouncer-networks\");\n let isFirstServer = this.state.servers.keys().next().value === buf.server;\n this.disconnect(buf.server);\n this.setState((state)=>{\n let servers = new Map(state.servers);\n servers.delete(buf.server);\n let connectForm = state.connectForm;\n if (servers.size == 0) connectForm = true;\n return {\n servers: servers,\n connectForm: connectForm\n };\n });\n if (disconnectAll) {\n for (let serverID of this.clients.keys())this.close({\n server: serverID,\n name: (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n this.bufferStore.clear();\n } else this.bufferStore.clear(client.params);\n // TODO: only clear autoconnect if this server is stored there\n if (isFirstServer) $740325ae3fd2006f$export$3b637ec8b5dd5146.put(null);\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL:\n if (buf.joined) client.send({\n command: \"PART\",\n params: [\n buf.name\n ]\n });\n // fallthrough\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK:\n if (this.state.activeBuffer === buf.id) this.switchBuffer({\n name: (0, $fca64bf918d5638f$export$50f2960994553271)\n });\n this.setState((state)=>{\n let buffers = new Map(state.buffers);\n buffers.delete(buf.id);\n return {\n buffers: buffers\n };\n });\n client.unmonitor(buf.name);\n this.bufferStore.put({\n name: buf.name,\n server: client.params,\n closed: true\n });\n break;\n }\n }\n disconnectAll() {\n this.close(this.state.buffers.keys().next().value);\n }\n executeCommand(s) {\n let parts = s.split(\" \");\n let name = parts[0].toLowerCase().slice(1);\n let args = parts.slice(1);\n let cmd = (0, $b5b0ab28313e6465$export$2e2bcd8739ae039)[name];\n if (!cmd) {\n this.showError(`Unknown command \"${name}\" (run \"/help\" to get a command list)`);\n return;\n }\n try {\n cmd.execute(this, args);\n } catch (error) {\n console.error(`Failed to execute command \"${name}\":`, error);\n this.showError(error.message);\n }\n }\n privmsg(target, text) {\n if (target == (0, $fca64bf918d5638f$export$50f2960994553271)) {\n this.showError(\"Cannot send message in server buffer\");\n return;\n }\n let serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n let msg = {\n command: \"PRIVMSG\",\n params: [\n target,\n text\n ]\n };\n client.send(msg);\n if (!client.caps.enabled.has(\"echo-message\")) {\n msg.prefix = {\n name: client.nick\n };\n this.handleChatMessage(serverID, target, msg);\n }\n }\n handleComposerSubmit(text) {\n if (!text) return;\n if (text.startsWith(\"//\")) text = text.slice(1);\n else if (text.startsWith(\"/\")) {\n this.executeCommand(text);\n return;\n }\n let buf = this.state.buffers.get(this.state.activeBuffer);\n if (!buf) return;\n this.privmsg(buf.name, text);\n }\n handleBufferListClick(id) {\n this.switchBuffer(id);\n this.closeBufferList();\n }\n handleBufferListClose(id) {\n this.close(id);\n this.closeBufferList();\n }\n toggleBufferList() {\n this.setState((state)=>{\n let openPanels = {\n ...state.openPanels,\n bufferList: !state.openPanels.bufferList\n };\n return {\n openPanels: openPanels\n };\n });\n }\n toggleMemberList() {\n this.setState((state)=>{\n let openPanels = {\n ...state.openPanels,\n memberList: !state.openPanels.memberList\n };\n return {\n openPanels: openPanels\n };\n });\n }\n closeBufferList() {\n this.setState((state)=>{\n let openPanels = {\n ...state.openPanels,\n bufferList: false\n };\n return {\n openPanels: openPanels\n };\n });\n }\n closeMemberList() {\n this.setState((state)=>{\n let openPanels = {\n ...state.openPanels,\n memberList: false\n };\n return {\n openPanels: openPanels\n };\n });\n }\n handleJoinClick(buf) {\n switch(buf.type){\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER:\n this.openDialog(\"join\", {\n server: buf.server\n });\n break;\n case (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL:\n let client = this.clients.get(buf.server);\n client.send({\n command: \"JOIN\",\n params: [\n buf.name\n ]\n });\n break;\n }\n }\n handleJoinSubmit(data) {\n this.open(data.channel, this.state.dialogData.server);\n this.dismissDialog();\n }\n autocomplete(prefix) {\n function fromList(l, prefix) {\n prefix = prefix.toLowerCase();\n let repl = [];\n for (let item of l)if (item.toLowerCase().startsWith(prefix)) repl.push(item);\n return repl;\n }\n if (prefix.startsWith(\"/\")) {\n let repl = fromList(Object.keys((0, $b5b0ab28313e6465$export$2e2bcd8739ae039)), prefix.slice(1));\n return repl.map((cmd)=>\"/\" + cmd);\n }\n // TODO: consider using the CHANTYPES ISUPPORT token here\n if (prefix.startsWith(\"#\")) {\n let chanNames = [];\n for (const buf of this.state.buffers.values())if (buf.name.startsWith(\"#\")) chanNames.push(buf.name);\n return fromList(chanNames, prefix);\n }\n let buf = this.state.buffers.get(this.state.activeBuffer);\n if (!buf || !buf.members) return [];\n return fromList(buf.members.keys(), prefix);\n }\n openHelp() {\n this.openDialog(\"help\");\n }\n async handleBufferScrollTop() {\n let buf = this.state.buffers.get(this.state.activeBuffer);\n if (!buf || buf.type == (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) return;\n let client = this.clients.get(buf.server);\n if (!client || !client.caps.enabled.has(\"draft/chathistory\") || !client.caps.enabled.has(\"server-time\")) return;\n if (this.endOfHistory.get(buf.id)) return;\n let before;\n if (buf.messages.length > 0) before = buf.messages[0].tags[\"time\"];\n else before = $bd3c59ab25aed5ca$export$3ae94a2503e890a1(new Date());\n // Avoids sending multiple CHATHISTORY commands in parallel\n this.endOfHistory.set(buf.id, true);\n let limit = 100;\n if (client.caps.enabled.has(\"draft/event-playback\")) limit = 200;\n let result = await client.fetchHistoryBefore(buf.name, before, limit);\n this.endOfHistory.set(buf.id, !result.more);\n if (result.messages.length > 0) {\n let msg = result.messages[result.messages.length - 1];\n let receipts = {\n [(0, $fca64bf918d5638f$export$c49c54eaac29b59a).DELIVERED]: (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg)\n };\n if (this.state.activeBuffer === buf.id) receipts[(0, $fca64bf918d5638f$export$c49c54eaac29b59a).READ] = (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg);\n let stored = {\n name: buf.name,\n server: client.params,\n receipts: receipts\n };\n if (this.bufferStore.put(stored)) this.sendReadReceipt(client, stored);\n this.setBufferState(buf, ({ prevReadReceipt: prevReadReceipt })=>{\n if (!(0, $fca64bf918d5638f$export$23261bae4c963bb3)(msg, prevReadReceipt)) prevReadReceipt = (0, $fca64bf918d5638f$export$1274528beb7cd977)(msg);\n return {\n prevReadReceipt: prevReadReceipt\n };\n });\n }\n for (let msg of result.messages)this.addChatMessage(buf.server, buf.name, msg);\n }\n openDialog(name, data) {\n this.setState({\n dialog: name,\n dialogData: data\n });\n }\n dismissDialog() {\n this.setState({\n dialog: null,\n dialogData: null\n });\n }\n setDialogLoading(promise) {\n const setLoading = (loading)=>{\n this.setState((state)=>{\n return {\n dialogData: {\n ...state.dialogData,\n loading: loading\n }\n };\n });\n };\n setLoading(true);\n promise.finally(()=>setLoading(false));\n }\n handleAuthClick(serverID) {\n let client = this.clients.get(serverID);\n this.openDialog(\"auth\", {\n username: client.nick\n });\n }\n handleAuthSubmit(username, password) {\n let serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n let promise = client.authenticate(\"PLAIN\", {\n username: username,\n password: password\n }).then(()=>{\n this.dismissDialog();\n let firstClient = this.clients.values().next().value;\n if (client !== firstClient) return;\n let autoconnect = $740325ae3fd2006f$export$3b637ec8b5dd5146.load();\n if (!autoconnect) return;\n console.log(\"Saving SASL PLAIN credentials\");\n autoconnect = {\n ...autoconnect,\n saslPlain: {\n username: username,\n password: password\n }\n };\n $740325ae3fd2006f$export$3b637ec8b5dd5146.put(autoconnect);\n });\n this.setDialogLoading(promise);\n }\n handleRegisterClick(serverID) {\n let client = this.clients.get(serverID);\n let emailRequired = client.checkAccountRegistrationCap(\"email-required\");\n this.openDialog(\"register\", {\n emailRequired: emailRequired\n });\n }\n handleRegisterSubmit(email, password) {\n let serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n // TODO: show registration status (pending/error) in dialog\n let promise = client.registerAccount(email, password).then((data)=>{\n this.dismissDialog();\n if (data.verificationRequired) this.handleVerifyClick(data.account, data.message);\n let firstClient = this.clients.values().next().value;\n if (client !== firstClient) return;\n let autoconnect = $740325ae3fd2006f$export$3b637ec8b5dd5146.load();\n if (!autoconnect) return;\n console.log(\"Saving account registration credentials\");\n autoconnect = {\n ...autoconnect,\n saslPlain: {\n username: data.account,\n password: password\n }\n };\n $740325ae3fd2006f$export$3b637ec8b5dd5146.put(autoconnect);\n });\n this.setDialogLoading(promise);\n }\n handleVerifyClick(account, message) {\n this.openDialog(\"verify\", {\n account: account,\n message: message\n });\n }\n handleVerifySubmit(code) {\n let serverID = (0, $fca64bf918d5638f$export$7254cc27399e90bd).getActiveServerID(this.state);\n let client = this.clients.get(serverID);\n // TODO: display verification status (pending/error) in dialog\n let promise = client.verifyAccount(this.state.dialogData.account, code).then(()=>{\n this.dismissDialog();\n });\n this.setDialogLoading(promise);\n }\n handleAddNetworkClick() {\n this.openDialog(\"network\");\n }\n handleManageNetworkClick(serverID) {\n let server = this.state.servers.get(serverID);\n let bouncerNetID = server.bouncerNetID;\n let bouncerNetwork = this.state.bouncerNetworks.get(bouncerNetID);\n this.openDialog(\"network\", {\n id: bouncerNetID,\n params: bouncerNetwork\n });\n }\n async handleNetworkSubmit(attrs, autojoin) {\n let client = this.clients.values().next().value;\n this.dismissDialog();\n if (this.state.dialogData && this.state.dialogData.id) {\n if (Object.keys(attrs).length == 0) return;\n client.send({\n command: \"BOUNCER\",\n params: [\n \"CHANGENETWORK\",\n this.state.dialogData.id,\n $bd3c59ab25aed5ca$export$c27de7dba30c634a(attrs)\n ]\n });\n } else {\n attrs = {\n ...attrs,\n tls: \"1\"\n };\n let id = await client.createBouncerNetwork(attrs);\n if (!autojoin) return;\n // By this point, bouncer-networks-notify should've advertised\n // the new network\n let serverID = this.serverFromBouncerNetwork(id);\n let newClient = this.clients.get(serverID);\n newClient.params.autojoin = [\n autojoin\n ];\n this.switchToChannel = autojoin;\n }\n }\n handleNetworkRemove() {\n let client = this.clients.values().next().value;\n client.send({\n command: \"BOUNCER\",\n params: [\n \"DELNETWORK\",\n this.state.dialogData.id\n ]\n });\n this.dismissDialog();\n }\n handleOpenSettingsClick() {\n let showProtocolHandler = false;\n for (let [id, client] of this.clients)if (client.caps.enabled.has(\"soju.im/bouncer-networks\")) {\n showProtocolHandler = true;\n break;\n }\n this.openDialog(\"settings\", {\n showProtocolHandler: showProtocolHandler\n });\n }\n handleSettingsChange(settings) {\n $740325ae3fd2006f$export$a5a6e0b888b2c992.put(settings);\n this.setState({\n settings: settings\n });\n }\n handleSettingsDisconnect() {\n this.dismissDialog();\n this.disconnectAll();\n }\n handleSwitchSubmit(buf) {\n this.dismissDialog();\n if (buf) this.switchBuffer(buf);\n }\n handleWindowFocus() {\n if (this.state.activeBuffer) // TODO: only do this if scrolled at the bottom\n this.markBufferAsRead(this.state.activeBuffer);\n // When the user focuses gamja, send a PING to make sure we detect any\n // network errors ASAP\n let now = new Date();\n if (this.lastFocusPingDate && now.getTime() - this.lastFocusPingDate.getTime() < 15000) return;\n this.lastFocusPingDate = now;\n for (let client of this.clients.values())client.send({\n command: \"PING\",\n params: [\n \"gamja\"\n ]\n });\n }\n componentDidMount() {\n this.baseTitle = document.title;\n (0, $f6fdf5978ceb757f$export$de27182ff8187d6c)(this);\n window.addEventListener(\"focus\", this.handleWindowFocus);\n }\n componentWillUnmount() {\n document.title = this.baseTitle;\n window.removeEventListener(\"focus\", this.handleWindowFocus);\n }\n render() {\n if (this.state.loading) {\n let error = null;\n if (this.state.error) error = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`

    ${this.state.error}

    `;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`
    ${error}
    `;\n }\n let activeBuffer = null, activeServer = null, activeBouncerNetwork = null;\n if (this.state.buffers.get(this.state.activeBuffer)) {\n activeBuffer = this.state.buffers.get(this.state.activeBuffer);\n activeServer = this.state.servers.get(activeBuffer.server);\n let bouncerNetID = activeServer.bouncerNetID;\n if (bouncerNetID) activeBouncerNetwork = this.state.bouncerNetworks.get(bouncerNetID);\n }\n let activeClient = null;\n if (activeBuffer) activeClient = this.clients.get(activeBuffer.server);\n if (this.state.connectForm) {\n let status = activeServer ? activeServer.status : (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).DISCONNECTED;\n let connecting = status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).CONNECTING || status === (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERING;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t
    \n\t\t\t\t\t<${0, $c6f536f0bcf4fccd$export$2e2bcd8739ae039}\n\t\t\t\t\t\terror=${this.state.error}\n\t\t\t\t\t\tparams=${this.state.connectParams}\n\t\t\t\t\t\tauth=${this.config.server.auth}\n\t\t\t\t\t\tconnecting=${connecting}\n\t\t\t\t\t\tonSubmit=${this.handleConnectSubmit}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t`;\n }\n let bufferHeader = null;\n if (activeBuffer) {\n let activeUser = null;\n if (activeBuffer.type == (0, $fca64bf918d5638f$export$a9b603917c4d9863).NICK) activeUser = activeServer.users.get(activeBuffer.name);\n bufferHeader = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t
    \n\t\t\t\t\t<${0, $94cb31469f63b35c$export$2e2bcd8739ae039}\n\t\t\t\t\t\tbuffer=${activeBuffer}\n\t\t\t\t\t\tserver=${activeServer}\n\t\t\t\t\t\tuser=${activeUser}\n\t\t\t\t\t\tbouncerNetwork=${activeBouncerNetwork}\n\t\t\t\t\t\tonChannelClick=${this.handleChannelClick}\n\t\t\t\t\t\tonClose=${()=>this.close(activeBuffer)}\n\t\t\t\t\t\tonJoin=${()=>this.handleJoinClick(activeBuffer)}\n\t\t\t\t\t\tonReconnect=${()=>this.reconnect()}\n\t\t\t\t\t\tonAddNetwork=${this.handleAddNetworkClick}\n\t\t\t\t\t\tonManageNetwork=${()=>this.handleManageNetworkClick(activeBuffer.server)}\n\t\t\t\t\t\tonOpenSettings=${this.handleOpenSettingsClick}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t`;\n }\n let memberList = null;\n if (activeBuffer && activeBuffer.type == (0, $fca64bf918d5638f$export$a9b603917c4d9863).CHANNEL) memberList = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t${activeBuffer.members.size} users\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t<${0, $15e0fa56cfe1c276$export$2e2bcd8739ae039}\n\t\t\t\t\t\t\tmembers=${activeBuffer.members}\n\t\t\t\t\t\t\tusers=${activeServer.users}\n\t\t\t\t\t\t\tonNickClick=${this.handleNickClick}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t`;\n let dialog = null;\n let dialogData = this.state.dialogData || {};\n let dialogBody;\n switch(this.state.dialog){\n case \"network\":\n let isNew = !dialogData.id;\n let title = isNew ? \"Add network\" : \"Edit network\";\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=${title} onDismiss=${this.dismissDialog}>\n\t\t\t\t\t<${0, $03b5941ba753e1f6$export$2e2bcd8739ae039}\n\t\t\t\t\t\tonSubmit=${this.handleNetworkSubmit}\n\t\t\t\t\t\tonRemove=${this.handleNetworkRemove}\n\t\t\t\t\t\tparams=${dialogData.params}\n\t\t\t\t\t\tautojoin=${dialogData.autojoin}\n\t\t\t\t\t\tisNew=${isNew}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t`;\n break;\n case \"help\":\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Help\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t<${0, $af9ce1e202e3524a$export$2e2bcd8739ae039}/>\n\t\t\t\t\n\t\t\t`;\n break;\n case \"join\":\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Join channel\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t<${0, $b4b4b87f4b38722c$export$2e2bcd8739ae039} channel=${dialogData.channel} onSubmit=${this.handleJoinSubmit}/>\n\t\t\t\t\n\t\t\t`;\n break;\n case \"auth\":\n if (dialogData.loading) dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`

    Logging in…

    `;\n else dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t<${0, $368ce7ef0e8c1c36$export$2e2bcd8739ae039} username=${dialogData.username} onSubmit=${this.handleAuthSubmit}/>\n\t\t\t\t`;\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Login to ${(0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(activeServer, activeBouncerNetwork)}\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t${dialogBody}\n\t\t\t\t\n\t\t\t`;\n break;\n case \"register\":\n if (dialogData.loading) dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`

    Creating account…

    `;\n else dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t<${0, $210f1d422ab09f4c$export$2e2bcd8739ae039} emailRequired=${dialogData.emailRequired} onSubmit=${this.handleRegisterSubmit}/>\n\t\t\t\t`;\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Register a new ${(0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(activeServer, activeBouncerNetwork)} account\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t${dialogBody}\n\t\t\t\t\n\t\t\t`;\n break;\n case \"verify\":\n if (dialogData.loading) dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`

    Verifying account…

    `;\n else dialogBody = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t\t<${0, $5855ce19a38be3e6$export$2e2bcd8739ae039} account=${dialogData.account} message=${dialogData.message} onSubmit=${this.handleVerifySubmit}/>\n\t\t\t\t`;\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Verify ${(0, $fca64bf918d5638f$export$53e73e095c2ac1e2)(activeServer, activeBouncerNetwork)} account\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t${dialogBody}\n\t\t\t\t\n\t\t\t`;\n break;\n case \"settings\":\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Settings\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t<${0, $9fbbfef00d6a25bf$export$2e2bcd8739ae039}\n\t\t\t\t\t\tsettings=${this.state.settings}\n\t\t\t\t\t\tshowProtocolHandler=${dialogData.showProtocolHandler}\n\t\t\t\t\t\tonChange=${this.handleSettingsChange}\n\t\t\t\t\t\tonDisconnect=${this.handleSettingsDisconnect}\n\t\t\t\t\t\tonClose=${this.dismissDialog}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t`;\n break;\n case \"switch\":\n dialog = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t<${0, $676cb1384c20bf0e$export$2e2bcd8739ae039} title=\"Switch to a channel or user\" onDismiss=${this.dismissDialog}>\n\t\t\t\t\t<${0, $9b625992f92feff7$export$2e2bcd8739ae039}\n\t\t\t\t\t\tbuffers=${this.state.buffers}\n\t\t\t\t\t\tservers=${this.state.servers}\n\t\t\t\t\t\tbouncerNetworks=${this.state.bouncerNetworks}\n\t\t\t\t\t\tonSubmit=${this.handleSwitchSubmit}/>\n\t\t\t\t\n\t\t\t`;\n break;\n }\n let error = null;\n if (this.state.error) error = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\t
    \n\t\t\t\t\t${this.state.error}\n\t\t\t\t\t${\" \"}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t`;\n let composerReadOnly = false;\n if (activeServer && activeServer.status !== (0, $fca64bf918d5638f$export$ac0b13ba2bbce4d5).REGISTERED) composerReadOnly = true;\n let commandOnly = false;\n let privmsgMaxLen;\n if (activeBuffer && activeBuffer.type === (0, $fca64bf918d5638f$export$a9b603917c4d9863).SERVER) commandOnly = true;\n else if (activeBuffer) {\n let client = this.clients.get(activeBuffer.server);\n privmsgMaxLen = $bd3c59ab25aed5ca$export$feed2f17626e5168(client.isupport, client.nick, activeBuffer.name);\n }\n let app = (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t\n\t\t\t\t<${(0, $cd5f528e18548e6d$export$2e2bcd8739ae039)}\n\t\t\t\t\tbuffers=${this.state.buffers}\n\t\t\t\t\tservers=${this.state.servers}\n\t\t\t\t\tbouncerNetworks=${this.state.bouncerNetworks}\n\t\t\t\t\tactiveBuffer=${this.state.activeBuffer}\n\t\t\t\t\tonBufferClick=${this.handleBufferListClick}\n\t\t\t\t\tonBufferClose=${this.handleBufferListClose}\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${bufferHeader}\n\t\t\t<${(0, $9ead1202cd2221f9$export$2e2bcd8739ae039)}\n\t\t\t\ttarget=${this.buffer}\n\t\t\t\tstickTo=\".logline\"\n\t\t\t\tscrollKey=${this.state.activeBuffer}\n\t\t\t\tonScrollTop=${this.handleBufferScrollTop}\n\t\t\t>\n\t\t\t\t
    \n\t\t\t\t\t<${(0, $47db4ea8a56fc107$export$2e2bcd8739ae039)}\n\t\t\t\t\t\tbuffer=${activeBuffer}\n\t\t\t\t\t\tserver=${activeServer}\n\t\t\t\t\t\tbouncerNetwork=${activeBouncerNetwork}\n\t\t\t\t\t\tsettings=${this.state.settings}\n\t\t\t\t\t\tonChannelClick=${this.handleChannelClick}\n\t\t\t\t\t\tonNickClick=${this.handleNickClick}\n\t\t\t\t\t\tonAuthClick=${()=>this.handleAuthClick(activeBuffer.server)}\n\t\t\t\t\t\tonRegisterClick=${()=>this.handleRegisterClick(activeBuffer.server)}\n\t\t\t\t\t\tonVerifyClick=${this.handleVerifyClick}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\n\t\t\t${memberList}\n\t\t\t<${(0, $142bbba13add3ea5$export$2e2bcd8739ae039)}\n\t\t\t\tref=${this.composer}\n\t\t\t\tclient=${activeClient}\n\t\t\t\treadOnly=${composerReadOnly}\n\t\t\t\tonSubmit=${this.handleComposerSubmit}\n\t\t\t\tautocomplete=${this.autocomplete}\n\t\t\t\tcommandOnly=${commandOnly}\n\t\t\t\tmaxLen=${privmsgMaxLen}\n\t\t\t/>\n\t\t\t${dialog}\n\t\t\t${error}\n\t\t`;\n return (0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`\n\t\t\t<${(0, $fca64bf918d5638f$export$8fa45c82eddfe270).Provider} value=${this.state.settings}>\n\t\t\t\t${app}\n\t\t\t\n\t\t`;\n }\n}\n\n\n(0, $b2a774aae58c7b4e$export$b3890eb0ae9dca99)((0, $3bbe59931da17a80$export$c0bb0b647f701bb5)`<${(0, $5c2a91b7f6173cd8$export$2e2bcd8739ae039)}/>`, document.body);\n\n\n//# sourceMappingURL=index.2eb06fda.js.map\n","import { html, render } from \"./lib/index.js\";\nimport App from \"./components/app.js\";\n\nrender(html`<${App}/>`, document.body);\n","export * from \"../node_modules/preact/dist/preact.module.js\";\n\nimport { h } from \"../node_modules/preact/dist/preact.module.js\";\nimport htm from \"../node_modules/htm/dist/htm.module.js\";\nexport const html = htm.bind(h);\n\nimport * as linkifyjs from \"../node_modules/linkifyjs/dist/linkify.es.js\";\nexport { linkifyjs };\n","var n,l,u,t,i,o,r,f,e,c,s,a,h={},v=[],p=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,y=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function _(n){var l=n.parentNode;l&&l.removeChild(n)}function g(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return b(l,f,i,o,null)}function b(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function m(){return{current:null}}function w(n){return n.children}function k(n,l){this.props=n,this.context=l}function x(n,l){if(null==l)return n.__?x(n.__,n.__i+1):null;for(var u;lu&&i.sort(f));S.__r=0}function $(n,l,u,t,i,o,r,f,e,c,s){var a,p,y,d,_,g=t&&t.__k||v,b=l.length;for(u.__d=e,I(u,l,g),e=u.__d,a=0;a0?b(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i)?(i.__=n,i.__b=n.__b+1,f=A(i,u,r,s),i.__i=f,o=null,-1!==f&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,\"function\"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f===r+1?a++:f>r?s>e-r?a+=f-r:a--:f(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f2&&(e.children=arguments.length>3?n.call(arguments,2):t),b(l.type,e,i||l.key,o||l.ref,null)}function J(n,l){var u={__c:l=\"__cC\"+a++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,P(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=v.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},k.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),P(this))},k.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),P(this))},k.prototype.render=w,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},S.__r=0,e=0,c=M(!1),s=M(!0),a=0;export{k as Component,w as Fragment,G as cloneElement,J as createContext,g as createElement,m as createRef,g as h,E as hydrate,t as isValidElement,l as options,D as render,T as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 16;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 17;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {preact.ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the\n * virtual node\n * @returns {VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor == undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tcommitQueue = [],\n\t\trefQueue = [];\n\n\tif (component._parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.ownerSVGElement !== undefined,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {Component} a\n * @param {Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/i, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (\n\t\t\tname.toLowerCase() in dom ||\n\t\t\tname === 'onFocusOut' ||\n\t\t\tname === 'onFocusIn'\n\t\t)\n\t\t\tname = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = eventClock;\n\t\t\t\tdom.addEventListener(\n name,\n useCapture ? eventProxyCapture : eventProxy,\n useCapture\n );\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e._dispatched == null) {\n\t\t\t\te._dispatched = eventClock++;\n\n\t\t\t\t// When `e._dispatched` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e._dispatched < eventHandler._attached) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR, INSERT_VNODE, MATCHED } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\tnewParentVNode._nextDom = oldDom;\n\tconstructNewChildrenArray(newParentVNode, renderResult, oldChildren);\n\toldDom = newParentVNode._nextDom;\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == null && newDom != null) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tif (\n\t\t\tchildVNode._flags & INSERT_VNODE ||\n\t\t\toldVNode._children === childVNode._children\n\t\t) {\n\t\t\t// @ts-expect-error olDom should be present on a DOM node\n\t\t\tif (oldDom && !oldDom.isConnected) {\n\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t}\n\t\t\toldDom = insert(childVNode, oldDom, parentDom);\n\t\t} else if (\n\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\tchildVNode._nextDom !== undefined\n\t\t) {\n\t\t\t// Since Fragments or components that return Fragment like VNodes can\n\t\t\t// contain multiple DOM nodes as the same level, continue the diff from\n\t\t\t// the sibling of last DOM child of this child VNode\n\t\t\toldDom = childVNode._nextDom;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because it\n\t\t// is only used by `diffChildren` to determine where to resume the diff\n\t\t// after diffing Components and Fragments. Once we store it the nextDOM\n\t\t// local var, we can clean up the property. Also prevents us hanging on to\n\t\t// DOM nodes that may have been unmounted.\n\t\tchildVNode._nextDom = undefined;\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\t// TODO: With new child diffing algo, consider alt ways to diff Fragments.\n\t// Such as dropping oldDom and moving fragments in place\n\t//\n\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t// _nextDom property to the nextSibling of its last child DOM node.\n\t//\n\t// `oldDom` contains the correct value here because if the last child\n\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t// node's nextSibling.\n\tnewParentVNode._nextDom = oldDom;\n\tnewParentVNode._dom = firstChildDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(newParentVNode, renderResult, oldChildren) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tconst newChildrenLength = renderResult.length;\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g.
    {reuse}{reuse}
    ) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode.constructor === undefined && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse =
    \n\t\t\t//
    {reuse}{reuse}
    \n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\n\t\t// Handle unmounting null placeholders, i.e. VNode => null in unkeyed children\n\t\tif (childVNode == null) {\n\t\t\toldVNode = oldChildren[skewedIndex];\n\t\t\tif (\n\t\t\t\toldVNode &&\n\t\t\t\toldVNode.key == null &&\n\t\t\t\toldVNode._dom &&\n\t\t\t\t(oldVNode._flags & MATCHED) === 0\n\t\t\t) {\n\t\t\t\tif (oldVNode._dom == newParentVNode._nextDom) {\n\t\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode, false);\n\n\t\t\t\t// Explicitly nullify this position in oldChildren instead of just\n\t\t\t\t// setting `_match=true` to prevent other routines (e.g.\n\t\t\t\t// `findMatchingIndex` or `getDomSibling`) from thinking VNodes or DOM\n\t\t\t\t// nodes in this position are still available to be used in diffing when\n\t\t\t\t// they have actually already been unmounted. For example, by only\n\t\t\t\t// setting `_match=true` here, the unmounting loop later would attempt\n\t\t\t\t// to unmount this VNode again seeing `_match==true`. Further,\n\t\t\t\t// getDomSibling doesn't know about _match and so would incorrectly\n\t\t\t\t// assume DOM nodes in this subtree are mounted and usable.\n\t\t\t\toldChildren[skewedIndex] = null;\n\t\t\t\tremainingOldChildren--;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\tconst matchingIndex = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t);\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tchildVNode._index = matchingIndex;\n\n\t\toldVNode = null;\n\t\tif (matchingIndex !== -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original === null\n\t\tconst isMounting = oldVNode == null || oldVNode._original === null;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\tskew--;\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\tif (matchingIndex === skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else if (matchingIndex > skewedIndex) {\n\t\t\t\tif (remainingOldChildren > newChildrenLength - skewedIndex) {\n\t\t\t\t\tskew += matchingIndex - skewedIndex;\n\t\t\t\t} else {\n\t\t\t\t\tskew--;\n\t\t\t\t}\n\t\t\t} else if (matchingIndex < skewedIndex) {\n\t\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\t\tskew = matchingIndex - skewedIndex;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tskew = 0;\n\t\t\t}\n\n\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t// match the new skew index (i + new skew)\n\t\t\tif (matchingIndex !== i + skew) {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != null && (oldVNode._flags & MATCHED) === 0) {\n\t\t\t\tif (oldVNode._dom == newParentVNode._nextDom) {\n\t\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tparentDom.insertBefore(parentVNode._dom, oldDom || null);\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != null && oldDom.nodeType === 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\tlet shouldSearch =\n\t\tremainingOldChildren >\n\t\t(oldVNode != null && (oldVNode._flags & MATCHED) === 0 ? 1 : 0);\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode &&\n\t\t\tkey == oldVNode.key &&\n\t\t\ttype === oldVNode.type &&\n\t\t\t(oldVNode._flags & MATCHED) === 0)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) === 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) === 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n","import {\n\tEMPTY_OBJ,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tRESET_MODE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t: MODE_HYDRATE;\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t// ^ could possibly be simplified to:\n\t\t\t\t// excessDomChildren.length = 0;\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\troot._nextDom = undefined;\n\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value === !!nodeType &&\n\t\t\t\t(nodeType ? value.localName === nodeType : value.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS('http://www.w3.org/2000/svg', nodeType);\n\t\t} else {\n\t\t\tdom = document.createElement(nodeType, newProps.is && newProps);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != null) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (i !== 'key' && !(i in newProps)) {\n\t\t\t\tsetProperty(dom, i, null, value, isSvg);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\ti !== 'key' &&\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], isSvg);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html !== oldHtml.__html &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating) {\n\t\t\ti = 'value';\n\t\t\tif (\n\t\t\t\tinputValue !== undefined &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType === 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix \n\t\t\t\t\n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\nimport { keybindings } from \"../keybindings.js\";\nimport commands from \"../commands.js\";\n\nfunction KeyBindingsHelp() {\n\tlet l = keybindings.map((binding) => {\n\t\tlet keys = [];\n\t\tif (binding.ctrlKey) {\n\t\t\tkeys.push(\"Ctrl\");\n\t\t}\n\t\tif (binding.altKey) {\n\t\t\tkeys.push(\"Alt\");\n\t\t}\n\t\tkeys.push(binding.key);\n\n\t\tkeys = keys.map((name, i) => {\n\t\t\treturn html`\n\t\t\t\t${i > 0 ? \"+\" : null}\n\t\t\t\t${name}\n\t\t\t`;\n\t\t});\n\n\t\treturn html`\n\t\t\t
    ${keys}
    \n\t\t\t
    ${binding.description}
    \n\t\t`;\n\t});\n\n\tl.push(html`\n\t\t
    Tab
    \n\t\t
    Automatically complete nickname or channel
    \n\t`);\n\n\tif (!window.matchMedia(\"(pointer: none)\").matches) {\n\t\tl.push(html`\n\t\t\t
    Middle mouse click
    \n\t\t\t
    Close buffer
    \n\t\t`);\n\t}\n\n\treturn html`
    ${l}
    `;\n}\n\nfunction CommandsHelp() {\n\tlet l = Object.keys(commands).map((name) => {\n\t\tlet cmd = commands[name];\n\n\t\tlet usage = [html`/${name}`];\n\t\tif (cmd.usage) {\n\t\t\tusage.push(\" \" + cmd.usage);\n\t\t}\n\n\t\treturn html`\n\t\t\t
    ${usage}
    \n\t\t\t
    ${cmd.description}
    \n\t\t`;\n\t});\n\n\treturn html`
    ${l}
    `;\n}\n\nexport default function Help() {\n\treturn html`\n\t\t

    Key bindings

    \n\t\t<${KeyBindingsHelp}/>\n\n\t\t

    Commands

    \n\t\t<${CommandsHelp}/>\n\t`;\n}\n","import { ReceiptType, Unread, BufferType, SERVER_BUFFER, receiptFromMessage } from \"./state.js\";\n\nfunction getSiblingBuffer(buffers, bufID, delta) {\n\tlet bufList = Array.from(buffers.values());\n\tlet i = bufList.findIndex((buf) => buf.id === bufID);\n\tif (i < 0) {\n\t\treturn null;\n\t}\n\ti = (i + bufList.length + delta) % bufList.length;\n\treturn bufList[i];\n}\n\nexport const keybindings = [\n\t{\n\t\tkey: \"h\",\n\t\taltKey: true,\n\t\tdescription: \"Mark all messages as read\",\n\t\texecute: (app) => {\n\t\t\tapp.setState((state) => {\n\t\t\t\tlet buffers = new Map();\n\t\t\t\tstate.buffers.forEach((buf) => {\n\t\t\t\t\tbuffers.set(buf.id, {\n\t\t\t\t\t\t...buf,\n\t\t\t\t\t\tunread: Unread.NONE,\n\t\t\t\t\t\tprevReadReceipt: null,\n\t\t\t\t\t});\n\n\t\t\t\t\tlet receipts = {};\n\t\t\t\t\tif (buf.messages.length > 0) {\n\t\t\t\t\t\tlet lastMsg = buf.messages[buf.messages.length - 1];\n\t\t\t\t\t\treceipts[ReceiptType.READ] = receiptFromMessage(lastMsg);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet client = app.clients.get(buf.server);\n\t\t\t\t\tapp.bufferStore.put({\n\t\t\t\t\t\tname: buf.name,\n\t\t\t\t\t\tserver: client.params,\n\t\t\t\t\t\tunread: Unread.NONE,\n\t\t\t\t\t\treceipts,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn { buffers };\n\t\t\t}, () => {\n\t\t\t\tapp.updateDocumentTitle();\n\t\t\t});\n\t\t},\n\t},\n\t{\n\t\tkey: \"a\",\n\t\taltKey: true,\n\t\tdescription: \"Jump to next buffer with activity\",\n\t\texecute: (app) => {\n\t\t\t// TODO: order by age if same priority\n\t\t\tlet firstServerBuffer = null;\n\t\t\tlet target = null;\n\t\t\tfor (let buf of app.state.buffers.values()) {\n\t\t\t\tif (!firstServerBuffer && buf.type === BufferType.SERVER) {\n\t\t\t\t\tfirstServerBuffer = buf;\n\t\t\t\t}\n\n\t\t\t\tif (buf.unread === Unread.NONE) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!target || Unread.compare(buf.unread, target.unread) > 0) {\n\t\t\t\t\ttarget = buf;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!target) {\n\t\t\t\ttarget = firstServerBuffer;\n\t\t\t}\n\t\t\tif (target) {\n\t\t\t\tapp.switchBuffer(target);\n\t\t\t}\n\t\t},\n\t},\n\t{\n\t\tkey: \"ArrowUp\",\n\t\taltKey: true,\n\t\tdescription: \"Jump to the previous buffer\",\n\t\texecute: (app) => {\n\t\t\tlet prev = getSiblingBuffer(app.state.buffers, app.state.activeBuffer, -1);\n\t\t\tif (prev) {\n\t\t\t\tapp.switchBuffer(prev);\n\t\t\t}\n\t\t},\n\t},\n\t{\n\t\tkey: \"ArrowDown\",\n\t\taltKey: true,\n\t\tdescription: \"Jump to the next buffer\",\n\t\texecute: (app) => {\n\t\t\tlet next = getSiblingBuffer(app.state.buffers, app.state.activeBuffer, 1);\n\t\t\tif (next) {\n\t\t\t\tapp.switchBuffer(next);\n\t\t\t}\n\t\t},\n\t},\n\t{\n\t\tkey: \"k\",\n\t\tctrlKey: true,\n\t\tdescription: \"Switch to a buffer\",\n\t\texecute: (app) => {\n\t\t\tapp.openDialog(\"switch\");\n\t\t},\n\t},\n];\n\nexport function setup(app) {\n\tlet byKey = {};\n\tkeybindings.forEach((binding) => {\n\t\tif (!byKey[binding.key]) {\n\t\t\tbyKey[binding.key] = [];\n\t\t}\n\t\tbyKey[binding.key].push(binding);\n\t});\n\n\twindow.addEventListener(\"keydown\", (event) => {\n\t\tlet candidates = byKey[event.key];\n\t\tif (!candidates) {\n\t\t\treturn;\n\t\t}\n\t\tcandidates = candidates.filter((binding) => {\n\t\t\treturn !!binding.altKey == event.altKey && !!binding.ctrlKey == event.ctrlKey;\n\t\t});\n\t\tif (candidates.length != 1) {\n\t\t\treturn;\n\t\t}\n\t\tevent.preventDefault();\n\t\tcandidates[0].execute(app);\n\t});\n}\n","import * as irc from \"./lib/irc.js\";\nimport { SERVER_BUFFER, BufferType, Unread } from \"./state.js\";\n\nfunction getActiveClient(app) {\n\tlet buf = app.state.buffers.get(app.state.activeBuffer);\n\tif (!buf) {\n\t\tthrow new Error(\"Not connected to server\");\n\t}\n\treturn app.clients.get(buf.server);\n}\n\nfunction getActiveTarget(app) {\n\tlet activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n\tif (!activeBuffer) {\n\t\tthrow new Error(\"Not in a buffer\");\n\t}\n\treturn activeBuffer.name;\n}\n\nfunction getActiveChannel(app) {\n\tlet activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n\tif (!activeBuffer || activeBuffer.type !== BufferType.CHANNEL) {\n\t\tthrow new Error(\"Not in a channel\");\n\t}\n\treturn activeBuffer.name;\n}\n\nasync function setUserHostMode(app, args, mode) {\n\tlet nick = args[0];\n\tif (!nick) {\n\t\tthrow new Error(\"Missing nick\");\n\t}\n\tlet activeChannel = getActiveChannel(app);\n\tlet client = getActiveClient(app);\n\tlet whois = await client.whois(nick);\n\tconst info = whois[irc.RPL_WHOISUSER].params;\n\tconst user = info[2];\n\tconst host = info[3];\n\tclient.send({\n\t\tcommand: \"MODE\",\n\t\tparams: [activeChannel, mode, `*!${user}@${host}`],\n\t});\n}\n\nfunction markServerBufferUnread(app) {\n\tlet activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n\tif (!activeBuffer || activeBuffer.type === BufferType.SERVER) {\n\t\treturn;\n\t}\n\tapp.setBufferState({ server: activeBuffer.server }, (buf) => {\n\t\treturn { unread: Unread.union(buf.unread, Unread.MESSAGE) };\n\t});\n}\n\nconst join = {\n\tusage: \" [password]\",\n\tdescription: \"Join a channel\",\n\texecute: (app, args) => {\n\t\tlet channel = args[0];\n\t\tif (!channel) {\n\t\t\tthrow new Error(\"Missing channel name\");\n\t\t}\n\t\tif (args.length > 1) {\n\t\t\tapp.open(channel, null, args[1]);\n\t\t} else {\n\t\t\tapp.open(channel);\n\t\t}\n\t},\n};\n\nconst kick = {\n\tusage: \" [comment]\",\n\tdescription: \"Remove a user from the channel\",\n\texecute: (app, args) => {\n\t\tlet nick = args[0];\n\t\tlet activeChannel = getActiveChannel(app);\n\t\tlet params = [activeChannel, nick];\n\t\tif (args.length > 1) {\n\t\t\tparams.push(args.slice(1).join(\" \"));\n\t\t}\n\t\tgetActiveClient(app).send({ command: \"KICK\", params });\n\t},\n};\n\nconst ban = {\n\tusage: \"[nick]\",\n\tdescription: \"Ban a user from the channel, or display the current ban list\",\n\texecute: (app, args) => {\n\t\tif (args.length == 0) {\n\t\t\tlet activeChannel = getActiveChannel(app);\n\t\t\tgetActiveClient(app).send({\n\t\t\t\tcommand: \"MODE\",\n\t\t\t\tparams: [activeChannel, \"+b\"],\n\t\t\t});\n\t\t} else {\n\t\t\treturn setUserHostMode(app, args, \"+b\");\n\t\t}\n\t},\n};\n\nfunction givemode(app, args, mode) {\n\t// TODO: Handle several users at once\n\tlet nick = args[0];\n\tif (!nick) {\n\t\tthrow new Error(\"Missing nick\");\n\t}\n\tlet activeChannel = getActiveChannel(app);\n\tgetActiveClient(app).send({\n\t\tcommand: \"MODE\",\n\t\tparams: [activeChannel, mode, nick],\n\t});\n}\n\nexport default {\n\t\"away\": {\n\t\tusage: \"[message]\",\n\t\tdescription: \"Set away message\",\n\t\texecute: (app, args) => {\n\t\t\tconst params = []\n\t\t\tif (args.length) {\n\t\t\t\tparams.push(args.join(\" \"));\n\t\t\t}\n\t\t\tgetActiveClient(app).send({command: \"AWAY\", params});\n\t\t},\n\t},\n\t\"ban\": ban,\n\t\"buffer\": {\n\t\tusage: \"\",\n\t\tdescription: \"Switch to a buffer\",\n\t\texecute: (app, args) => {\n\t\t\tlet name = args[0];\n\t\t\tfor (let buf of app.state.buffers.values()) {\n\t\t\t\tif (buf.name === name) {\n\t\t\t\t\tapp.switchBuffer(buf);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new Error(\"Unknown buffer\");\n\t\t},\n\t},\n\t\"close\": {\n\t\tdescription: \"Close the current buffer\",\n\t\texecute: (app, args) => {\n\t\t\tlet activeBuffer = app.state.buffers.get(app.state.activeBuffer);\n\t\t\tif (!activeBuffer || activeBuffer.type == BufferType.SERVER) {\n\t\t\t\tthrow new Error(\"Not in a user or channel buffer\");\n\t\t\t}\n\t\t\tapp.close(activeBuffer.id);\n\t\t},\n\t},\n\t\"deop\": {\n\t\tusage: \"\",\n\t\tdescription: \"Remove operator status for a user on this channel\",\n\t\texecute: (app, args) => givemode(app, args, \"-o\"),\n\t},\n\t\"devoice\": {\n\t\tusage: \"\",\n\t\tdescription: \"Remove voiced status for a user on this channel\",\n\t\texecute: (app, args) => givemode(app, args, \"-v\"),\n\t},\n\t\"disconnect\": {\n\t\tdescription: \"Disconnect from the server\",\n\t\texecute: (app, args) => {\n\t\t\tapp.disconnect();\n\t\t},\n\t},\n\t\"help\": {\n\t\tdescription: \"Show help menu\",\n\t\texecute: (app, args) => {\n\t\t\tapp.openHelp();\n\t\t},\n\t},\n\t\"invite\": {\n\t\tusage: \"\",\n\t\tdescription: \"Invite a user to the channel\",\n\t\texecute: (app, args) => {\n\t\t\tlet nick = args[0];\n\t\t\tif (!nick) {\n\t\t\t\tthrow new Error(\"Missing nick\");\n\t\t\t}\n\t\t\tlet activeChannel = getActiveChannel(app);\n\t\t\tgetActiveClient(app).send({ command: \"INVITE\", params: [\n\t\t\t\tnick, activeChannel,\n\t\t\t]});\n\t\t},\n\t},\n\t\"j\": join,\n\t\"join\": join,\n\t\"kick\": kick,\n\t\"kickban\": {\n\t\tusage: \"\",\n\t\tdescription: \"Ban a user and removes them from the channel\",\n\t\texecute: (app, args) => {\n\t\t\tkick.execute(app, args);\n\t\t\tban.execute(app, args);\n\t\t},\n\t},\n\t\"lusers\": {\n\t\tusage: \"[ []]\",\n\t\tdescription: \"Request user statistics about the network\",\n\t\texecute: (app, args) => {\n\t\t\tgetActiveClient(app).send({ command: \"LUSERS\", params: args });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t\"me\": {\n\t\tusage: \"\",\n\t\tdescription: \"Send an action message to the current buffer\",\n\t\texecute: (app, args) => {\n\t\t\tlet action = args.join(\" \");\n\t\t\tlet target = getActiveTarget(app);\n\t\t\tlet text = `\\x01ACTION ${action}\\x01`;\n\t\t\tapp.privmsg(target, text);\n\t\t},\n\t},\n\t\"mode\": {\n\t\tusage: \"[target] [modes] [mode args...]\",\n\t\tdescription: \"Query or change a channel or user mode\",\n\t\texecute: (app, args) => {\n\t\t\tlet target = args[0];\n\t\t\tif (!target || target.startsWith(\"+\") || target.startsWith(\"-\")) {\n\t\t\t\tlet activeChannel = getActiveChannel(app);\n\t\t\t\targs = [activeChannel, ...args];\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"MODE\", params: args });\n\t\t},\n\t},\n\t\"motd\": {\n\t\tusage: \"[server]\",\n\t\tdescription: \"Get the Message Of The Day\",\n\t\texecute: (app, args) => {\n\t\t\tgetActiveClient(app).send({ command: \"MOTD\", params: args });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t\"msg\": {\n\t\tusage: \" \",\n\t\tdescription: \"Send a message to a nickname or a channel\",\n\t\texecute: (app, args) => {\n\t\t\tlet target = args[0];\n\t\t\tlet text = args.slice(1).join(\" \");\n\t\t\tgetActiveClient(app).send({ command: \"PRIVMSG\", params: [target, text] });\n\t\t},\n\t},\n\t\"nick\": {\n\t\tusage: \"\",\n\t\tdescription: \"Change current nickname\",\n\t\texecute: (app, args) => {\n\t\t\tlet newNick = args[0];\n\t\t\tgetActiveClient(app).send({ command: \"NICK\", params: [newNick] });\n\t\t},\n\t},\n\t\"notice\": {\n\t\tusage: \" \",\n\t\tdescription: \"Send a notice to a nickname or a channel\",\n\t\texecute: (app, args) => {\n\t\t\tlet target = args[0];\n\t\t\tlet text = args.slice(1).join(\" \");\n\t\t\tgetActiveClient(app).send({ command: \"NOTICE\", params: [target, text] });\n\t\t},\n\t},\n\t\"op\": {\n\t\tusage: \"\",\n\t\tdescription: \"Give a user operator status on this channel\",\n\t\texecute: (app, args) => givemode(app, args, \"+o\"),\n\t},\n\t\"part\": {\n\t\tusage: \"[reason]\",\n\t\tdescription: \"Leave a channel\",\n\t\texecute: (app, args) => {\n\t\t\tlet reason = args.join(\" \");\n\t\t\tlet activeChannel = getActiveChannel(app);\n\t\t\tlet params = [activeChannel];\n\t\t\tif (reason) {\n\t\t\t\tparams.push(reason);\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"PART\", params });\n\t\t},\n\t},\n\t\"query\": {\n\t\tusage: \" [message]\",\n\t\tdescription: \"Open a buffer to send messages to a nickname\",\n\t\texecute: (app, args) => {\n\t\t\tlet nick = args[0];\n\t\t\tif (!nick) {\n\t\t\t\tthrow new Error(\"Missing nickname\");\n\t\t\t}\n\t\t\tapp.open(nick);\n\n\t\t\tif (args.length > 1) {\n\t\t\t\tlet text = args.slice(1).join(\" \");\n\t\t\t\tapp.privmsg(nick, text);\n\t\t\t}\n\t\t},\n\t},\n\t\"quiet\": {\n\t\tusage: \"[nick]\",\n\t\tdescription: \"Quiet a user in the channel, or display the current quiet list\",\n\t\texecute: (app, args) => {\n\t\t\tif (args.length == 0) {\n\t\t\t\tgetActiveClient(app).send({\n\t\t\t\t\tcommand: \"MODE\",\n\t\t\t\t\tparams: [getActiveChannel(app), \"+q\"],\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn setUserHostMode(app, args, \"+q\");\n\t\t\t}\n\t\t},\n\t},\n\t\"quit\": {\n\t\tdescription: \"Quit\",\n\t\texecute: (app, args) => {\n\t\t\tapp.close({ name: SERVER_BUFFER });\n\t\t},\n\t},\n\t\"quote\": {\n\t\tusage: \"\",\n\t\tdescription: \"Send a raw IRC command to the server\",\n\t\texecute: (app, args) => {\n\t\t\tlet msg;\n\t\t\ttry {\n\t\t\t\tmsg = irc.parseMessage(args.join(\" \"));\n\t\t\t} catch (err) {\n\t\t\t\tthrow new Error(\"Failed to parse IRC command: \" + err.message);\n\t\t\t}\n\t\t\tgetActiveClient(app).send(msg);\n\t\t},\n\t},\n\t\"reconnect\": {\n\t\tdescription: \"Reconnect to the server\",\n\t\texecute: (app, args) => {\n\t\t\tapp.reconnect();\n\t\t},\n\t},\n\t\"setname\": {\n\t\tusage: \"\",\n\t\tdescription: \"Change current realname\",\n\t\texecute: (app, args) => {\n\t\t\tlet newRealname = args.join(\" \");\n\t\t\tlet client = getActiveClient(app);\n\t\t\tif (!client.caps.enabled.has(\"setname\")) {\n\t\t\t\tthrow new Error(\"Server doesn't support changing the realname\");\n\t\t\t}\n\t\t\tclient.send({ command: \"SETNAME\", params: [newRealname] });\n\t\t\t// TODO: save to local storage\n\t\t},\n\t},\n\t\"stats\": {\n\t\tusage: \" [server]\",\n\t\tdescription: \"Request server statistics\",\n\t\texecute: (app, args) => {\n\t\t\tlet query = args[0];\n\t\t\tif (!query) {\n\t\t\t\tthrow new Error(\"Missing query\");\n\t\t\t}\n\t\t\tlet params = [query];\n\t\t\tif (args.length > 1) {\n\t\t\t\tparams.push(args.slice(1).join(\" \"));\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"STATS\", params });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t\"topic\": {\n\t\tusage: \"\",\n\t\tdescription: \"Change the topic of the current channel\",\n\t\texecute: (app, args) => {\n\t\t\tlet activeChannel = getActiveChannel(app);\n\t\t\tlet params = [activeChannel];\n\t\t\tif (args.length > 0) {\n\t\t\t\tparams.push(args.join(\" \"));\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"TOPIC\", params });\n\t\t},\n\t},\n\t\"unban\": {\n\t\tusage: \"\",\n\t\tdescription: \"Remove a user from the ban list\",\n\t\texecute: (app, args) => {\n\t\t\treturn setUserHostMode(app, args, \"-b\");\n\t\t},\n\t},\n\t\"unquiet\": {\n\t\tusage: \"\",\n\t\tdescription: \"Remove a user from the quiet list\",\n\t\texecute: (app, args) => {\n\t\t\treturn setUserHostMode(app, args, \"-q\");\n\t\t},\n\t},\n\t\"voice\": {\n\t\tusage: \"\",\n\t\tdescription: \"Give a user voiced status on this channel\",\n\t\texecute: (app, args) => givemode(app, args, \"+v\"),\n\t},\n\t\"who\": {\n\t\tusage: \"\",\n\t\tdescription: \"Retrieve a list of users\",\n\t\texecute: (app, args) => {\n\t\t\tgetActiveClient(app).send({ command: \"WHO\", params: args });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t\"whois\": {\n\t\tusage: \"\",\n\t\tdescription: \"Retrieve information about a user\",\n\t\texecute: (app, args) => {\n\t\t\tlet nick = args[0];\n\t\t\tif (!nick) {\n\t\t\t\tthrow new Error(\"Missing nick\");\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"WHOIS\", params: [nick] });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t\"whowas\": {\n\t\tusage: \" [count]\",\n\t\tdescription: \"Retrieve information about an offline user\",\n\t\texecute: (app, args) => {\n\t\t\tif (args.length < 1) {\n\t\t\t\tthrow new Error(\"Missing nick\");\n\t\t\t}\n\t\t\tgetActiveClient(app).send({ command: \"WHOWAS\", params: args });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n\t\"list\": {\n\t\tusage: \"[filter]\",\n\t\tdescription: \"Retrieve a list of channels from a network\",\n\t\texecute: (app, args) => {\n\t\t\tgetActiveClient(app).send({ command: \"LIST\", params: args });\n\t\t\tmarkServerBufferUnread(app);\n\t\t},\n\t},\n};\n","import { html, Component } from \"../lib/index.js\";\n\nconst defaultParams = {\n\tname: \"\",\n\thost: \"\",\n\tport: 6697,\n\tnickname: \"\",\n\tusername: \"\",\n\trealname: \"\",\n\tpass: \"\",\n};\n\nexport default class NetworkForm extends Component {\n\tprevParams = null;\n\tstate = {\n\t\t...defaultParams,\n\t\tautojoin: true,\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.prevParams = { ...defaultParams };\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\n\t\tif (props.params) {\n\t\t\tObject.keys(defaultParams).forEach((k) => {\n\t\t\t\tif (props.params[k] !== undefined) {\n\t\t\t\t\tthis.state[k] = props.params[k];\n\t\t\t\t\tthis.prevParams[k] = props.params[k];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tlet value = target.type == \"checkbox\" ? target.checked : target.value;\n\t\tthis.setState({ [target.name]: value });\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\n\t\tlet params = {};\n\t\tObject.keys(defaultParams).forEach((k) => {\n\t\t\tif (!this.props.isNew && this.prevParams[k] == this.state[k]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.props.isNew && defaultParams[k] == this.state[k]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tparams[k] = this.state[k];\n\t\t});\n\n\t\tlet autojoin = this.state.autojoin ? this.props.autojoin : null;\n\t\tthis.props.onSubmit(params, autojoin);\n\t}\n\n\trender() {\n\t\tlet removeNetwork = null;\n\t\tif (!this.props.isNew) {\n\t\t\tremoveNetwork = html`\n\t\t\t\t\n\t\t\t`;\n\t\t}\n\n\t\tlet autojoin = null;\n\t\tif (this.props.autojoin) {\n\t\t\tautojoin = html`\n\t\t\t\t\n\t\t\t\t

    \n\t\t\t`;\n\t\t}\n\n\t\treturn html`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t${autojoin}\n\n\t\t\t\t
    \n\t\t\t\t\tAdvanced options\n\n\t\t\t\t\t
    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t

    \n\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t${removeNetwork}\n\t\t\t\t${\" \"}\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\n\nexport default class NetworkForm extends Component {\n\tstate = {\n\t\tusername: \"\",\n\t\tpassword: \"\",\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\n\t\tif (props.username) {\n\t\t\tthis.state.username = props.username;\n\t\t}\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tlet value = target.type == \"checkbox\" ? target.checked : target.value;\n\t\tthis.setState({ [target.name]: value });\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\n\t\tthis.props.onSubmit(this.state.username, this.state.password);\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\n\nexport default class RegisterForm extends Component {\n\tstate = {\n\t\temail: \"\",\n\t\tpassword: \"\",\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tlet value = target.type == \"checkbox\" ? target.checked : target.value;\n\t\tthis.setState({ [target.name]: value });\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\n\t\tthis.props.onSubmit(this.state.email, this.state.password);\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\nimport linkify from \"../lib/linkify.js\";\n\nexport default class RegisterForm extends Component {\n\tstate = {\n\t\tcode: \"\",\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tlet value = target.type == \"checkbox\" ? target.checked : target.value;\n\t\tthis.setState({ [target.name]: value });\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\n\t\tthis.props.onSubmit(this.state.code);\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t
    \n\t\t\t\t

    Your account ${this.props.account} has been created, but a verification code is required to complete the registration.

    \n\n\t\t\t\t

    ${linkify(this.props.message)}

    \n\n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\n\nexport default class SettingsForm extends Component {\n\tstate = {};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state.secondsInTimestamps = props.settings.secondsInTimestamps;\n\t\tthis.state.bufferEvents = props.settings.bufferEvents;\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tlet value = target.type == \"checkbox\" ? target.checked : target.value;\n\t\tthis.setState({ [target.name]: value }, () => {\n\t\t\tthis.props.onChange(this.state);\n\t\t});\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\t\tthis.props.onClose();\n\t}\n\n\tregisterProtocol() {\n\t\tlet url = window.location.origin + window.location.pathname + \"?open=%s\";\n\t\ttry {\n\t\t\tnavigator.registerProtocolHandler(\"irc\", url);\n\t\t\tnavigator.registerProtocolHandler(\"ircs\", url);\n\t\t} catch (err) {\n\t\t\tconsole.error(\"Failed to register protocol handler: \", err);\n\t\t}\n\t}\n\n\trender() {\n\t\tlet protocolHandler = null;\n\t\tif (this.props.showProtocolHandler) {\n\t\t\tprotocolHandler = html`\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\tSet gamja as your default IRC client for this browser.\n\t\t\t\t\t\tIRC links will be automatically opened here.\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t

    \n\t\t\t`;\n\t\t}\n\n\t\treturn html`\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t

    \n\n\t\t\t\t${protocolHandler}\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\t}\n}\n","import { html, Component } from \"../lib/index.js\";\nimport { BufferType, getBufferURL, getServerName } from \"../state.js\";\nimport * as irc from \"../lib/irc.js\";\n\nclass SwitcherItem extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleClick = this.handleClick.bind(this);\n\t}\n\n\thandleClick(event) {\n\t\tevent.preventDefault();\n\t\tthis.props.onClick();\n\t}\n\n\trender() {\n\t\tlet class_ = this.props.selected ? \"selected\" : \"\";\n\n\t\treturn html`\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${getServerName(this.props.server, this.props.bouncerNetwork)}\n\t\t\t\t\t\n\t\t\t\t\t${this.props.buffer.name}\n\t\t\t\t\n\t\t\t
  • \n\t\t`;\n\t}\n}\n\nfunction matchString(s, query) {\n\treturn s.toLowerCase().includes(query) ? 1 : 0;\n}\n\nfunction matchBuffer(buf, server, query) {\n\tlet score = 2 * matchString(buf.name, query);\n\tswitch (buf.type) {\n\tcase BufferType.CHANNEL:\n\t\tscore += matchString(buf.topic || \"\", query);\n\t\tbreak;\n\tcase BufferType.NICK:\n\t\tlet user = server.users.get(buf.name);\n\t\tif (user && user.realname && irc.isMeaningfulRealname(user.realname, buf.name)) {\n\t\t\tscore += matchString(user.realname, query);\n\t\t}\n\t\tbreak;\n\t}\n\treturn score;\n}\n\nexport default class SwitcherForm extends Component {\n\tstate = {\n\t\tquery: \"\",\n\t\tselected: 0,\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\t\tthis.handleKeyUp = this.handleKeyUp.bind(this);\n\t}\n\n\tgetSuggestions() {\n\t\tlet query = this.state.query.toLowerCase();\n\n\t\tlet l = [];\n\t\tlet scores = new Map();\n\t\tfor (let buf of this.props.buffers.values()) {\n\t\t\tif (buf.type === BufferType.SERVER) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet score = 0;\n\t\t\tif (query !== \"\") {\n\t\t\t\tlet server = this.props.servers.get(buf.server);\n\t\t\t\tscore = matchBuffer(buf, server, query);\n\t\t\t\tif (!score) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tscores.set(buf.id, score);\n\t\t\tl.push(buf);\n\t\t}\n\n\t\tl.sort((a, b) => {\n\t\t\treturn scores.get(b.id) - scores.get(a.id);\n\t\t});\n\n\t\treturn l.slice(0, 20);\n\t}\n\n\thandleInput(event) {\n\t\tlet target = event.target;\n\t\tthis.setState({ [target.name]: target.value });\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\t\tthis.props.onSubmit(this.getSuggestions()[this.state.selected]);\n\t}\n\n\thandleKeyUp(event) {\n\t\tswitch (event.key) {\n\t\tcase \"ArrowUp\":\n\t\t\tevent.stopPropagation();\n\t\t\tthis.move(-1);\n\t\t\tbreak;\n\t\tcase \"ArrowDown\":\n\t\t\tevent.stopPropagation();\n\t\t\tthis.move(1);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tmove(delta) {\n\t\tlet numSuggestions = this.getSuggestions().length;\n\t\tthis.setState((state) => {\n\t\t\treturn {\n\t\t\t\tselected: (state.selected + delta + numSuggestions) % numSuggestions,\n\t\t\t};\n\t\t});\n\t}\n\n\trender() {\n\t\tlet items = this.getSuggestions().map((buf, i) => {\n\t\t\tlet server = this.props.servers.get(buf.server);\n\n\t\t\tlet bouncerNetwork = null;\n\t\t\tif (server.bouncerNetID) {\n\t\t\t\tbouncerNetwork = this.props.bouncerNetworks.get(server.bouncerNetID);\n\t\t\t}\n\n\t\t\treturn html`\n\t\t\t\t<${SwitcherItem}\n\t\t\t\t\tbuffer=${buf}\n\t\t\t\t\tserver=${server}\n\t\t\t\t\tbouncerNetwork=${bouncerNetwork}\n\t\t\t\t\tselected=${this.state.selected === i}\n\t\t\t\t\tonClick=${() => this.props.onSubmit(buf)}\n\t\t\t\t/>\n\t\t\t`;\n\t\t});\n\n\t\treturn html`\n\t\t\t\n\t\t\t\t\n\t\t\t\t
      \n\t\t\t\t\t${items}\n\t\t\t\t
    \n\t\t\t\n\t\t`;\n\t}\n}\n","import { html, Component, createRef } from \"../lib/index.js\";\n\nfunction encodeContentDisposition(filename) {\n\t// Encode filename according to RFC 5987 if necessary. Note,\n\t// encodeURIComponent will percent-encode a superset of attr-char.\n\tlet encodedFilename = encodeURIComponent(filename);\n\tif (encodedFilename === filename) {\n\t\treturn \"attachment; filename=\\\"\" + filename + \"\\\"\";\n\t} else {\n\t\treturn \"attachment; filename*=UTF-8''\" + encodedFilename;\n\t}\n}\n\nexport default class Composer extends Component {\n\tstate = {\n\t\ttext: \"\",\n\t};\n\ttextInput = createRef();\n\tlastAutocomplete = null;\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleInput = this.handleInput.bind(this);\n\t\tthis.handleSubmit = this.handleSubmit.bind(this);\n\t\tthis.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n\t\tthis.handleInputPaste = this.handleInputPaste.bind(this);\n\t\tthis.handleWindowKeyDown = this.handleWindowKeyDown.bind(this);\n\t\tthis.handleWindowPaste = this.handleWindowPaste.bind(this);\n\t}\n\n\thandleInput(event) {\n\t\tthis.setState({ [event.target.name]: event.target.value });\n\n\t\tif (this.props.readOnly && event.target.name === \"text\" && !event.target.value) {\n\t\t\tevent.target.blur();\n\t\t}\n\t}\n\n\thandleSubmit(event) {\n\t\tevent.preventDefault();\n\t\tthis.props.onSubmit(this.state.text);\n\t\tthis.setState({ text: \"\" });\n\t}\n\n\thandleInputKeyDown(event) {\n\t\tlet input = event.target;\n\n\t\tif (!this.props.autocomplete || event.key !== \"Tab\") {\n\t\t\treturn;\n\t\t}\n\n\t\tif (input.selectionStart !== input.selectionEnd) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tlet carretPos = input.selectionStart;\n\t\tlet text = this.state.text;\n\t\tlet autocomplete;\n\t\tif (this.lastAutocomplete && this.lastAutocomplete.text === text && this.lastAutocomplete.carretPos === carretPos) {\n\t\t\tautocomplete = this.lastAutocomplete;\n\t\t} else {\n\t\t\tthis.lastAutocomplete = null;\n\n\t\t\tlet wordStart;\n\t\t\tfor (wordStart = carretPos - 1; wordStart >= 0; wordStart--) {\n\t\t\t\tif (text[wordStart] === \" \") {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\twordStart++;\n\n\t\t\tlet wordEnd;\n\t\t\tfor (wordEnd = carretPos; wordEnd < text.length; wordEnd++) {\n\t\t\t\tif (text[wordEnd] === \" \") {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet word = text.slice(wordStart, wordEnd);\n\t\t\tif (!word) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet replacements = this.props.autocomplete(word);\n\t\t\tif (replacements.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tautocomplete = {\n\t\t\t\ttext,\n\t\t\t\tcarretPos: input.selectionStart,\n\t\t\t\tprefix: text.slice(0, wordStart),\n\t\t\t\tsuffix: text.slice(wordEnd),\n\t\t\t\treplacements,\n\t\t\t\treplIndex: -1,\n\t\t\t};\n\t\t}\n\n\t\tlet n = autocomplete.replacements.length;\n\t\tif (event.shiftKey) {\n\t\t\tautocomplete.replIndex--;\n\t\t} else {\n\t\t\tautocomplete.replIndex++;\n\t\t}\n\t\tautocomplete.replIndex = (autocomplete.replIndex + n) % n;\n\n\t\tlet repl = autocomplete.replacements[autocomplete.replIndex];\n\t\tif (!autocomplete.prefix && !autocomplete.suffix) {\n\t\t\tif (repl.startsWith(\"/\")) {\n\t\t\t\trepl += \" \";\n\t\t\t} else {\n\t\t\t\trepl += \": \";\n\t\t\t}\n\t\t}\n\n\t\tautocomplete.text = autocomplete.prefix + repl + autocomplete.suffix;\n\t\tautocomplete.carretPos = autocomplete.prefix.length + repl.length;\n\n\t\tinput.value = autocomplete.text;\n\t\tinput.selectionStart = autocomplete.carretPos;\n\t\tinput.selectionEnd = input.selectionStart;\n\n\t\tthis.lastAutocomplete = autocomplete;\n\n\t\tthis.setState({ text: autocomplete.text });\n\t}\n\n\tasync handleInputPaste(event) {\n\t\tlet client = this.props.client;\n\t\tif (!event.clipboardData.files.length || !client || this.props.readOnly) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet endpoint = client.isupport.filehost();\n\t\tif (!endpoint) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopImmediatePropagation();\n\n\t\t// TODO: support more than one file\n\t\tlet file = event.clipboardData.files.item(0);\n\n\t\tlet auth;\n\t\tif (client.params.saslPlain) {\n\t\t\tlet params = client.params.saslPlain;\n\t\t\tauth = \"Basic \" + btoa(params.username + \":\" + params.password);\n\t\t} else if (client.params.saslOauthBearer) {\n\t\t\tauth = \"Bearer \" + client.params.saslOauthBearer.token;\n\t\t}\n\n\t\tlet headers = {\n\t\t\t\"Content-Length\": file.size,\n\t\t\t\"Content-Disposition\": encodeContentDisposition(file.name),\n\t\t};\n\t\tif (file.type) {\n\t\t\theaders[\"Content-Type\"] = file.type;\n\t\t}\n\t\tif (auth) {\n\t\t\theaders[\"Authorization\"] = auth;\n\t\t}\n\n\t\t// TODO: show a loading UI while uploading\n\t\t// TODO: show a cancel button\n\t\tlet resp = await fetch(endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: file,\n\t\t\theaders,\n\t\t\tcredentials: \"include\",\n\t\t});\n\n\t\tif (!resp.ok) {\n\t\t\tthrow new Error(`HTTP request failed (${resp.status})`);\n\t\t}\n\n\t\tlet loc = resp.headers.get(\"Location\");\n\t\tif (!loc) {\n\t\t\tthrow new Error(\"filehost response missing Location header field\");\n\t\t}\n\n\t\tlet uploadURL = new URL(loc, endpoint);\n\n\t\tthis.setState((state) => {\n\t\t\tif (state.text) {\n\t\t\t\treturn { text: state.text + \" \" + uploadURL.toString() };\n\t\t\t} else {\n\t\t\t\treturn { text: uploadURL.toString() };\n\t\t\t}\n\t\t});\n\t}\n\n\thandleWindowKeyDown(event) {\n\t\t// If an or \n\t\t\t\t\t
    \n\t\t\t\t\t${this.props.children}\n\t\t\t\t\n\t\t\t\n\t\t`;\n\t}\n}\n"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","l","u","t","i","r","f","$b2a774aae58c7b4e$var$n","$b2a774aae58c7b4e$export$41c562ebe57d11e2","$b2a774aae58c7b4e$var$u","$b2a774aae58c7b4e$var$i","$b2a774aae58c7b4e$var$o","$b2a774aae58c7b4e$var$r","$b2a774aae58c7b4e$var$f","$b2a774aae58c7b4e$var$e","$b2a774aae58c7b4e$var$c","$b2a774aae58c7b4e$var$s","$b2a774aae58c7b4e$var$a","$b2a774aae58c7b4e$var$h","$b2a774aae58c7b4e$var$v","$b2a774aae58c7b4e$var$p","$b2a774aae58c7b4e$var$y","Array","isArray","$b2a774aae58c7b4e$var$d","$b2a774aae58c7b4e$var$_","parentNode","removeChild","$b2a774aae58c7b4e$export$c8a8987d4410bf2d","o","arguments","length","children","call","defaultProps","$b2a774aae58c7b4e$var$b","type","props","key","ref","__k","__","__b","__e","__d","__c","constructor","__v","__i","__u","vnode","$b2a774aae58c7b4e$export$7d1e3a5e95ceca43","current","$b2a774aae58c7b4e$export$ffb0004e005737fa","$b2a774aae58c7b4e$export$16fa2f45be04daa8","context","$b2a774aae58c7b4e$var$x","$b2a774aae58c7b4e$var$P","push","$b2a774aae58c7b4e$var$S","__r","debounceRendering","c","sort","shift","__P","$b2a774aae58c7b4e$var$O","__n","ownerSVGElement","$b2a774aae58c7b4e$var$j","$b2a774aae58c7b4e$var$C","base","$b2a774aae58c7b4e$var$$","a","p","y","d","_","g","b","$b2a774aae58c7b4e$var$I","String","$b2a774aae58c7b4e$var$A","$b2a774aae58c7b4e$var$q","$b2a774aae58c7b4e$var$N","isConnected","$b2a774aae58c7b4e$var$H","insertBefore","nextSibling","nodeType","$b2a774aae58c7b4e$var$F","setProperty","test","$b2a774aae58c7b4e$var$L","style","cssText","replace","toLowerCase","slice","addEventListener","removeEventListener","removeAttribute","setAttribute","$b2a774aae58c7b4e$var$M","event","h","m","x","C","P","S","I","H","T","A","contextType","value","__E","prototype","render","$b2a774aae58c7b4e$var$B","sub","state","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","forEach","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","indexOf","$b2a774aae58c7b4e$var$z","w","k","localName","document","createTextNode","createElementNS","createElement","is","data","childNodes","attributes","name","__html","innerHTML","diffed","some","unmount","componentWillUnmount","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","then","bind","resolve","setTimeout","$ea6c2efa7087cd4a$var$n","assign","apply","$ea6c2efa7087cd4a$var$t","Map","$efca0cb2e3ea1e67$exports","$efca0cb2e3ea1e67$export$7254cc27399e90bd","$efca0cb2e3ea1e67$export$efdc1e5bdb609bb","$efca0cb2e3ea1e67$export$b9ca061da17f2d30","$efca0cb2e3ea1e67$export$c019608e5b5bb4cb","$efca0cb2e3ea1e67$export$41c562ebe57d11e2","$efca0cb2e3ea1e67$export$28075db42e06f164","$efca0cb2e3ea1e67$export$21042e7280c1baba","$efca0cb2e3ea1e67$export$13e2537ceeaf8a3a","$efca0cb2e3ea1e67$export$aad8462122ac592b","$efca0cb2e3ea1e67$export$56d1f1cb1f3c0e96","$efca0cb2e3ea1e67$export$7612db19fb8beb1e","$efca0cb2e3ea1e67$export$821627edc2d26f5f","$efca0cb2e3ea1e67$export$2cd8252107eb640b","$efca0cb2e3ea1e67$export$660b2ee2d4fb4eff","$efca0cb2e3ea1e67$export$71aa6c912b956294","$efca0cb2e3ea1e67$export$e0969da9b8fb378d","$efca0cb2e3ea1e67$var$assign","target","properties","$efca0cb2e3ea1e67$var$numeric","$efca0cb2e3ea1e67$var$ascii","$efca0cb2e3ea1e67$var$alpha","$efca0cb2e3ea1e67$var$asciinumeric","$efca0cb2e3ea1e67$var$alphanumeric","$efca0cb2e3ea1e67$var$domain","$efca0cb2e3ea1e67$var$emoji","$efca0cb2e3ea1e67$var$whitespace","$efca0cb2e3ea1e67$var$addToGroups","flags","groups","group","token","j","jr","jd","accepts","go","input","nextState","regex","has","exactOnly","ta","inputs","next","tt","tr","regexp","ts","len","templateState","$efca0cb2e3ea1e67$var$flagsForToken","result","$efca0cb2e3ea1e67$var$ta","$efca0cb2e3ea1e67$var$tr","$efca0cb2e3ea1e67$var$ts","$efca0cb2e3ea1e67$var$tt","$efca0cb2e3ea1e67$var$WORD","$efca0cb2e3ea1e67$var$UWORD","$efca0cb2e3ea1e67$var$LOCALHOST","$efca0cb2e3ea1e67$var$UTLD","$efca0cb2e3ea1e67$var$SCHEME","$efca0cb2e3ea1e67$var$SLASH_SCHEME","$efca0cb2e3ea1e67$var$OPENBRACE","$efca0cb2e3ea1e67$var$CLOSEBRACE","$efca0cb2e3ea1e67$var$OPENBRACKET","$efca0cb2e3ea1e67$var$CLOSEBRACKET","$efca0cb2e3ea1e67$var$OPENPAREN","$efca0cb2e3ea1e67$var$CLOSEPAREN","$efca0cb2e3ea1e67$var$OPENANGLEBRACKET","$efca0cb2e3ea1e67$var$CLOSEANGLEBRACKET","$efca0cb2e3ea1e67$var$FULLWIDTHLEFTPAREN","$efca0cb2e3ea1e67$var$FULLWIDTHRIGHTPAREN","$efca0cb2e3ea1e67$var$LEFTCORNERBRACKET","$efca0cb2e3ea1e67$var$RIGHTCORNERBRACKET","$efca0cb2e3ea1e67$var$LEFTWHITECORNERBRACKET","$efca0cb2e3ea1e67$var$RIGHTWHITECORNERBRACKET","$efca0cb2e3ea1e67$var$FULLWIDTHLESSTHAN","$efca0cb2e3ea1e67$var$FULLWIDTHGREATERTHAN","$efca0cb2e3ea1e67$var$AMPERSAND","$efca0cb2e3ea1e67$var$APOSTROPHE","$efca0cb2e3ea1e67$var$ASTERISK","$efca0cb2e3ea1e67$var$BACKSLASH","$efca0cb2e3ea1e67$var$BACKTICK","$efca0cb2e3ea1e67$var$CARET","$efca0cb2e3ea1e67$var$COLON","$efca0cb2e3ea1e67$var$COMMA","$efca0cb2e3ea1e67$var$DOLLAR","$efca0cb2e3ea1e67$var$EQUALS","$efca0cb2e3ea1e67$var$EXCLAMATION","$efca0cb2e3ea1e67$var$HYPHEN","$efca0cb2e3ea1e67$var$PERCENT","$efca0cb2e3ea1e67$var$PIPE","$efca0cb2e3ea1e67$var$PLUS","$efca0cb2e3ea1e67$var$POUND","$efca0cb2e3ea1e67$var$QUERY","$efca0cb2e3ea1e67$var$QUOTE","$efca0cb2e3ea1e67$var$SEMI","$efca0cb2e3ea1e67$var$SLASH","$efca0cb2e3ea1e67$var$TILDE","$efca0cb2e3ea1e67$var$UNDERSCORE","$efca0cb2e3ea1e67$var$EMOJI$1","$efca0cb2e3ea1e67$var$tk","freeze","__proto__","WORD","UWORD","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI","SYM","$efca0cb2e3ea1e67$var$ASCII_LETTER","$efca0cb2e3ea1e67$var$LETTER","$efca0cb2e3ea1e67$var$EMOJI","$efca0cb2e3ea1e67$var$DIGIT","$efca0cb2e3ea1e67$var$SPACE","ASCII_LETTER","LETTER","EMOJI_VARIATION","DIGIT","SPACE","$efca0cb2e3ea1e67$var$tlds","$efca0cb2e3ea1e67$var$utlds","str","index","second","first","charCodeAt","char","$efca0cb2e3ea1e67$var$fastts","defaultt","$efca0cb2e3ea1e67$var$decodeTlds","encoded","words","stack","popDigitCount","digits","join","popCount","parseInt","substring","pop","$efca0cb2e3ea1e67$var$defaults","defaultProtocol","events","format","$efca0cb2e3ea1e67$var$noop","formatHref","nl2br","tagName","rel","validate","truncate","Infinity","className","ignoreTags","opts","defaultRender","ignoredTags","uppercaseIgnoredTags","toUpperCase","val","ir","check","toString","operator","isCallable","option","getObj","obj","renderFn","defaults","Options","tokens","tk","Token","isLink","toHref","scheme","toFormattedString","options","formatted","toFormattedHref","startIndex","endIndex","toObject","protocol","href","start","end","toFormattedObject","formattedHref","content","attrs","eventListeners","class","$efca0cb2e3ea1e67$var$Email","$efca0cb2e3ea1e67$var$Text","$efca0cb2e3ea1e67$var$Nl","$efca0cb2e3ea1e67$var$Url","hasProtocol","MultiToken","Base","createTokenClass","Email","Text","Nl","Url","$efca0cb2e3ea1e67$var$makeState","arg","$efca0cb2e3ea1e67$var$initMultiToken","Multi","startIdx","endIdx","$efca0cb2e3ea1e67$var$warn","console","warn","$efca0cb2e3ea1e67$var$warnAdvice","$efca0cb2e3ea1e67$var$INIT","scanner","parser","tokenQueue","pluginQueue","customSchemes","initialized","plugin","Error","optionalSlashSlash","$efca0cb2e3ea1e67$var$init$2","Start","Num","Word","UWord","Ws","Emoji","wordjr","uwordjr","tld","ascii","utld","alpha","slashscheme","sch","$efca0cb2e3ea1e67$var$init$1","_ref","qsAccepting","domain","concat","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","numeric","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","$efca0cb2e3ea1e67$var$run","cursor","multis","textTokens","secondState","multiLength","latestAccepting","sinceAccepts","subtokens","$efca0cb2e3ea1e67$var$run$1","iterable","charCount","charCursor","tokenLength","charsSinceAccepts","filtered","$3bbe59931da17a80$export$c0bb0b647f701bb5","$bd3c59ab25aed5ca$var$tagEscapeMap","$bd3c59ab25aed5ca$var$tagUnescapeMap","fromEntries","entries","map","from","to","$bd3c59ab25aed5ca$export$ede4b2e0172bbdb1","tags","split","parts","seq","endsWith","$bd3c59ab25aed5ca$export$c27de7dba30c634a","undefined","ch","$bd3c59ab25aed5ca$export$3059e96a5fe807c3","host","user","$bd3c59ab25aed5ca$export$f2f615077a189f21","msg","prefix","command","params","startsWith","$bd3c59ab25aed5ca$export$25868d1e8e76735f","keys","last","$bd3c59ab25aed5ca$export$4812b7165edd26af","allowedPrefixes","$bd3c59ab25aed5ca$var$alphaNum","RegExp","$bd3c59ab25aed5ca$var$space","$bd3c59ab25aed5ca$var$isWordBoundary","$bd3c59ab25aed5ca$export$e6127cc7fe7395c3","cmd","$bd3c59ab25aed5ca$export$3ae94a2503e890a1","date","YYYY","getUTCFullYear","padStart","MM","getUTCMonth","DD","getUTCDate","hh","getUTCHours","mm","getUTCMinutes","ss","getUTCSeconds","sss","getUTCMilliseconds","$bd3c59ab25aed5ca$export$60937d95e568734f","ctcp","text","param","$bd3c59ab25aed5ca$export$23c4b2cbd0633e6b","raw","parse","tok","delete","esc","fromCharCode","caseMapping","$bd3c59ab25aed5ca$export$39aea81548242927","byName","error","RFC1459","monitor","whox","chanTypes","statusMsg","network","chatHistory","bouncerNetID","chanModes","stdChanModes","bot","userLen","hostLen","lineLen","filehost","ASCII","out","RFC1459Strict","$bd3c59ab25aed5ca$var$mapIterator","it","done","Symbol","iterator","$bd3c59ab25aed5ca$export$6296a711f00288b1","caseMap","cm","size","kv","values","$bd3c59ab25aed5ca$export$3b27c9ff97cdb350","sep","memberships","mode","$bd3c59ab25aed5ca$export$f4751a564f6d84a3","batch","parent","$bd3c59ab25aed5ca$export$64ec8def5466157c","realname","nick","$bd3c59ab25aed5ca$export$4b3d9a5bae55976","loc","enttype","entity","decodeURIComponent","$bd3c59ab25aed5ca$export$b1ef46223b559f9d","encodeURIComponent","$bd3c59ab25aed5ca$export$e3d1e02a8f18f40e","available","enabled","Set","addAvailable","subCmd","args","cap","add","requestAvailable","filter","$71e07b0506970322$var$alphabet","$71e07b0506970322$export$c564cdbbe6da493","window","TextEncoder","btoa","bytes","encoder","encode","trailing","u24","u8","u16","$6796cfbd59091fe3$var$permanentCaps","$6796cfbd59091fe3$var$WHOX_FIELDS","$6796cfbd59091fe3$var$FALLBACK_SERVER_PREFIX","$6796cfbd59091fe3$var$lastLabel","$6796cfbd59091fe3$var$lastWhoxToken","$6796cfbd59091fe3$var$IRCError","$6796cfbd59091fe3$var$Backoff","min","max","reset","dur","$6796cfbd59091fe3$export$2e2bcd8739ae039","EventTarget","Status","DISCONNECTED","CONNECTING","REGISTERING","REGISTERED","status","serverPrefix","supportsCap","caps","isupport","ws","url","username","pass","saslPlain","saslExternal","saslOauthBearer","bouncerNetwork","ping","eventPlayback","debug","batches","autoReconnect","reconnectTimeoutID","reconnectBackoff","pingIntervalID","pendingCmds","WHO","CHATHISTORY","monitored","pendingLists","whoxQueries","reconnect","disconnect","log","setStatus","WebSocket","err","dispatchError","cause","handleOpen","handleMessage","code","navigator","onLine","delay","info","clearTimeout","handleOnline","setPingInterval","close","dispatchEvent","CustomEvent","detail","send","pushPendingList","endPendingList","list","msgBatch","deleteBatch","prevMaxMonitorTargets","updateCaseMapping","maxMonitorTargets","targets","handleCap","challengeStr","newNick","isMyNick","enter","message","authenticate","mechanism","supportsSASL","initialResp","password","promise","roundtrip","who","mask","fields","internal","parseWhoReply","finally","catch","hostname","server","account","whois","targetCM","reply","mech","saslCap","includes","checkAccountRegistrationCap","requestCaps","wantCaps","isServer","isChannel","isNick","sec","clearInterval","setInterval","label","reject","removeEventListeners","msgLabel","$bd3c59ab25aed5ca$export$ec840f96613effe2","isError","handleStatus","capture","channel","fetchBatch","batchType","batchName","messages","roundtripChatHistory","fetchHistoryBefore","before","limit","Math","more","fetchHistoryBetween","after","time","fetchHistoryTargets","t1","t2","assert","latestMessage","listBouncerNetworks","networks","id","unmonitor","createBouncerNetwork","registerAccount","email","verificationRequired","verifyAccount","supportsReadMarker","fetchReadMarker","setReadMarker","$572a887a57d3418e$var$formatQueryString","$572a887a57d3418e$export$9326d7767c1b7bbc","resp","fetch","ok","statusText","json","issuer","authorization_endpoint","token_endpoint","response_types_supported","$572a887a57d3418e$var$buildPostHeaders","clientId","clientSecret","headers","$572a887a57d3418e$export$97e44d582df4b68f","serverMetadata","redirectUri","grant_type","redirect_uri","client_id","method","body","error_description","$572a887a57d3418e$export$e03aeda7cfb66622","introspection_endpoint","active","registerCustomProtocol","$37d24d778c2f247c$var$IRCChannelToken","$37d24d778c2f247c$export$2e2bcd8739ae039","onClick","links","find","match","suffix","$803ef401580605c5$var$isDigit","$803ef401580605c5$var$isHexColor","$803ef401580605c5$export$6a0f863afc2134d8","registerPlugin","alphanumeric","Prefix","Channel","State","Divider","$fca64bf918d5638f$export$a9b603917c4d9863","SERVER","CHANNEL","NICK","$fca64bf918d5638f$export$ac0b13ba2bbce4d5","$fca64bf918d5638f$export$9be0a2424da959ae","NONE","MESSAGE","HIGHLIGHT","compare","priority","union","$fca64bf918d5638f$export$c49c54eaac29b59a","DELIVERED","READ","$fca64bf918d5638f$export$3ee12e3d13dfa897","FOLD","HIDE","$fca64bf918d5638f$export$8fa45c82eddfe270","Consumer","Provider","splice","$fca64bf918d5638f$export$64b0f097aebd4e10","buf","$fca64bf918d5638f$export$8499bd1ed7c872c2","bufURL","msgid","$fca64bf918d5638f$export$53e73e095c2ac1e2","netName","isBouncer","$fca64bf918d5638f$export$1274528beb7cd977","$fca64bf918d5638f$export$4f7e80d679306a83","$fca64bf918d5638f$export$23261bae4c963bb3","receipt","$fca64bf918d5638f$var$updateState","updater","updated","$fca64bf918d5638f$var$isServerBuffer","$fca64bf918d5638f$var$compareBuffers","localeCompare","$fca64bf918d5638f$var$lastServerID","$fca64bf918d5638f$var$lastBufferID","$fca64bf918d5638f$var$lastMessageKey","$fca64bf918d5638f$export$7254cc27399e90bd","create","servers","buffers","activeBuffer","bouncerNetworks","settings","secondsInTimestamps","bufferEvents","updateServer","updateBuffer","getBuffer","getActiveServerID","serverID","nameCM","createServer","users","supportsSASLPlain","supportsAccountRegistration","reliableUserAccounts","createBuffer","client","bufferList","serverInfo","joined","topic","hasInitialWho","members","unread","prevReadReceipt","storeBouncerNetwork","deleteBouncerNetwork","update","updateUser","version","namreply","membersList","member","offline","away","botFlag","awayMessage","prefixByMode","membership","$bd3c59ab25aed5ca$export$6115b92b9c2241a7","callback","typeByMode","change","plusMinus","modeType","prefixPrivs","letter","addMessage","bufID","$fca64bf918d5638f$var$insertMessage","other","$740325ae3fd2006f$var$Item","$740325ae3fd2006f$var$PREFIX","load","localStorage","getItem","JSON","put","setItem","stringify","removeItem","$740325ae3fd2006f$export$3b637ec8b5dd5146","$740325ae3fd2006f$export$a9ec709c82e011a4","$740325ae3fd2006f$export$a5a6e0b888b2c992","$740325ae3fd2006f$export$a143d493d941bafc","timeout","saveImmediately","save","visibilityState","prev","receipts","closed","names","clear","$0bbd5f20273017a0$var$names","$0bbd5f20273017a0$export$2e2bcd8739ae039","$47db4ea8a56fc107$var$Nick","title","colorIndex","$47db4ea8a56fc107$var$djb2","hash","preventDefault","$47db4ea8a56fc107$var$_Timestamp","showSeconds","timestamp","getHours","getMinutes","getSeconds","toLocaleString","$47db4ea8a56fc107$var$Timestamp","$47db4ea8a56fc107$var$canFoldMessage","$47db4ea8a56fc107$var$LogLine","nextProps","invitee","buffer","onNickClick","onChannelClick","onVerifyClick","createNick","lineClass","isHighlight","reason","Date","$47db4ea8a56fc107$var$FoldGroup","msgs","byCommand","action","nicks","plural","$47db4ea8a56fc107$var$createNickList","lastMsg","firstDate","lastDate","$47db4ea8a56fc107$var$notificationsSupported","Notification","permission","$47db4ea8a56fc107$var$NotificationNagger","nag","handleClick","shouldNag","requestPermission","$47db4ea8a56fc107$var$ProtocolHandlerNagger","location","origin","pathname","registerProtocolHandler","bouncerName","$47db4ea8a56fc107$var$AccountNagger","onAuthClick","onRegisterClick","accDesc","$47db4ea8a56fc107$var$DateSeparator","getTime","toLocaleDateString","year","month","day","$47db4ea8a56fc107$var$UnreadSeparator","$47db4ea8a56fc107$export$2e2bcd8739ae039","serverName","createLogLine","createFoldGroup","nickChanges","mergedMsgs","keep","partIndexes","hasUnreadSeparator","prevDate","foldMessages","lastMonitor","d1","skip","getFullYear","d2","getMonth","getDate","$cd5f528e18548e6d$var$BufferItem","classes","button","onClose","$cd5f528e18548e6d$export$2e2bcd8739ae039","items","onBufferClick","onBufferClose","$94cb31469f63b35c$var$UserStatus","HERE","GONE","OFFLINE","$94cb31469f63b35c$var$NickStatus","textMap","$94cb31469f63b35c$export$2e2bcd8739ae039","fullyConnected","description","actions","joinButton","onJoin","reconnectButton","onReconnect","settingsButton","onOpenSettings","onManageNetwork","onAddNetwork","details","item","desc","$15e0fa56cfe1c276$var$MemberItem","membclass","membmap","$15e0fa56cfe1c276$var$sortMembers","nickA","membA","nickB","membB","$15e0fa56cfe1c276$export$2e2bcd8739ae039","$c6f536f0bcf4fccd$export$2e2bcd8739ae039","rememberMe","autojoin","nickInput","handleInput","handleSubmit","autoconnect","checked","connecting","auth","onSubmit","focus","disabled","serverURL","channels","$b4b4b87f4b38722c$export$2e2bcd8739ae039","$f6fdf5978ceb757f$var$getSiblingBuffer","delta","bufList","findIndex","$f6fdf5978ceb757f$export$63ce3c18bd0f1276","altKey","execute","app","clients","bufferStore","updateDocumentTitle","firstServerBuffer","switchBuffer","ctrlKey","openDialog","$b5b0ab28313e6465$var$getActiveClient","$b5b0ab28313e6465$var$getActiveChannel","$b5b0ab28313e6465$var$setUserHostMode","activeChannel","$b5b0ab28313e6465$var$markServerBufferUnread","setBufferState","$b5b0ab28313e6465$var$join","usage","open","$b5b0ab28313e6465$var$kick","$b5b0ab28313e6465$var$ban","$b5b0ab28313e6465$var$givemode","$b5b0ab28313e6465$export$2e2bcd8739ae039","openHelp","$b5b0ab28313e6465$var$getActiveTarget","privmsg","newRealname","query","$af9ce1e202e3524a$var$KeyBindingsHelp","binding","matchMedia","matches","$af9ce1e202e3524a$var$CommandsHelp","$af9ce1e202e3524a$export$2e2bcd8739ae039","$03b5941ba753e1f6$var$defaultParams","port","nickname","$03b5941ba753e1f6$export$2e2bcd8739ae039","prevParams","isNew","removeNetwork","onRemove","$368ce7ef0e8c1c36$export$2e2bcd8739ae039","$210f1d422ab09f4c$export$2e2bcd8739ae039","emailRequired","$5855ce19a38be3e6$export$2e2bcd8739ae039","$9fbbfef00d6a25bf$export$2e2bcd8739ae039","onChange","registerProtocol","protocolHandler","showProtocolHandler","onDisconnect","$9b625992f92feff7$var$SwitcherItem","class_","selected","$9b625992f92feff7$var$matchString","$9b625992f92feff7$export$2e2bcd8739ae039","handleKeyUp","getSuggestions","scores","score","$9b625992f92feff7$var$matchBuffer","stopPropagation","move","numSuggestions","$142bbba13add3ea5$export$2e2bcd8739ae039","textInput","lastAutocomplete","handleInputKeyDown","handleInputPaste","handleWindowKeyDown","handleWindowPaste","readOnly","blur","autocomplete","selectionStart","selectionEnd","carretPos","wordStart","wordEnd","word","replacements","replIndex","shiftKey","repl","filename","encodedFilename","clipboardData","files","endpoint","stopImmediatePropagation","file","credentials","uploadURL","URL","activeElement","metaKey","commandOnly","getData","setRangeText","placeholder","maxLen","$9ead1202cd2221f9$var$store","$9ead1202cd2221f9$export$2e2bcd8739ae039","handleScroll","isAtBottom","scrollTop","scrollHeight","offsetHeight","saveScrollPosition","sticky","querySelectorAll","stickTo","stickToKey","el","offsetTop","dataset","scrollKey","restoreScrollPosition","firstChild","querySelector","scrollIntoView","block","onScrollTop","prevProps","$676cb1384c20bf0e$export$2e2bcd8739ae039","handleCloseClick","handleBackdropClick","handleKeyDown","dismiss","onDismiss","autofocus","$5c2a91b7f6173cd8$var$baseConfig","$5c2a91b7f6173cd8$var$configPromise","config","$5c2a91b7f6173cd8$var$getReceipt","stored","$5c2a91b7f6173cd8$var$lastErrorID","$5c2a91b7f6173cd8$export$2e2bcd8739ae039","connectParams","connectForm","loading","dialog","dialogData","openPanels","memberList","$5c2a91b7f6173cd8$var$isProduction","endOfHistory","composer","switchToChannel","autoOpenURL","messageNotifications","baseTitle","lastFocusPingDate","handleConnectSubmit","handleJoinSubmit","handleBufferListClick","handleBufferListClose","toggleBufferList","toggleMemberList","handleComposerSubmit","handleChannelClick","handleNickClick","handleBufferScrollTop","dismissDialog","handleAddNetworkClick","handleNetworkSubmit","handleNetworkRemove","handleDismissError","handleAuthSubmit","handleRegisterSubmit","handleVerifyClick","handleVerifySubmit","handleOpenSettingsClick","handleSettingsChange","handleSettingsDisconnect","handleSwitchSubmit","handleWindowFocus","handleConfig","oauth2","queryParams","search","pair","random","substr","showError","redirectOauth2Authorize","searchParams","history","replaceState","exchangeOauth2Code","connect","$572a887a57d3418e$export$425e62132119a96f","scope","response_type","client_secret","access_token","dismissError","setServerState","syncBufferUnread","sendReadReceipt","storedBuffer","readReceipt","whoUserBuffer","whoChannelBuffer","markBufferAsRead","notif","bufferName","numUnread","prepareChatMessage","$bd3c59ab25aed5ca$export$fdd47ba7a4ecfeff","left","right","$bd3c59ab25aed5ca$var$isURIPrefix","addChatMessage","bufName","handleChatMessage","deliveryReceipt","isDelivered","isRead","msgUnread","kind","$5c2a91b7f6173cd8$var$showNotification","requireInteraction","tag","comand","hasFocus","proto","path","errorID","serverFromBouncerNetwork","bouncerNetworkID","routeMessage","affectedBuffers","chatHistoryBatch","openNewBuffer","destBuffers","fetchBacklog","serverHost","openURL","findBouncerNetIDByHost","bound","lastReceipt","$5c2a91b7f6173cd8$var$getLatestReceipt","now","lastIndexOf","disconnectAll","isFirstServer","executeCommand","closeBufferList","closeMemberList","handleJoinClick","fromList","chanNames","setDialogLoading","setLoading","handleAuthClick","handleRegisterClick","handleManageNetworkClick","tls","newClient","byKey","candidates","dialogBody","privmsgMaxLen","activeServer","activeBouncerNetwork","activeClient","bufferHeader","activeUser","composerReadOnly","repeat","MODE_HYDRATE","vnodeId","isValidElement","rerenderQueue","prevDebounce","defer","depthSort","eventClock","eventProxy","eventProxyCapture","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","removeNode","node","normalizedProps","createVNode","original","createRef","Fragment","BaseComponent","this","getDomSibling","childIndex","sibling","updateParentDomPointers","child","enqueueRender","process","renderQueueLength","component","newVNode","oldVNode","oldDom","commitQueue","refQueue","diff","commitRoot","diffChildren","parentDom","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","oldChildren","newChildrenLength","constructNewChildrenArray","applyRef","insert","skewedIndex","matchingIndex","oldChildrenLength","remainingOldChildren","skew","findMatchingIndex","parentVNode","toChildArray","setStyle","dom","oldValue","useCapture","_attached","createEventProxy","eventHandler","_dispatched","tmp","oldProps","oldState","snapshot","clearProcessingException","newProps","provider","componentContext","renderHook","count","newType","outer","doRender","diffElementNodes","root","cb","newHtml","oldHtml","newChildren","inputValue","skipRemove","replaceNode","hydrate","cloneElement","createContext","defaultValue","contextId","contextValue","subs","ctx","_props","old","errorInfo","ctor","handled"],"version":3,"file":"index.2eb06fda.js.map"}