-
-
- Use
↑ ,
↓ , and
Enter to
- navigate the results.
+
-
- Querying took 0 ms. Redrawing took
- 0 ms.
-
-
-
@@ -200,6 +171,10 @@
project description
+
+
@@ -244,6 +219,12 @@
|
+
+
+
|
+
diff --git a/docs/project/description.html b/docs/project/description.html
deleted file mode 100644
index 21de4fe3..00000000
--- a/docs/project/description.html
+++ /dev/null
@@ -1,888 +0,0 @@
-
-
-
-
-
-
-
Project Description
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Project Description
-
Project Description
-
Project Description
-
-
-
-
-
-
- ➡️
-
-
-
-
- 🚧 Under construction
Inspiration The COVID-19 pandemic has popularised the concept and the use of point-of-care
- testing kits. Inspired by this, our team is attempting to develop a novel
- point-of-care testing kit that is versatile to detect different types of
- antibiotic resistance. We initially discovered a potential tool that might help
- us in constructing our kit, which is the 8-17 deoxyribozymes (DNAzymes),
- together with the stem-loops and fluoroprobes-containing oligonucleotides. These
- DNAzymes are capable of receiving inputs at their stem-loops, which will then
- expose their catalytic sites, and cause cleavage of the oligonucleotides to
- produce fluorescence [1]. Using this biological logic gate system, we were
- planning to utilise the DNAzymes stem-loops to detect resistance genes. However,
- upon consulting the ideas with our Principal Investigators, we realised that a
- detection kit that depends on fluorescence-based results is not the ideal choice
- for constructing a point-of-care diagnostic kit. Thus, we shifted our focus to
- develop a kit that generates colorimetric results instead.
-
- Background
Antibiotic Resistance Antibiotics, used for over a century to treat bacterial infections, are one
- of the most successful medical interventions. However, antibiotic resistance
- has increased due to overuse, causing previously manageable diseases to
- resurface. Many infectious diseases, which were wiped out by antibiotics,
- have become a more severe problem in recent years.
In a study published in 2022, it was estimated that 4.95 millions (95% CI
- 3.62-6.57 millions) of deaths were associated with bacterial antimicrobial
- resistance (AMR) in 2019, and 1.27 millions of it were caused by bacterial
- AMR [2]. These figures indicate that deaths due to AMR represent a major
- global health concern, comparable in scale to leading causes of mortality
- such as ischemic heart disease, stroke, and chronic obstructive pulmonary
- disease [3].
Out of the 4.95 millions of bacterial AMR associated deaths, 4.3 millions
- are occurring in low-income and middle-income countries (LMICs) [4]. This
- indicates a necessary step up in LMICs’ infection prevention and control, as
- well as access to affordable diagnosis. According to the Lancet Series on
- Antimicrobial Resistance, if interventions are implemented to align
- infection prevention and control standards in LMICs’ healthcare settings
- with the standards in high-income countries, we will be able to prevent up
- to 337,000 AMR associated deaths annually [4].
The rise of antibiotic resistant trends is mainly driven by the high
- selection pressure caused by the increasing use and misuse of antibiotics
- over the years. Over the past two decades, global antimicrobial use has
- increased by 46% [3]. The usage of antibiotics to cure infections has
- actually provided advantages for those bacteria that have resistance,
- causing the further spread of resistant bacteria since they survive better
- in the environment compared to the susceptible ones [3].
In the natural process, horizontal gene transfer might also occur among
- species of bacteria. This process enables bacteria to exchange their genetic
- material, including antibiotic resistance genes (ARGs), across diverse
- species, which greatly facilitates collaboration among bacterial populations
- in the development of multidrug resistance (MDR) [5]. Moreover, MDR leads to
- the escalation in severity of the problem. The most evident instance is
- Superbugs, a strain of bacteria that are resistant to several types of
- antibiotics, which greatly challenges the treatment process of a bacterial
- infection.
On a larger scope, the problem of AMR causes larger problems than just
- increased challenge in treating bacterial infection. It also complicates the
- treatment of chronic kidney disease, diabetes and associated urinary tract
- and foot infections, chronic obstructive pulmonary disease, liver cirrhosis,
- as well as surgical care due to the risk of exposure to resistant infections
- [3]. In addition, AMR impedes progress towards the global childhood survival
- rate targeted by the Sustainable Development Goal 3. This is because one
- third of newborn deaths are caused by infections, and half of these
- infection-related deaths are specifically attributed to sepsis [3].
- Concerningly, the pathogens driving these deadly infections are becoming
- increasingly resistant to the most widely used antibiotic treatments [3].
Furthermore, the rise of antimicrobial resistance has diminished the
- effectiveness of previously useful antimicrobial drugs, causing access to
- antimicrobials that were previously considered second-line treatments has
- become increasingly crucial [3]. The Organization for Economic Cooperation
- and Development (OECD) projects a twofold surge in resistance to last-resort
- antibiotics by 2035 compared to 2005 levels [6].
In addressing the problems of antibiotic resistance, the Lancet series in
- 2024 proposed three goals to be achieved globally by 2030; 10% decrease in
- deaths from AMR, 20% reduction in inappropriate human antibiotic use, and
- 30% reduction in inappropriate animal antibiotic use [7]. These goals can
- only be achieved with optimised surveillance, including diagnosis to prevent
- the misuse of ineffective antibiotics which only further drive resistance.
- However, current technologies for diagnosing antibiotic resistance, such as
- minimum inhibitory concentration (MIC), require lengthy culturing, while
- genetic tests like PCR necessitate trained personnel. Additionally, routine
- bacteriological culture testing is available in only 1.3% of laboratories in
- sub-Saharan Africa [8]. To counteract the rising trend of antibiotic
- resistance, and to provide better access to diagnostic kits in low-resource
- settings, a cheaper, faster, and simpler technology is needed.
Klebsiella pneumoniae Klebsiella pneumoniae has often been linked to causing pneumonia,
- especially in people who have alcohol use disorder or diabetes mellitus [9].
- It is a gram-negative, encapsulated, and non-motile type of bacterium found
- in the environment, mainly colonising human mucosal surfaces of the
- oropharynx and gastrointestinal (GI) tract [9].
- Klebsiella pneumoniae infection is best treated with third- and
- fourth-generation cephalosporins, quinolones, or carbapenems [10]. However,
- over the years, Klebsiella pneumoniae has shown to produce
- extended-spectrum beta-lactamase (ESBL) that breaks down and inactivates
- beta-lactam antibiotics, including cephalosporin, rendering third-generation
- cephalosporin drugs ineffective for treating
- Klebsiella pneumoniae infections.
Additionally, cases of carbapenem-resistant
- Klebsiella pneumoniae have also been discovered. This thus
- classifies Klebsiella pneumonia as one of the Carbapenemase-producing
- Enterobacteriaceae (CPE). Similar to beta-lactamase, carbapenem resistance
- is conferred by the production of the carbapenemase enzyme which is capable
- of hydrolyzing and disabling the drug molecule [11], [12]. More
- concerningly, carbapenemases are encoded on plasmids, for instance, as
- blaKPC and blaNDM-1 [13]. This means that it can be easily transferred
- between bacteria through horizontal gene transfer, resulting in a more
- vigorous spread of the resistance [14].
In the estimated 1.27 million deaths caused by AMR,
- Klebsiella pneumoniae was one of the six leading pathogens [2]. In
- sub-Saharan Africa, Klebsiella pneumoniae contributed to 19.9%
- deaths caused by AMR and 17.5% of AMR-associated mortality [2]. Other than
- that, Klebsiella pneumoniae is one of the most common causes of
- neonatal sepsis in low resource settings, such as in sub-Saharan Africa [3],
- [15]. Although it is estimated that only 3-5% of all community-acquired
- pneumonia in Western culture is related to
- Klebsiella pneumoniae infection, in developing countries such as
- African countries, for example, community-acquired
- Klebsiella pneumoniae accounts for roughly 15% of all pneumonia
- cases [9].
In terms of its resistant variants, resistant
- Klebsiella pneumoniae commonly causes community-acquired urinary
- tract infections along with resistant Escherichia coli, Proteus mirabilis,
- and Staphylococcus saprophyticus [3]. According to the World Health
- Organization, Klebsiella pneumoniae showed elevated resistance
- levels against major antibiotics, compromising the effectiveness of these
- last-resort drugs and increasing the risk of untreatable infections [6].
- This indicates that Klebsiella pneumoniae is one of the most
- significant pathogens when it comes to antibiotic resistance. Additionally,
- the 2024 Lancet series emphasised on the needs for novel strategies to
- address the burden of ESKAPE pathogens, which includes
- Klebsiella pneumoniae [4], [13].
With this regard, we consider Klebsiella pneumoniae as our
- starting focus in developing our diagnosis method. With its level of
- urgency, especially in low-resource settings, performing diagnosis of
- resistant Klebsiella pneumoniae in a simple and low-cost manner
- will benefit the community for a more effective usage of antibiotics as well
- as for enhanced surveillance.
-
- Our Solution We are developing a point-of-care test kit, ResiSense, for more efficient
- diagnosis, using cell-free systems. This proposed testing system consists of
- three parts: target gene extraction, rolling circle amplification (RCA), and
- signal expression.
After cell lysis releases bacterial DNA, a snippet of the target gene, which is
- responsible for antibiotic resistance, is cut using a pair of restriction
- enzymes and nickase. The phi-29 polymerase aids in releasing the target gene as
- ss-DNA. This target gene serves as a primer and triggers the formation of
- peroxidase-mimicking DNAzymes through rolling circle amplification (RCA).
- Finally, the G-quadruplex DNAzymes cause a colour change in the solution,
- indicating the presence of antibiotic-resistant genes in bacteria.
All processes in our detection system are designed to occur in isothermal
- conditions, specifically in room temperature. Our aim is to create a versatile,
- easily programmable system that can detect various antibiotic resistance genes,
- starting with those related to Klebsiella pneumoniae .
-
- Our Vision As reported in the 2024 Lancet Series on Antimicrobial Resistance, preserving
- the effectiveness of antibiotics will depend on accurate and timely diagnosis of
- bacterial infections [7]. However, the scaling up of diagnostic technologies
- faces a number of challenges, including technological, economic, and behavioural
- challenges [7]. Thus, this project is mainly about developing an affordable,
- simple, yet accurate diagnostic kit, aimed to provide better accessibility to
- diagnostic technologies in low-resource settings by eliminating the problems of
- lengthy culturing, the need for specialised machines, and trained personnel.
After successfully running our systems to detect the resistance genes of
- Klebsiella pneumoniae , we are planning to expand the project to detect
- resistance genes of other bacterial species, as well as the species itself. We
- understand that diagnosing resistance is insufficient without the information of
- species. Thus, in the future, we will adapt the detection system to also
- recognize and report the bacteria species that cause the infection.
In the long run, with the lower cost and decent turnaround time, our technology
- has the potential to help doctors choose the right antibiotics to prescribe,
- saving lives that would not be possible to save without access to MALDI-TOF. Our
- technology also helps prevent the spread of antibiotic resistance by alerting
- the medical professionals of its existence. Financially, we target to open up a
- new market that was previously unreachable with the current technologies.
- Lastly, we aim to create an impact in research by developing a methodology that
- could be readily adapted to detecting other segments of genes in any organism,
- helping other researchers develop accessible diagnostic tests based on our
- platform.
-
- References
- M. N. Stojanović and D. Stefanović, “Deoxyribozyme-based half-adder,”
- Journal of the American Chemical Society, vol. 125, no. 22, pp. 6673–6676,
- May 2003.
- ⤴️
- C. J. Murray et al., “Global burden of bacterial antimicrobial resistance
- in 2019: A systematic analysis,” The Lancet, vol. 399, no. 10325, pp.
- 629–655, Feb. 2022.
- ⤴️
- I. N. Okeke et al., “The scope of the Antimicrobial Resistance Challenge,”
- The Lancet, vol. 403, no. 10442, pp. 2426–2438, Jun. 2024.
- ⤴️
- J. A. Lewnard et al., “Burden of bacterial antimicrobial resistance in
- low-income and middle-income countries avertible by existing interventions:
- An evidence review and modelling analysis,” The Lancet, vol. 403, no. 10442,
- pp. 2439–2454, Jun. 2024.
- ⤴️
- D. Sun, K. Jeannot, Y. Xiao, and C. W. Knapp, “Editorial: Horizontal gene
- transfer mediated bacterial antibiotic resistance,” Frontiers in
- Microbiology, vol. 10, Aug. 2019.
- ⤴️
- “Antimicrobial resistance,” World Health Organization,
- ⤴️
- (accessed Apr. 14, 2024).
- “Sustainable Access to Effective Antibiotics: An Executive Summary for The
- Lancet’s Series,” The Lancet Series on Antimicrobial Resistance: The need
- for sustainable access to effective antibiotics,
- ⤴️
- (accessed Jun. 17, 2024).
-
- R. Laxminarayan et al., “Expanding antibiotic, vaccine, and diagnostics
- development and access to tackle antimicrobial resistance,” The Lancet, vol.
- 403, no. 10443, pp. 2534–2550, Jun. 2024.
- ⤴️
- J. V. Ashurst and A. Dawson, "Klebsiella Pneumonia," StatPearls [Internet].
- Treasure Island (FL): StatPearls Publishing, Jan. 2024. [Online]. Available:
- ⤴️ . (accessed Jun. 18, 2024).
- S. E. Prince, K. A. Dominger, B. A. Cunha, and N. C. Klein, “Klebsiella
- pneumoniae pneumonia,” Heart & Lung, vol. 26, no. 5, pp. 413–417,
- Sep./Oct. 1997.
- ⤴️
- L. D. Hughes, A. Aljawadi, and A. Pillai, “An overview of carbapenemase
- producing Enterobacteriaceae (CPE) in Trauma and Orthopaedics,” Journal of
- Orthopaedics, vol. 16, no. 6, pp. 455–458, Nov./Dec. 2019.
- ⤴️
- T. R. Walsh, “Emerging Carbapenemases: A global perspective,” International
- Journal of Antimicrobial Agents, vol. 36, pp. S8–S14, Nov. 2010.
- ⤴️
- S. Santajit and N. Indrawattana, “Mechanisms of Antimicrobial Resistance in
- ESKAPE Pathogens,” BioMed Research International, vol. 2016, Jan. 2016.
- ⤴️
- “Carbapenemase-producing Enterobacteriaceae (CPE),” National Institute for
- Communicable Diseases,
- ⤴️
- (accessed Jun. 19, 2024).
- U. Okomo et al., “Aetiology of invasive bacterial infection and
- antimicrobial resistance in neonates in sub-Saharan africa: A systematic
- review and meta-analysis in line with the Strobe-ni reporting guidelines,”
- The Lancet Infectious Diseases, vol. 19, no. 11, pp. 1219–1234, Nov. 2019.
- ⤴️
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/scripts/Search.js b/docs/scripts/Search.js
deleted file mode 100644
index 7b5c4562..00000000
--- a/docs/scripts/Search.js
+++ /dev/null
@@ -1,7051 +0,0 @@
-(() => {
- function e(e) {
- return e && e.__esModule ? e.default : e;
- }
- function t(e, t, r, i) {
- Object.defineProperty(e, t, { get: r, set: i, enumerable: !0, configurable: !0 });
- }
- var r = globalThis,
- i = {},
- n = {},
- s = r.parcelRequire8bfa;
- null == s &&
- (((s = function (e) {
- if (e in i) return i[e].exports;
- if (e in n) {
- var t = n[e];
- delete n[e];
- var r = { id: e, exports: {} };
- return (i[e] = r), t.call(r.exports, r, r.exports), r.exports;
- }
- var s = Error("Cannot find module '" + e + "'");
- throw ((s.code = 'MODULE_NOT_FOUND'), s);
- }).register = function (e, t) {
- n[e] = t;
- }),
- (r.parcelRequire8bfa = s));
- var a = s.register;
- a('742Ng', function (r, i) {
- t(r.exports, 'default', () => f);
- var n,
- a,
- o = s('gx5Hu'),
- l = s('lHYGq');
- ((n = a || (a = {})).NORMAL = 'normal'), (n.TITLE = 'title'), (n.CONTENT = 'content');
- let c = Object.freeze(
- new Map([
- ['!', 'title'],
- [':', 'content'],
- ])
- ),
- u = Object.freeze(
- new Map([
- ['normal', [l.IndexableFields.TITLE, l.IndexableFields.CONTENT]],
- ['title', [l.IndexableFields.TITLE]],
- ['content', [l.IndexableFields.CONTENT]],
- ])
- ),
- d = new Map();
- async function h(e, t) {
- e = e.trim();
- let r = d.get(e),
- i = c.get(e[0]) ?? 'normal';
- return (
- 'normal' !== i && (e = e.slice(1).trim()),
- '' === e
- ? { aborted: !0 }
- : {
- aborted: !1,
- searchMode: i,
- results:
- r ??
- (await (async () => {
- let r = await p(i, e, t);
- return d.set(e, r), r;
- })()),
- usedCache: void 0 !== r,
- }
- );
- }
- async function p(t, r, i) {
- let n = [],
- s = performance.now(),
- a = e(o).go(r, i, {
- keys:
- u.get(t) ??
- (() => {
- throw Error(`Search keys not found for search mode ${t}`);
- })(),
- }),
- l = performance.now(),
- c = performance.now();
- a.forEach(e => {
- var i;
- console.log(e);
- let { titleResult: s, contentResult: a } = (() => {
- switch (t) {
- case 'normal':
- return { titleResult: e[0], contentResult: e[1] };
- case 'title':
- return { titleResult: e[0], contentResult: void 0 };
- case 'content':
- return { titleResult: void 0, contentResult: e[0] };
- default:
- throw Error(`Search mode ${t} not implemented`);
- }
- })();
- n.push({
- path: e.obj.path,
- score: e.score,
- title: e.obj.title.target,
- highlightedTitleChunks: void 0 !== s ? h(r, s) : [e.obj.title.target],
- highlightedContentChunks:
- void 0 !== a
- ? h(r, a)
- : [(i = e.obj.content.target).length > 200 ? i.slice(0, 200) + '...' : i],
- });
- });
- let d = performance.now();
- return console.log('Fuzzysort took', l - s, 'ms'), console.log('Compilation took', d - c, 'ms'), n;
- function h(e, t) {
- let r = '
',
- i = ' ',
- n = t.highlight(e => `${r}${e}${i}`);
- if (0 === n.length) return [];
- let s = RegExp(String.raw`^${r}.*${i}$`, 'g'),
- [a, o] = (function (e) {
- let t = [],
- r = [];
- return (
- e.forEach(e => {
- e.match(s)
- ? (r.push(t.length), t.push(e))
- : t.push(
- ...(function (e) {
- for (let t = 0; t < e.length; t++) {
- let r = e[t].split('\n');
- if (r.length > 1) {
- let i = (function (e) {
- let t = [];
- for (let r = 0; r < e.length; r++)
- t.push(e[r]), r < e.length - 1 && t.push('');
- return t;
- })(r);
- e.splice(t, 1, ...i), (t += i.length - 1);
- }
- }
- return e;
- })(e.split(/(?<=\n|\.\s|\?\s|!\s)/g).filter(e => e.length > 0))
- );
- }),
- [t, r]
- );
- })(
- (function (t) {
- let n = [];
- return (
- t.forEach(t => {
- if (t.match(s)) n.push(t);
- else {
- let s = (function (e) {
- let t = RegExp(String.raw`(?=${r})|(?<=${i})`, 'g');
- return e.split(t);
- })(
- (function (t) {
- let n = e
- .split(' ')
- .filter(e => e.length > 0)
- .map(e => e.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')),
- s = RegExp(String.raw`(${n.join('|')})`, 'gi');
- return t.replace(s, `${r}$1${i}`);
- })(t)
- );
- n.push(...s);
- }
- }),
- n
- );
- })(n)
- );
- return (function (e, t) {
- let r = [],
- i = 0;
- for (; i < e.length; ) {
- var n, s;
- let a,
- o = '';
- for (
- ;
- ((n = i),
- (s = a = { isBefore: t.includes(n + 1), isTag: t.includes(n), isAfter: t.includes(n - 1) }))
- .isBefore ||
- s.isTag ||
- s.isAfter;
-
- ) {
- let t = e[i];
- if (void 0 === t || (i++, (o += t), !a.isBefore && a.isAfter)) break;
- }
- o.length > 0 ? r.push(o.trim()) : i++;
- }
- return r;
- })(a, o);
- }
- }
- class f {
- static {
- this.doSearch = h;
- }
- }
- }),
- a('gx5Hu', function (e, t) {
- var r, i;
- (r = e.exports),
- (i = e => {
- var t,
- r,
- i,
- n,
- s = (e, t = '
', r = ' ') => {
- for (
- var i = 'function' == typeof t ? t : void 0,
- n = e.target,
- s = n.length,
- a = e.indexes,
- o = '',
- l = 0,
- c = 0,
- u = !1,
- d = [],
- h = 0;
- h < s;
- ++h
- ) {
- var p = n[h];
- if (a[c] === h) {
- if ((++c, u || ((u = !0), i ? (d.push(o), (o = '')) : (o += t)), c === a.length)) {
- i
- ? ((o += p), d.push(i(o, l++)), (o = ''), d.push(n.substr(h + 1)))
- : (o += p + r + n.substr(h + 1));
- break;
- }
- } else u && ((u = !1), i ? (d.push(i(o, l++)), (o = '')) : (o += r));
- o += p;
- }
- return i ? d : o;
- },
- a = e => {
- 'number' == typeof e ? (e = '' + e) : 'string' != typeof e && (e = '');
- var t = x(e);
- return c(e, {
- _targetLower: t._lower,
- _targetLowerCodes: t.lowerCodes,
- _bitflags: t.bitflags,
- });
- };
- class o {
- get indexes() {
- return this._indexes.slice(0, this._indexes.len).sort((e, t) => e - t);
- }
- set indexes(e) {
- return (this._indexes = e);
- }
- highlight(e, t) {
- return s(this, e, t);
- }
- get score() {
- return u(this._score);
- }
- set score(e) {
- this._score = d(e);
- }
- }
- class l extends Array {
- get score() {
- return u(this._score);
- }
- set score(e) {
- this._score = d(e);
- }
- }
- var c = (e, t) => {
- let r = new o();
- return (
- (r.target = e),
- (r.obj = t.obj ?? _),
- (r._score = t._score ?? D),
- (r._indexes = t._indexes ?? []),
- (r._targetLower = t._targetLower ?? ''),
- (r._targetLowerCodes = t._targetLowerCodes ?? _),
- (r._nextBeginningIndexes = t._nextBeginningIndexes ?? _),
- (r._bitflags = t._bitflags ?? 0),
- r
- );
- },
- u = e => (e === D ? 0 : e > 1 ? e : Math.E ** -(((-e + 1) ** 0.04307 - 1) * 2)),
- d = e => (0 === e ? D : e > 1 ? e : 1 - Math.pow(-(Math.log(e) / 2) + 1, 1 / 0.04307)),
- h = e => {
- 'number' == typeof e ? (e = '' + e) : 'string' != typeof e && (e = '');
- var t = x((e = e.trim())),
- r = [];
- if (t.containsSpace) {
- var i = e.split(/\s+/);
- i = [...new Set(i)];
- for (var n = 0; n < i.length; n++)
- if ('' !== i[n]) {
- var s = x(i[n]);
- r.push({
- lowerCodes: s.lowerCodes,
- _lower: i[n].toLowerCase(),
- containsSpace: !1,
- });
- }
- }
- return {
- lowerCodes: t.lowerCodes,
- _lower: t._lower,
- containsSpace: t.containsSpace,
- bitflags: t.bitflags,
- spaceSearches: r,
- };
- },
- p = e => {
- if (e.length > 999) return a(e);
- var t = w.get(e);
- return void 0 !== t || ((t = a(e)), w.set(e, t)), t;
- },
- f = e => {
- if (e.length > 999) return h(e);
- var t = E.get(e);
- return void 0 !== t || ((t = h(e)), E.set(e, t)), t;
- },
- m = (e, t) => {
- var r = [];
- r.total = e.length;
- var i = t?.limit || B;
- if (t?.key)
- for (var n = 0; n < e.length; n++) {
- var s = e[n],
- a = C(s, t.key);
- if (a != _) {
- q(a) || (a = p(a));
- var o = c(a.target, { _score: a._score, obj: s });
- if ((r.push(o), r.length >= i)) break;
- }
- }
- else if (t?.keys)
- for (var n = 0; n < e.length; n++) {
- for (var s = e[n], u = new l(t.keys.length), d = t.keys.length - 1; d >= 0; --d) {
- var a = C(s, t.keys[d]);
- if (!a) {
- u[d] = P;
- continue;
- }
- q(a) || (a = p(a)), (a._score = D), (a._indexes.len = 0), (u[d] = a);
- }
- if (((u.obj = s), (u._score = D), r.push(u), r.length >= i)) break;
- }
- else
- for (var n = 0; n < e.length; n++) {
- var a = e[n];
- if (
- a != _ &&
- (q(a) || (a = p(a)),
- (a._score = D),
- (a._indexes.len = 0),
- r.push(a),
- r.length >= i)
- )
- break;
- }
- return r;
- },
- g = (e, t, r = !1, i = !1) => {
- if (!1 === r && e.containsSpace) return b(e, t, i);
- for (
- var n = e._lower,
- s = e.lowerCodes,
- a = s[0],
- l = t._targetLowerCodes,
- c = s.length,
- u = l.length,
- d = 0,
- h = 0,
- p = 0;
- ;
-
- ) {
- var f = a === l[h];
- if (f) {
- if (((k[p++] = h), ++d === c)) break;
- a = s[d];
- }
- if (++h >= u) return _;
- }
- var d = 0,
- m = !1,
- g = 0,
- x = t._nextBeginningIndexes;
- x === _ && (x = t._nextBeginningIndexes = v(t.target));
- var y = 0;
- if ((h = 0 === k[0] ? 0 : x[k[0] - 1]) !== u)
- for (;;)
- if (h >= u) {
- if (d <= 0 || ++y > 200) break;
- --d, (h = x[T[--g]]);
- } else {
- var f = s[d] === l[h];
- if (f) {
- if (((T[g++] = h), ++d === c)) {
- m = !0;
- break;
- }
- ++h;
- } else h = x[h];
- }
- var w = c <= 1 ? -1 : t._targetLower.indexOf(n, k[0]),
- E = !!~w,
- L = !!E && (0 === w || t._nextBeginningIndexes[w - 1] === w);
- if (E && !L) {
- for (var S = 0; S < x.length; S = x[S])
- if (!(S <= w)) {
- for (var A = 0; A < c && s[A] === t._targetLowerCodes[S + A]; A++);
- if (A === c) {
- (w = S), (L = !0);
- break;
- }
- }
- }
- var N = e => {
- for (var t = 0, r = 0, i = 1; i < c; ++i) e[i] - e[i - 1] != 1 && ((t -= e[i]), ++r);
- if (
- ((t -= (12 + (e[c - 1] - e[0] - (c - 1))) * r),
- 0 !== e[0] && (t -= e[0] * e[0] * 0.2),
- m)
- ) {
- for (var n = 1, i = x[0]; i < u; i = x[i]) ++n;
- n > 24 && (t *= (n - 24) * 10);
- } else t *= 1e3;
- return (
- (t -= (u - c) / 2),
- E && (t /= 1 + c * c * 1),
- L && (t /= 1 + c * c * 1),
- (t -= (u - c) / 2)
- );
- };
- if (m) {
- if (L) {
- for (var S = 0; S < c; ++S) k[S] = w + S;
- var I = k,
- C = N(k);
- } else
- var I = T,
- C = N(T);
- } else {
- if (E) for (var S = 0; S < c; ++S) k[S] = w + S;
- var I = k,
- C = N(I);
- }
- t._score = C;
- for (var S = 0; S < c; ++S) t._indexes[S] = I[S];
- t._indexes.len = c;
- let q = new o();
- return (q.target = t.target), (q._score = t._score), (q._indexes = t._indexes), q;
- },
- b = (e, t, r) => {
- for (
- var i = new Set(),
- n = 0,
- s = _,
- a = 0,
- o = e.spaceSearches,
- l = o.length,
- c = 0,
- u = () => {
- for (let e = c - 1; e >= 0; e--)
- t._nextBeginningIndexes[L[2 * e + 0]] = L[2 * e + 1];
- },
- d = !1,
- h = 0;
- h < l;
- ++h
- ) {
- if (((A[h] = D), (s = g(o[h], t)), r)) {
- if (s === _) continue;
- d = !0;
- } else if (s === _) return u(), _;
- if (h !== l - 1) {
- var p = s._indexes,
- f = !0;
- for (let e = 0; e < p.len - 1; e++)
- if (p[e + 1] - p[e] != 1) {
- f = !1;
- break;
- }
- if (f) {
- var m = p[p.len - 1] + 1,
- b = t._nextBeginningIndexes[m - 1];
- for (let e = m - 1; e >= 0 && b === t._nextBeginningIndexes[e]; e--)
- (t._nextBeginningIndexes[e] = m),
- (L[2 * c + 0] = e),
- (L[2 * c + 1] = b),
- c++;
- }
- }
- (n += s._score / l),
- (A[h] = s._score / l),
- s._indexes[0] < a && (n -= (a - s._indexes[0]) * 2),
- (a = s._indexes[0]);
- for (var x = 0; x < s._indexes.len; ++x) i.add(s._indexes[x]);
- }
- if (r && !d) return _;
- u();
- var y = g(e, t, !0);
- if (y !== _ && y._score > n) {
- if (r) for (var h = 0; h < l; ++h) A[h] = y._score / l;
- return y;
- }
- r && (s = t), (s._score = n);
- var h = 0;
- for (let e of i) s._indexes[h++] = e;
- return (s._indexes.len = h), s;
- },
- x = e => {
- for (var t = e.length, r = e.toLowerCase(), i = [], n = 0, s = !1, a = 0; a < t; ++a) {
- var o = (i[a] = r.charCodeAt(a));
- if (32 === o) {
- s = !0;
- continue;
- }
- n |= 1 << (o >= 97 && o <= 122 ? o - 97 : o >= 48 && o <= 57 ? 26 : o <= 127 ? 30 : 31);
- }
- return { lowerCodes: i, bitflags: n, containsSpace: s, _lower: r };
- },
- y = e => {
- for (var t = e.length, r = [], i = 0, n = !1, s = !1, a = 0; a < t; ++a) {
- var o = e.charCodeAt(a),
- l = o >= 65 && o <= 90,
- c = l || (o >= 97 && o <= 122) || (o >= 48 && o <= 57),
- u = (l && !n) || !s || !c;
- (n = l), (s = c), u && (r[i++] = a);
- }
- return r;
- },
- v = e => {
- for (var t = e.length, r = y(e), i = [], n = r[0], s = 0, a = 0; a < t; ++a)
- n > a ? (i[a] = n) : ((n = r[++s]), (i[a] = void 0 === n ? t : n));
- return i;
- },
- w = new Map(),
- E = new Map(),
- k = [],
- T = [],
- L = [],
- S = [],
- A = [],
- N = [],
- I = [],
- C = (e, t) => {
- var r = e[t];
- if (void 0 !== r) return r;
- if ('function' == typeof t) return t(e);
- var i = t;
- Array.isArray(t) || (i = t.split('.'));
- for (var n = i.length, s = -1; e && ++s < n; ) e = e[i[s]];
- return e;
- },
- q = e => 'object' == typeof e && 'number' == typeof e._bitflags,
- B = 1 / 0,
- D = -1 / 0,
- R = [];
- R.total = 0;
- var _ = null,
- P = a(''),
- O =
- ((t = []),
- (r = 0),
- (i = {}),
- (n = e => {
- for (var i = 0, n = t[i], s = 1; s < r; ) {
- var a = s + 1;
- (i = s),
- a < r && t[a]._score < t[s]._score && (i = a),
- (t[(i - 1) >> 1] = t[i]),
- (s = 1 + (i << 1));
- }
- for (var o = (i - 1) >> 1; i > 0 && n._score < t[o]._score; o = ((i = o) - 1) >> 1)
- t[i] = t[o];
- t[i] = n;
- }),
- (i.add = e => {
- var i = r;
- t[r++] = e;
- for (var n = (i - 1) >> 1; i > 0 && e._score < t[n]._score; n = ((i = n) - 1) >> 1)
- t[i] = t[n];
- t[i] = e;
- }),
- (i.poll = e => {
- if (0 !== r) {
- var i = t[0];
- return (t[0] = t[--r]), n(), i;
- }
- }),
- (i.peek = e => {
- if (0 !== r) return t[0];
- }),
- (i.replaceTop = e => {
- (t[0] = e), n();
- }),
- i);
- return {
- single: (e, t) => {
- if (!e || !t) return _;
- var r = f(e);
- q(t) || (t = p(t));
- var i = r.bitflags;
- return (i & t._bitflags) !== i ? _ : g(r, t);
- },
- go: (e, t, r) => {
- if (!e) return r?.all ? m(t, r) : R;
- var i = f(e),
- n = i.bitflags,
- s = i.containsSpace,
- a = d(r?.threshold || 0),
- o = r?.limit || B,
- c = 0,
- u = 0,
- h = t.length;
- function b(e) {
- c < o ? (O.add(e), ++c) : (++u, e._score > O.peek()._score && O.replaceTop(e));
- }
- if (r?.key)
- for (var x = r.key, y = 0; y < h; ++y) {
- var v = t[y],
- w = C(v, x);
- if (w && (q(w) || (w = p(w)), (n & w._bitflags) === n)) {
- var E = g(i, w);
- E !== _ && (E._score < a || ((E.obj = v), b(E)));
- }
- }
- else if (r?.keys) {
- var k = r.keys,
- T = k.length;
- e: for (var y = 0; y < h; ++y) {
- for (var v = t[y], L = 0, M = 0; M < T; ++M) {
- var x = k[M],
- w = C(v, x);
- if (!w) {
- N[M] = P;
- continue;
- }
- q(w) || (w = p(w)), (N[M] = w), (L |= w._bitflags);
- }
- if ((n & L) === n) {
- if (s) for (let e = 0; e < i.spaceSearches.length; e++) S[e] = D;
- for (var M = 0; M < T; ++M) {
- if ((w = N[M]) === P || ((I[M] = g(i, w, !1, s)), I[M] === _)) {
- I[M] = P;
- continue;
- }
- if (s)
- for (let e = 0; e < i.spaceSearches.length; e++) {
- if (A[e] > -1e3 && S[e] > D) {
- var V = (S[e] + A[e]) / 4;
- V > S[e] && (S[e] = V);
- }
- A[e] > S[e] && (S[e] = A[e]);
- }
- }
- if (s) {
- for (let e = 0; e < i.spaceSearches.length; e++) if (S[e] === D) continue e;
- } else {
- var U = !1;
- for (let e = 0; e < T; e++)
- if (I[e]._score !== D) {
- U = !0;
- break;
- }
- if (!U) continue;
- }
- var W = new l(T);
- for (let e = 0; e < T; e++) W[e] = I[e];
- if (s) {
- var H = 0;
- for (let e = 0; e < i.spaceSearches.length; e++) H += S[e];
- } else {
- var H = D;
- for (let e = 0; e < T; e++) {
- var E = W[e];
- if (E._score > -1e3 && H > D) {
- var V = (H + E._score) / 4;
- V > H && (H = V);
- }
- E._score > H && (H = E._score);
- }
- }
- if (((W.obj = v), (W._score = H), r?.scoreFn)) {
- if (!(H = r.scoreFn(W))) continue;
- (H = d(H)), (W._score = H);
- }
- H < a || b(W);
- }
- }
- } else
- for (var y = 0; y < h; ++y) {
- var w = t[y];
- if (w && (q(w) || (w = p(w)), (n & w._bitflags) === n)) {
- var E = g(i, w);
- E !== _ && (E._score < a || b(E));
- }
- }
- if (0 === c) return R;
- for (var j = Array(c), y = c - 1; y >= 0; --y) j[y] = O.poll();
- return (j.total = c + u), j;
- },
- prepare: a,
- cleanup: () => {
- w.clear(), E.clear();
- },
- };
- }),
- 'function' == typeof define && define.amd
- ? define([], i)
- : e.exports
- ? (e.exports = i())
- : (r.fuzzysort = i());
- }),
- a('lHYGq', function (r, i) {
- t(r.exports, 'IndexableFields', () => a), t(r.exports, 'default', () => c);
- var n,
- a,
- o = s('iQ98l'),
- l = s('gx5Hu');
- ((n = a || (a = {})).TITLE = 'title'), (n.CONTENT = 'content');
- class c {
- static {
- this.index = [];
- }
- static get targets() {
- let t = [];
- return (
- this.index.forEach(r =>
- t.push({
- path: r.path,
- title: e(l).prepare(r.title),
- content: e(l).prepare(r.content.replace('
', '').replace(' ', '')),
- })
- ),
- (this._targets = t),
- this._targets
- );
- }
- static addEntry(e, t, r) {
- var i;
- this.index.push({
- path: e,
- title: t,
- content:
- ((i =
- r.htmlPollutedRawContent ??
- (() => {
- throw Error(`htmlPollutedRawContent not found for ${e}!`);
- })()),
- (0, o.htmlToText)(i, {
- wordwrap: !1,
- selectors: [
- { selector: '*', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },
- { selector: 'img', format: 'skip' },
- { selector: 'hr', format: 'skip' },
- { selector: 'blockquote', format: 'block' },
- { selector: 'a', options: { ignoreHref: !0 } },
- ],
- }).replace(/\n{2,}/g, '\n')),
- });
- }
- }
- }),
- a('iQ98l', function (r, i) {
- t(r.exports, 'htmlToText', () => Z);
- var n = s('365Jn'),
- a = s('ys7X1'),
- o = s('ii6m7'),
- l = s('4CCA2'),
- c = s('avuoa');
- function u(e, t, r = () => void 0) {
- if (void 0 === e) {
- let e = function (...r) {
- return t(e, ...r);
- };
- return e;
- }
- return e >= 0
- ? function (...i) {
- return t(u(e - 1, t, r), ...i);
- }
- : r;
- }
- function d(e, t) {
- let r = 0,
- i = e.length;
- for (; r < i && e[r] === t; ) ++r;
- for (; i > r && e[i - 1] === t; ) --i;
- return r > 0 || i < e.length ? e.substring(r, i) : e;
- }
- function h(t, r) {
- let i = new Map();
- for (let n = t.length; n-- > 0; ) {
- let s = t[n],
- a = r(s);
- i.set(a, i.has(a) ? e(l)(s, i.get(a), { arrayMerge: p }) : s);
- }
- return [...i.values()].reverse();
- }
- let p = (e, t, r) => [...t];
- function f(e, t) {
- for (let r of t) {
- if (!e) return;
- e = e[r];
- }
- return e;
- }
- function m(e, t = 'a', r = 26) {
- let i = [];
- do i.push((e -= 1) % r), (e = (e / r) >> 0);
- while (e > 0);
- let n = t.charCodeAt(0);
- return i
- .reverse()
- .map(e => String.fromCharCode(n + e))
- .join('');
- }
- let g = ['I', 'X', 'C', 'M'],
- b = ['V', 'L', 'D'];
- function x(e) {
- return [...(e + '')]
- .map(e => +e)
- .reverse()
- .map((e, t) =>
- e % 5 < 4 ? (e < 5 ? '' : b[t]) + g[t].repeat(e % 5) : g[t] + (e < 5 ? b[t] : g[t + 1])
- )
- .reverse()
- .join('');
- }
- class y {
- constructor(e, t) {
- (this.lines = []),
- (this.nextLineWords = []),
- (this.maxLineLength = t || e.wordwrap || Number.MAX_VALUE),
- (this.nextLineAvailableChars = this.maxLineLength),
- (this.wrapCharacters = f(e, ['longWordSplit', 'wrapCharacters']) || []),
- (this.forceWrapOnLimit = f(e, ['longWordSplit', 'forceWrapOnLimit']) || !1),
- (this.stashedSpace = !1),
- (this.wordBreakOpportunity = !1);
- }
- pushWord(e, t = !1) {
- this.nextLineAvailableChars <= 0 && !t && this.startNewLine();
- let r = 0 === this.nextLineWords.length,
- i = e.length + (r ? 0 : 1);
- if (i <= this.nextLineAvailableChars || t)
- this.nextLineWords.push(e), (this.nextLineAvailableChars -= i);
- else {
- let [t, ...i] = this.splitLongWord(e);
- for (let e of (r || this.startNewLine(),
- this.nextLineWords.push(t),
- (this.nextLineAvailableChars -= t.length),
- i))
- this.startNewLine(), this.nextLineWords.push(e), (this.nextLineAvailableChars -= e.length);
- }
- }
- popWord() {
- let e = this.nextLineWords.pop();
- if (void 0 !== e) {
- let t = 0 === this.nextLineWords.length,
- r = e.length + (t ? 0 : 1);
- this.nextLineAvailableChars += r;
- }
- return e;
- }
- concatWord(e, t = !1) {
- if (this.wordBreakOpportunity && e.length > this.nextLineAvailableChars)
- this.pushWord(e, t), (this.wordBreakOpportunity = !1);
- else {
- let r = this.popWord();
- this.pushWord(r ? r.concat(e) : e, t);
- }
- }
- startNewLine(e = 1) {
- this.lines.push(this.nextLineWords),
- e > 1 && this.lines.push(...Array.from({ length: e - 1 }, () => [])),
- (this.nextLineWords = []),
- (this.nextLineAvailableChars = this.maxLineLength);
- }
- isEmpty() {
- return 0 === this.lines.length && 0 === this.nextLineWords.length;
- }
- clear() {
- (this.lines.length = 0),
- (this.nextLineWords.length = 0),
- (this.nextLineAvailableChars = this.maxLineLength);
- }
- toString() {
- return [...this.lines, this.nextLineWords].map(e => e.join(' ')).join('\n');
- }
- splitLongWord(e) {
- let t = [],
- r = 0;
- for (; e.length > this.maxLineLength; ) {
- let i = e.substring(0, this.maxLineLength),
- n = e.substring(this.maxLineLength),
- s = i.lastIndexOf(this.wrapCharacters[r]);
- if (s > -1) (e = i.substring(s + 1) + n), t.push(i.substring(0, s + 1));
- else if (++r < this.wrapCharacters.length) e = i + n;
- else {
- if (this.forceWrapOnLimit) {
- if ((t.push(i), (e = n).length > this.maxLineLength)) continue;
- } else e = i + n;
- break;
- }
- }
- return t.push(e), t;
- }
- }
- class v {
- constructor(e = null) {
- this.next = e;
- }
- getRoot() {
- return this.next ? this.next : this;
- }
- }
- class w extends v {
- constructor(e, t = null, r = 1, i) {
- super(t),
- (this.leadingLineBreaks = r),
- (this.inlineTextBuilder = new y(e, i)),
- (this.rawText = ''),
- (this.stashedLineBreaks = 0),
- (this.isPre = t && t.isPre),
- (this.isNoWrap = t && t.isNoWrap);
- }
- }
- class E extends w {
- constructor(
- e,
- t = null,
- {
- interRowLineBreaks: r = 1,
- leadingLineBreaks: i = 2,
- maxLineLength: n,
- maxPrefixLength: s = 0,
- prefixAlign: a = 'left',
- } = {}
- ) {
- super(e, t, i, n),
- (this.maxPrefixLength = s),
- (this.prefixAlign = a),
- (this.interRowLineBreaks = r);
- }
- }
- class k extends w {
- constructor(e, t = null, { leadingLineBreaks: r = 1, maxLineLength: i, prefix: n = '' } = {}) {
- super(e, t, r, i), (this.prefix = n);
- }
- }
- class T extends v {
- constructor(e = null) {
- super(e), (this.rows = []), (this.isPre = e && e.isPre), (this.isNoWrap = e && e.isNoWrap);
- }
- }
- class L extends v {
- constructor(e = null) {
- super(e), (this.cells = []), (this.isPre = e && e.isPre), (this.isNoWrap = e && e.isNoWrap);
- }
- }
- class S extends v {
- constructor(e, t = null, r) {
- super(t),
- (this.inlineTextBuilder = new y(e, r)),
- (this.rawText = ''),
- (this.stashedLineBreaks = 0),
- (this.isPre = t && t.isPre),
- (this.isNoWrap = t && t.isNoWrap);
- }
- }
- class A extends v {
- constructor(e = null, t) {
- super(e), (this.transform = t);
- }
- }
- class N {
- constructor(e) {
- this.whitespaceChars = e.preserveNewlines
- ? e.whitespaceCharacters.replace(/\n/g, '')
- : e.whitespaceCharacters;
- let t = [...this.whitespaceChars]
- .map(e => '\\u' + e.charCodeAt(0).toString(16).padStart(4, '0'))
- .join('');
- if (
- ((this.leadingWhitespaceRe = RegExp(`^[${t}]`)),
- (this.trailingWhitespaceRe = RegExp(`[${t}]$`)),
- (this.allWhitespaceOrEmptyRe = RegExp(`^[${t}]*$`)),
- (this.newlineOrNonWhitespaceRe = RegExp(`(\\n|[^\\n${t}])`, 'g')),
- (this.newlineOrNonNewlineStringRe = RegExp(`(\\n|[^\\n]+)`, 'g')),
- e.preserveNewlines)
- ) {
- let e = RegExp(`\\n|[^\\n${t}]+`, 'gm');
- this.shrinkWrapAdd = function (t, r, i = e => e, n = !1) {
- if (!t) return;
- let s = r.stashedSpace,
- a = !1,
- o = e.exec(t);
- if (o)
- for (
- a = !0,
- '\n' === o[0]
- ? r.startNewLine()
- : s || this.testLeadingWhitespace(t)
- ? r.pushWord(i(o[0]), n)
- : r.concatWord(i(o[0]), n);
- null !== (o = e.exec(t));
-
- )
- '\n' === o[0] ? r.startNewLine() : r.pushWord(i(o[0]), n);
- r.stashedSpace = (s && !a) || this.testTrailingWhitespace(t);
- };
- } else {
- let e = RegExp(`[^${t}]+`, 'g');
- this.shrinkWrapAdd = function (t, r, i = e => e, n = !1) {
- if (!t) return;
- let s = r.stashedSpace,
- a = !1,
- o = e.exec(t);
- if (o)
- for (
- a = !0,
- s || this.testLeadingWhitespace(t)
- ? r.pushWord(i(o[0]), n)
- : r.concatWord(i(o[0]), n);
- null !== (o = e.exec(t));
-
- )
- r.pushWord(i(o[0]), n);
- r.stashedSpace = (s && !a) || this.testTrailingWhitespace(t);
- };
- }
- }
- addLiteral(e, t, r = !0) {
- if (!e) return;
- let i = t.stashedSpace,
- n = !1,
- s = this.newlineOrNonNewlineStringRe.exec(e);
- if (s)
- for (
- n = !0, '\n' === s[0] ? t.startNewLine() : i ? t.pushWord(s[0], r) : t.concatWord(s[0], r);
- null !== (s = this.newlineOrNonNewlineStringRe.exec(e));
-
- )
- '\n' === s[0] ? t.startNewLine() : t.pushWord(s[0], r);
- t.stashedSpace = i && !n;
- }
- testLeadingWhitespace(e) {
- return this.leadingWhitespaceRe.test(e);
- }
- testTrailingWhitespace(e) {
- return this.trailingWhitespaceRe.test(e);
- }
- testContainsWords(e) {
- return !this.allWhitespaceOrEmptyRe.test(e);
- }
- countNewlinesNoWords(e) {
- let t;
- this.newlineOrNonWhitespaceRe.lastIndex = 0;
- let r = 0;
- for (; null !== (t = this.newlineOrNonWhitespaceRe.exec(e)); ) {
- if ('\n' !== t[0]) return 0;
- r++;
- }
- return r;
- }
- }
- class I {
- constructor(e, t, r) {
- (this.options = e),
- (this.picker = t),
- (this.metadata = r),
- (this.whitespaceProcessor = new N(e)),
- (this._stackItem = new w(e)),
- (this._wordTransformer = void 0);
- }
- pushWordTransform(e) {
- this._wordTransformer = new A(this._wordTransformer, e);
- }
- popWordTransform() {
- if (!this._wordTransformer) return;
- let e = this._wordTransformer.transform;
- return (this._wordTransformer = this._wordTransformer.next), e;
- }
- startNoWrap() {
- this._stackItem.isNoWrap = !0;
- }
- stopNoWrap() {
- this._stackItem.isNoWrap = !1;
- }
- _getCombinedWordTransformer() {
- let e = this._wordTransformer
- ? e =>
- (function e(t, r) {
- return r ? e(r.transform(t), r.next) : t;
- })(e, this._wordTransformer)
- : void 0,
- t = this.options.encodeCharacters;
- return e ? (t ? r => t(e(r)) : e) : t;
- }
- _popStackItem() {
- let e = this._stackItem;
- return (this._stackItem = e.next), e;
- }
- addLineBreak() {
- (this._stackItem instanceof w || this._stackItem instanceof k || this._stackItem instanceof S) &&
- (this._stackItem.isPre
- ? (this._stackItem.rawText += '\n')
- : this._stackItem.inlineTextBuilder.startNewLine());
- }
- addWordBreakOpportunity() {
- (this._stackItem instanceof w || this._stackItem instanceof k || this._stackItem instanceof S) &&
- (this._stackItem.inlineTextBuilder.wordBreakOpportunity = !0);
- }
- addInline(e, { noWordTransform: t = !1 } = {}) {
- if (this._stackItem instanceof w || this._stackItem instanceof k || this._stackItem instanceof S) {
- if (this._stackItem.isPre) {
- this._stackItem.rawText += e;
- return;
- }
- if (
- 0 !== e.length &&
- (!this._stackItem.stashedLineBreaks || this.whitespaceProcessor.testContainsWords(e))
- ) {
- if (this.options.preserveNewlines) {
- let t = this.whitespaceProcessor.countNewlinesNoWords(e);
- if (t > 0) {
- this._stackItem.inlineTextBuilder.startNewLine(t);
- return;
- }
- }
- this._stackItem.stashedLineBreaks &&
- this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks),
- this.whitespaceProcessor.shrinkWrapAdd(
- e,
- this._stackItem.inlineTextBuilder,
- t ? void 0 : this._getCombinedWordTransformer(),
- this._stackItem.isNoWrap
- ),
- (this._stackItem.stashedLineBreaks = 0);
- }
- }
- }
- addLiteral(e) {
- if (
- (this._stackItem instanceof w ||
- this._stackItem instanceof k ||
- this._stackItem instanceof S) &&
- 0 !== e.length
- ) {
- if (this._stackItem.isPre) {
- this._stackItem.rawText += e;
- return;
- }
- this._stackItem.stashedLineBreaks &&
- this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks),
- this.whitespaceProcessor.addLiteral(
- e,
- this._stackItem.inlineTextBuilder,
- this._stackItem.isNoWrap
- ),
- (this._stackItem.stashedLineBreaks = 0);
- }
- }
- openBlock({ leadingLineBreaks: e = 1, reservedLineLength: t = 0, isPre: r = !1 } = {}) {
- let i = Math.max(20, this._stackItem.inlineTextBuilder.maxLineLength - t);
- (this._stackItem = new w(this.options, this._stackItem, e, i)), r && (this._stackItem.isPre = !0);
- }
- closeBlock({ trailingLineBreaks: e = 1, blockTransform: t } = {}) {
- let r = this._popStackItem(),
- i = t ? t(C(r)) : C(r);
- q(this._stackItem, i, r.leadingLineBreaks, Math.max(r.stashedLineBreaks, e));
- }
- openList({
- maxPrefixLength: e = 0,
- prefixAlign: t = 'left',
- interRowLineBreaks: r = 1,
- leadingLineBreaks: i = 2,
- } = {}) {
- this._stackItem = new E(this.options, this._stackItem, {
- interRowLineBreaks: r,
- leadingLineBreaks: i,
- maxLineLength: this._stackItem.inlineTextBuilder.maxLineLength,
- maxPrefixLength: e,
- prefixAlign: t,
- });
- }
- openListItem({ prefix: e = '' } = {}) {
- if (!(this._stackItem instanceof E))
- throw Error("Can't add a list item to something that is not a list! Check the formatter.");
- let t = this._stackItem,
- r = Math.max(e.length, t.maxPrefixLength),
- i = Math.max(20, t.inlineTextBuilder.maxLineLength - r);
- this._stackItem = new k(this.options, t, {
- prefix: e,
- maxLineLength: i,
- leadingLineBreaks: t.interRowLineBreaks,
- });
- }
- closeListItem() {
- let e = this._popStackItem(),
- t = e.next,
- r = Math.max(e.prefix.length, t.maxPrefixLength),
- i = '\n' + ' '.repeat(r),
- n =
- ('right' === t.prefixAlign ? e.prefix.padStart(r) : e.prefix.padEnd(r)) +
- C(e).replace(/\n/g, i);
- q(t, n, e.leadingLineBreaks, Math.max(e.stashedLineBreaks, t.interRowLineBreaks));
- }
- closeList({ trailingLineBreaks: e = 2 } = {}) {
- let t = this._popStackItem(),
- r = C(t);
- r && q(this._stackItem, r, t.leadingLineBreaks, e);
- }
- openTable() {
- this._stackItem = new T(this._stackItem);
- }
- openTableRow() {
- if (!(this._stackItem instanceof T))
- throw Error("Can't add a table row to something that is not a table! Check the formatter.");
- this._stackItem = new L(this._stackItem);
- }
- openTableCell({ maxColumnWidth: e } = {}) {
- if (!(this._stackItem instanceof L))
- throw Error(
- "Can't add a table cell to something that is not a table row! Check the formatter."
- );
- this._stackItem = new S(this.options, this._stackItem, e);
- }
- closeTableCell({ colspan: e = 1, rowspan: t = 1 } = {}) {
- let r = this._popStackItem(),
- i = d(C(r), '\n');
- r.next.cells.push({ colspan: e, rowspan: t, text: i });
- }
- closeTableRow() {
- let e = this._popStackItem();
- e.next.rows.push(e.cells);
- }
- closeTable({ tableToString: e, leadingLineBreaks: t = 2, trailingLineBreaks: r = 2 }) {
- let i = e(this._popStackItem().rows);
- i && q(this._stackItem, i, t, r);
- }
- toString() {
- return C(this._stackItem.getRoot());
- }
- }
- function C(e) {
- if (!(e instanceof w || e instanceof k || e instanceof S))
- throw Error('Only blocks, list items and table cells can be requested for text contents.');
- return e.inlineTextBuilder.isEmpty() ? e.rawText : e.rawText + e.inlineTextBuilder.toString();
- }
- function q(e, t, r, i) {
- if (!(e instanceof w || e instanceof k || e instanceof S))
- throw Error('Only blocks, list items and table cells can contain text.');
- let n = C(e),
- s = Math.max(e.stashedLineBreaks, r);
- e.inlineTextBuilder.clear(),
- n ? (e.rawText = n + '\n'.repeat(s) + t) : ((e.rawText = t), (e.leadingLineBreaks = s)),
- (e.stashedLineBreaks = i);
- }
- function B(e, t, r) {
- if (!t) return;
- let i = r.options;
- for (let n of (t.length > i.limits.maxChildNodes &&
- (t = t.slice(0, i.limits.maxChildNodes)).push({ data: i.limits.ellipsis, type: 'text' }),
- t))
- switch (n.type) {
- case 'text':
- r.addInline(n.data);
- break;
- case 'tag': {
- let t = r.picker.pick1(n);
- (0, i.formatters[t.format])(n, e, r, t.options || {});
- }
- }
- }
- function D(e) {
- let t =
- e.attribs && e.attribs.length
- ? ' ' +
- Object.entries(e.attribs)
- .map(([e, t]) => ('' === t ? e : `${e}=${t.replace(/"/g, '"')}`))
- .join(' ')
- : '';
- return `<${e.name}${t}>`;
- }
- function R(e) {
- return `${e.name}>`;
- }
- var _ = Object.freeze({
- __proto__: null,
- block: function (e, t, r, i) {
- r.openBlock({ leadingLineBreaks: i.leadingLineBreaks || 2 }),
- t(e.children, r),
- r.closeBlock({ trailingLineBreaks: i.trailingLineBreaks || 2 });
- },
- blockHtml: function (e, t, r, i) {
- r.openBlock({ leadingLineBreaks: i.leadingLineBreaks || 2 }),
- r.startNoWrap(),
- r.addLiteral((0, c.render)(e, { decodeEntities: r.options.decodeEntities })),
- r.stopNoWrap(),
- r.closeBlock({ trailingLineBreaks: i.trailingLineBreaks || 2 });
- },
- blockString: function (e, t, r, i) {
- r.openBlock({ leadingLineBreaks: i.leadingLineBreaks || 2 }),
- r.addLiteral(i.string || ''),
- r.closeBlock({ trailingLineBreaks: i.trailingLineBreaks || 2 });
- },
- blockTag: function (e, t, r, i) {
- r.openBlock({ leadingLineBreaks: i.leadingLineBreaks || 2 }),
- r.startNoWrap(),
- r.addLiteral(D(e)),
- r.stopNoWrap(),
- t(e.children, r),
- r.startNoWrap(),
- r.addLiteral(R(e)),
- r.stopNoWrap(),
- r.closeBlock({ trailingLineBreaks: i.trailingLineBreaks || 2 });
- },
- inline: function (e, t, r, i) {
- t(e.children, r);
- },
- inlineHtml: function (e, t, r, i) {
- r.startNoWrap(),
- r.addLiteral((0, c.render)(e, { decodeEntities: r.options.decodeEntities })),
- r.stopNoWrap();
- },
- inlineString: function (e, t, r, i) {
- r.addLiteral(i.string || '');
- },
- inlineSurround: function (e, t, r, i) {
- r.addLiteral(i.prefix || ''), t(e.children, r), r.addLiteral(i.suffix || '');
- },
- inlineTag: function (e, t, r, i) {
- r.startNoWrap(),
- r.addLiteral(D(e)),
- r.stopNoWrap(),
- t(e.children, r),
- r.startNoWrap(),
- r.addLiteral(R(e)),
- r.stopNoWrap();
- },
- skip: function (e, t, r, i) {},
- });
- function P(e, t) {
- return e[t] || (e[t] = []), e[t];
- }
- function O(e, t) {
- return void 0 === e[t] && (e[t] = 0 === t ? 0 : 1 + O(e, t - 1)), e[t];
- }
- function M(e, t, r, i) {
- e[t + r] = Math.max(O(e, t + r), O(e, t) + i);
- }
- function V(e, t) {
- return t ? ('string' == typeof t[0] ? t[0] : '[') + e + ('string' == typeof t[1] ? t[1] : ']') : e;
- }
- function U(e, t, r, i, n) {
- let s = 'function' == typeof t ? t(e, i, n) : e;
- return '/' === s[0] && r
- ? (function (e, t) {
- let r = e.length;
- for (; r > 0 && '/' === e[r - 1]; ) --r;
- return r < e.length ? e.substring(0, r) : e;
- })(r, 0) + s
- : s;
- }
- function W(e, t, r, i, n) {
- let s = 'li' === f(e, ['parent', 'name']),
- a = 0,
- o = (e.children || [])
- .filter(e => 'text' !== e.type || !/^\s*$/.test(e.data))
- .map(function (e) {
- if ('li' !== e.name) return { node: e, prefix: '' };
- let t = s ? n().trimStart() : n();
- return t.length > a && (a = t.length), { node: e, prefix: t };
- });
- if (o.length) {
- for (let { node: e, prefix: n } of (r.openList({
- interRowLineBreaks: 1,
- leadingLineBreaks: s ? 1 : i.leadingLineBreaks || 2,
- maxPrefixLength: a,
- prefixAlign: 'left',
- }),
- o))
- r.openListItem({ prefix: n }), t([e], r), r.closeListItem();
- r.closeList({ trailingLineBreaks: s ? 1 : i.trailingLineBreaks || 2 });
- }
- }
- function H(e, t, r, i) {
- function n(e) {
- let n = +f(e, ['attribs', 'colspan']) || 1,
- s = +f(e, ['attribs', 'rowspan']) || 1;
- r.openTableCell({ maxColumnWidth: i.maxColumnWidth }),
- t(e.children, r),
- r.closeTableCell({ colspan: n, rowspan: s });
- }
- r.openTable(),
- e.children.forEach(function e(t) {
- if ('tag' !== t.type) return;
- let s =
- !1 !== i.uppercaseHeaderCells
- ? e => {
- r.pushWordTransform(e => e.toUpperCase()), n(e), r.popWordTransform();
- }
- : n;
- switch (t.name) {
- case 'thead':
- case 'tbody':
- case 'tfoot':
- case 'center':
- t.children.forEach(e);
- return;
- case 'tr':
- for (let e of (r.openTableRow(), t.children))
- if ('tag' === e.type)
- switch (e.name) {
- case 'th':
- s(e);
- break;
- case 'td':
- n(e);
- }
- r.closeTableRow();
- }
- }),
- r.closeTable({
- tableToString: e =>
- (function (e, t, r) {
- let i = [],
- n = 0,
- s = e.length,
- a = [0];
- for (let r = 0; r < s; r++) {
- let s = P(i, r),
- o = e[r],
- l = 0;
- for (let e = 0; e < o.length; e++) {
- let n = o[e];
- (function (e, t, r, i) {
- for (let n = 0; n < e.rowspan; n++) {
- let s = P(t, r + n);
- for (let t = 0; t < e.colspan; t++) s[i + t] = e;
- }
- })(
- n,
- i,
- r,
- (l = (function (e, t = 0) {
- for (; e[t]; ) t++;
- return t;
- })(s, l))
- ),
- (l += n.colspan),
- (n.lines = n.text.split('\n'));
- let c = n.lines.length;
- M(a, r, n.rowspan, c + t);
- }
- n = s.length > n ? s.length : n;
- }
- !(function (e, t) {
- for (let r = 0; r < t; r++) {
- let t = P(e, r);
- for (let i = 0; i < r; i++) {
- let n = P(e, i);
- if (t[i] || n[r]) {
- let e = t[i];
- (t[i] = n[r]), (n[r] = e);
- }
- }
- }
- })(i, s > n ? s : n);
- let o = [],
- l = [0];
- for (let e = 0; e < n; e++) {
- let t,
- n = 0,
- c = Math.min(s, i[e].length);
- for (; n < c; )
- if ((t = i[e][n])) {
- if (!t.rendered) {
- let i = 0;
- for (let r = 0; r < t.lines.length; r++) {
- let s = t.lines[r],
- c = a[n] + r;
- (o[c] = (o[c] || '').padEnd(l[e]) + s),
- (i = s.length > i ? s.length : i);
- }
- M(l, e, t.colspan, i + r), (t.rendered = !0);
- }
- n += t.rowspan;
- } else {
- let e = a[n];
- (o[e] = o[e] || ''), n++;
- }
- }
- return o.join('\n');
- })(e, i.rowSpacing ?? 0, i.colSpacing ?? 3),
- leadingLineBreaks: i.leadingLineBreaks,
- trailingLineBreaks: i.trailingLineBreaks,
- });
- }
- var j = Object.freeze({
- __proto__: null,
- anchor: function (e, t, r, i) {
- let n = (function () {
- if (i.ignoreHref || !e.attribs || !e.attribs.href) return '';
- let t = e.attribs.href.replace(/^mailto:/, '');
- return i.noAnchorUrl && '#' === t[0] ? '' : (t = U(t, i.pathRewrite, i.baseUrl, r.metadata, e));
- })();
- if (n) {
- let s = '';
- r.pushWordTransform(e => (e && (s += e), e)),
- t(e.children, r),
- r.popWordTransform(),
- (i.hideLinkHrefIfSameAsText && n === s) ||
- r.addInline(s ? ' ' + V(n, i.linkBrackets) : n, { noWordTransform: !0 });
- } else t(e.children, r);
- },
- blockquote: function (e, t, r, i) {
- r.openBlock({ leadingLineBreaks: i.leadingLineBreaks || 2, reservedLineLength: 2 }),
- t(e.children, r),
- r.closeBlock({
- trailingLineBreaks: i.trailingLineBreaks || 2,
- blockTransform: e =>
- (!1 !== i.trimEmptyLines ? d(e, '\n') : e)
- .split('\n')
- .map(e => '> ' + e)
- .join('\n'),
- });
- },
- dataTable: H,
- heading: function (e, t, r, i) {
- r.openBlock({ leadingLineBreaks: i.leadingLineBreaks || 2 }),
- !1 !== i.uppercase
- ? (r.pushWordTransform(e => e.toUpperCase()), t(e.children, r), r.popWordTransform())
- : t(e.children, r),
- r.closeBlock({ trailingLineBreaks: i.trailingLineBreaks || 2 });
- },
- horizontalLine: function (e, t, r, i) {
- r.openBlock({ leadingLineBreaks: i.leadingLineBreaks || 2 }),
- r.addInline('-'.repeat(i.length || r.options.wordwrap || 40)),
- r.closeBlock({ trailingLineBreaks: i.trailingLineBreaks || 2 });
- },
- image: function (e, t, r, i) {
- let n = e.attribs || {},
- s = n.alt ? n.alt : '',
- a = n.src ? U(n.src, i.pathRewrite, i.baseUrl, r.metadata, e) : '',
- o = a ? (s ? s + ' ' + V(a, i.linkBrackets) : V(a, i.linkBrackets)) : s;
- r.addInline(o, { noWordTransform: !0 });
- },
- lineBreak: function (e, t, r, i) {
- r.addLineBreak();
- },
- orderedList: function (e, t, r, i) {
- let n = Number(e.attribs.start || '1'),
- s = (function (e = '1') {
- switch (e) {
- case 'a':
- return e => m(e, 'a');
- case 'A':
- return e => m(e, 'A');
- case 'i':
- return e => x(e).toLowerCase();
- case 'I':
- return e => x(e);
- default:
- return e => e.toString();
- }
- })(e.attribs.type);
- return W(e, t, r, i, () => ' ' + s(n++) + '. ');
- },
- paragraph: function (e, t, r, i) {
- r.openBlock({ leadingLineBreaks: i.leadingLineBreaks || 2 }),
- t(e.children, r),
- r.closeBlock({ trailingLineBreaks: i.trailingLineBreaks || 2 });
- },
- pre: function (e, t, r, i) {
- r.openBlock({ isPre: !0, leadingLineBreaks: i.leadingLineBreaks || 2 }),
- t(e.children, r),
- r.closeBlock({ trailingLineBreaks: i.trailingLineBreaks || 2 });
- },
- table: function (e, t, r, i) {
- return !(function (e, t) {
- if (!0 === t) return !0;
- if (!e) return !1;
- let { classes: r, ids: i } = (function (e) {
- let t = [],
- r = [];
- for (let i of e)
- i.startsWith('.')
- ? t.push(i.substring(1))
- : i.startsWith('#') && r.push(i.substring(1));
- return { classes: t, ids: r };
- })(t),
- n = (e.class || '').split(' '),
- s = (e.id || '').split(' ');
- return n.some(e => r.includes(e)) || s.some(e => i.includes(e));
- })(e.attribs, r.options.tables)
- ? void (r.openBlock({ leadingLineBreaks: i.leadingLineBreaks }),
- t(e.children, r),
- r.closeBlock({ trailingLineBreaks: i.trailingLineBreaks }))
- : H(e, t, r, i);
- },
- unorderedList: function (e, t, r, i) {
- let n = i.itemPrefix || ' * ';
- return W(e, t, r, i, () => n);
- },
- wbr: function (e, t, r, i) {
- r.addWordBreakOpportunity();
- },
- });
- let F = {
- baseElements: { selectors: ['body'], orderBy: 'selectors', returnDomByDefault: !0 },
- decodeEntities: !0,
- encodeCharacters: {},
- formatters: {},
- limits: {
- ellipsis: '...',
- maxBaseElements: void 0,
- maxChildNodes: void 0,
- maxDepth: void 0,
- maxInputLength: 16777216,
- },
- longWordSplit: { forceWrapOnLimit: !1, wrapCharacters: [] },
- preserveNewlines: !1,
- selectors: [
- { selector: '*', format: 'inline' },
- {
- selector: 'a',
- format: 'anchor',
- options: {
- baseUrl: null,
- hideLinkHrefIfSameAsText: !1,
- ignoreHref: !1,
- linkBrackets: ['[', ']'],
- noAnchorUrl: !0,
- },
- },
- {
- selector: 'article',
- format: 'block',
- options: { leadingLineBreaks: 1, trailingLineBreaks: 1 },
- },
- {
- selector: 'aside',
- format: 'block',
- options: { leadingLineBreaks: 1, trailingLineBreaks: 1 },
- },
- {
- selector: 'blockquote',
- format: 'blockquote',
- options: { leadingLineBreaks: 2, trailingLineBreaks: 2, trimEmptyLines: !0 },
- },
- { selector: 'br', format: 'lineBreak' },
- { selector: 'div', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },
- {
- selector: 'footer',
- format: 'block',
- options: { leadingLineBreaks: 1, trailingLineBreaks: 1 },
- },
- { selector: 'form', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },
- {
- selector: 'h1',
- format: 'heading',
- options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: !0 },
- },
- {
- selector: 'h2',
- format: 'heading',
- options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: !0 },
- },
- {
- selector: 'h3',
- format: 'heading',
- options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: !0 },
- },
- {
- selector: 'h4',
- format: 'heading',
- options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: !0 },
- },
- {
- selector: 'h5',
- format: 'heading',
- options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: !0 },
- },
- {
- selector: 'h6',
- format: 'heading',
- options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: !0 },
- },
- {
- selector: 'header',
- format: 'block',
- options: { leadingLineBreaks: 1, trailingLineBreaks: 1 },
- },
- {
- selector: 'hr',
- format: 'horizontalLine',
- options: { leadingLineBreaks: 2, length: void 0, trailingLineBreaks: 2 },
- },
- { selector: 'img', format: 'image', options: { baseUrl: null, linkBrackets: ['[', ']'] } },
- { selector: 'main', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },
- { selector: 'nav', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },
- {
- selector: 'ol',
- format: 'orderedList',
- options: { leadingLineBreaks: 2, trailingLineBreaks: 2 },
- },
- {
- selector: 'p',
- format: 'paragraph',
- options: { leadingLineBreaks: 2, trailingLineBreaks: 2 },
- },
- { selector: 'pre', format: 'pre', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },
- {
- selector: 'section',
- format: 'block',
- options: { leadingLineBreaks: 1, trailingLineBreaks: 1 },
- },
- {
- selector: 'table',
- format: 'table',
- options: {
- colSpacing: 3,
- leadingLineBreaks: 2,
- maxColumnWidth: 60,
- rowSpacing: 0,
- trailingLineBreaks: 2,
- uppercaseHeaderCells: !0,
- },
- },
- {
- selector: 'ul',
- format: 'unorderedList',
- options: { itemPrefix: ' * ', leadingLineBreaks: 2, trailingLineBreaks: 2 },
- },
- { selector: 'wbr', format: 'wbr' },
- ],
- tables: [],
- whitespaceCharacters: ' \r\n\f',
- wordwrap: 80,
- },
- $ = (e, t, r) => [...e, ...t],
- G = (e, t, r) => [...t],
- z = (e, t, r) => (e.some(e => 'object' == typeof e) ? $(e, t) : G(e, t));
- function Z(t, r = {}, i) {
- return (function (t = {}) {
- return (
- ((t = e(l)(F, t, {
- arrayMerge: G,
- customMerge: e => ('selectors' === e ? z : void 0),
- })).formatters = Object.assign({}, _, j, t.formatters)),
- (t.selectors = h(t.selectors, e => e.selector)),
- (function (e) {
- if (e.tags) {
- let t = Object.entries(e.tags).map(([e, t]) => ({ ...t, selector: e || '*' }));
- e.selectors.push(...t), (e.selectors = h(e.selectors, e => e.selector));
- }
- function t(e, t, r) {
- let i = t.pop();
- for (let r of t) {
- let t = e[r];
- t || ((t = {}), (e[r] = t)), (e = t);
- }
- e[i] = r;
- }
- if (e.baseElement) {
- let r = e.baseElement;
- t(e, ['baseElements', 'selectors'], Array.isArray(r) ? r : [r]);
- }
- for (let r of (void 0 !== e.returnDomByDefault &&
- t(e, ['baseElements', 'returnDomByDefault'], e.returnDomByDefault),
- e.selectors))
- 'anchor' === r.format &&
- f(r, ['options', 'noLinkBrackets']) &&
- t(r, ['options', 'linkBrackets'], !1);
- })(t),
- (function (e = {}) {
- let t = e.selectors.filter(e => !e.format);
- if (t.length)
- throw Error(
- 'Following selectors have no specified format: ' +
- t.map(e => `\`${e.selector}\``).join(', ')
- );
- let r = new (0, o.DecisionTree)(e.selectors.map(e => [e.selector, e])).build(n.hp2Builder);
- 'function' != typeof e.encodeCharacters &&
- (e.encodeCharacters = (function (e) {
- if (!e || 0 === Object.keys(e).length) return;
- let t = Object.entries(e).filter(([, e]) => !1 !== e),
- r = RegExp(
- t
- .map(
- ([e]) =>
- `(${[...e][0].replace(/[\s\S]/g, e => '\\u' + e.charCodeAt().toString(16).padStart(4, '0'))})`
- )
- .join('|'),
- 'g'
- ),
- i = t.map(([, e]) => e),
- n = (e, ...t) => i[t.findIndex(e => e)];
- return e => e.replace(r, n);
- })(e.encodeCharacters));
- let i = new (0, o.DecisionTree)(e.baseElements.selectors.map((e, t) => [e, t + 1])).build(
- n.hp2Builder
- );
- function s(t) {
- return (function (e, t, r) {
- let i = [];
- return (
- u(t.limits.maxDepth, function (e, n) {
- for (let s of (n = n.slice(0, t.limits.maxChildNodes))) {
- if ('tag' !== s.type) continue;
- let n = r.pick1(s);
- if (
- (n > 0
- ? i.push({ selectorIndex: n, element: s })
- : s.children && e(s.children),
- i.length >= t.limits.maxBaseElements)
- )
- return;
- }
- })(e),
- 'occurrence' !== t.baseElements.orderBy &&
- i.sort((e, t) => e.selectorIndex - t.selectorIndex),
- t.baseElements.returnDomByDefault && 0 === i.length ? e : i.map(e => e.element)
- );
- })(t, e, i);
- }
- let l = u(e.limits.maxDepth, B, function (t, r) {
- r.addInline(e.limits.ellipsis || '');
- });
- return function (t, i) {
- return (function (e, t, r, i, n, s) {
- let o = r.limits.maxInputLength;
- o &&
- e &&
- e.length > o &&
- (console.warn(
- `Input length ${e.length} is above allowed limit of ${o}. Truncating without ellipsis.`
- ),
- (e = e.substring(0, o)));
- let l = n((0, a.parseDocument)(e, { decodeEntities: r.decodeEntities }).children),
- c = new I(r, i, t);
- return s(l, c), c.toString();
- })(t, i, e, r, s, l);
- };
- })(t)
- );
- })(r)(t, i);
- }
- }),
- a('365Jn', function (e, r) {
- t(e.exports, 'hp2Builder', () => a), s('66mCi');
- var i = s('dZvva'),
- n = s('ii6m7');
- function a(e) {
- return new n.Picker(o(e));
- }
- function o(e) {
- let t = e.map(l);
- return (e, ...r) => t.flatMap(t => t(e, ...r));
- }
- function l(e) {
- switch (e.type) {
- case 'terminal': {
- let t = [e.valueContainer];
- return (e, ...r) => t;
- }
- case 'tagName':
- return (function (e) {
- let t = {};
- for (let r of e.variants) t[r.value] = o(r.cont);
- return (e, ...r) => {
- let i = t[e.name];
- return i ? i(e, ...r) : [];
- };
- })(e);
- case 'attrValue':
- return (function (e) {
- let t = [];
- for (let r of e.matchers) {
- let e = r.predicate,
- i = o(r.cont);
- t.push((t, r, ...n) => (e(t) ? i(r, ...n) : []));
- }
- let r = e.name;
- return (e, ...i) => {
- let n = e.attribs[r];
- return n || '' === n ? t.flatMap(t => t(n, e, ...i)) : [];
- };
- })(e);
- case 'attrPresence':
- return (function (e) {
- let t = e.name,
- r = o(e.cont);
- return (e, ...i) => (Object.prototype.hasOwnProperty.call(e.attribs, t) ? r(e, ...i) : []);
- })(e);
- case 'pushElement':
- return (function (e) {
- let t = o(e.cont),
- r = '+' === e.combinator ? c : u;
- return (e, ...i) => {
- let n = r(e);
- return null === n ? [] : t(n, e, ...i);
- };
- })(e);
- case 'popElement':
- return (function (e) {
- let t = o(e.cont);
- return (e, r, ...i) => t(r, ...i);
- })(e);
- }
- }
- let c = e => {
- let t = e.prev;
- return null === t ? null : (0, i.isTag)(t) ? t : c(t);
- },
- u = e => {
- let t = e.parent;
- return t && (0, i.isTag)(t) ? t : null;
- };
- }),
- a('66mCi', function (e, r) {
- t(e.exports, 'CDATA', () => s('dZvva').CDATA),
- t(e.exports, 'Comment', () => s('dZvva').Comment),
- t(e.exports, 'Document', () => s('dZvva').Document),
- t(e.exports, 'Element', () => s('dZvva').Element),
- t(e.exports, 'isTag', () => s('dZvva').isTag),
- t(e.exports, 'ProcessingInstruction', () => s('dZvva').ProcessingInstruction),
- t(e.exports, 'Text', () => s('dZvva').Text),
- s('1RLFx'),
- s('dZvva');
- }),
- a('1RLFx', function (e, r) {
- var i, n;
- function s(e) {
- return e.type === i.Tag || e.type === i.Script || e.type === i.Style;
- }
- t(e.exports, 'ElementType', () => i),
- t(e.exports, 'isTag', () => s),
- t(e.exports, 'Root', () => a),
- t(e.exports, 'Text', () => o),
- t(e.exports, 'Directive', () => l),
- t(e.exports, 'Comment', () => c),
- t(e.exports, 'Script', () => u),
- t(e.exports, 'Style', () => d),
- t(e.exports, 'Tag', () => h),
- t(e.exports, 'CDATA', () => p),
- t(e.exports, 'Doctype', () => f),
- ((n = i || (i = {})).Root = 'root'),
- (n.Text = 'text'),
- (n.Directive = 'directive'),
- (n.Comment = 'comment'),
- (n.Script = 'script'),
- (n.Style = 'style'),
- (n.Tag = 'tag'),
- (n.CDATA = 'cdata'),
- (n.Doctype = 'doctype');
- let a = i.Root,
- o = i.Text,
- l = i.Directive,
- c = i.Comment,
- u = i.Script,
- d = i.Style,
- h = i.Tag,
- p = i.CDATA,
- f = i.Doctype;
- }),
- a('dZvva', function (e, r) {
- t(e.exports, 'Text', () => o),
- t(e.exports, 'Comment', () => l),
- t(e.exports, 'ProcessingInstruction', () => c),
- t(e.exports, 'CDATA', () => d),
- t(e.exports, 'Document', () => h),
- t(e.exports, 'Element', () => p),
- t(e.exports, 'isTag', () => f);
- var i = s('1RLFx');
- class n {
- constructor() {
- (this.parent = null),
- (this.prev = null),
- (this.next = null),
- (this.startIndex = null),
- (this.endIndex = null);
- }
- get parentNode() {
- return this.parent;
- }
- set parentNode(e) {
- this.parent = e;
- }
- get previousSibling() {
- return this.prev;
- }
- set previousSibling(e) {
- this.prev = e;
- }
- get nextSibling() {
- return this.next;
- }
- set nextSibling(e) {
- this.next = e;
- }
- cloneNode(e = !1) {
- return m(this, e);
- }
- }
- class a extends n {
- constructor(e) {
- super(), (this.data = e);
- }
- get nodeValue() {
- return this.data;
- }
- set nodeValue(e) {
- this.data = e;
- }
- }
- class o extends a {
- constructor() {
- super(...arguments), (this.type = i.ElementType.Text);
- }
- get nodeType() {
- return 3;
- }
- }
- class l extends a {
- constructor() {
- super(...arguments), (this.type = i.ElementType.Comment);
- }
- get nodeType() {
- return 8;
- }
- }
- class c extends a {
- constructor(e, t) {
- super(t), (this.name = e), (this.type = i.ElementType.Directive);
- }
- get nodeType() {
- return 1;
- }
- }
- class u extends n {
- constructor(e) {
- super(), (this.children = e);
- }
- get firstChild() {
- var e;
- return null !== (e = this.children[0]) && void 0 !== e ? e : null;
- }
- get lastChild() {
- return this.children.length > 0 ? this.children[this.children.length - 1] : null;
- }
- get childNodes() {
- return this.children;
- }
- set childNodes(e) {
- this.children = e;
- }
- }
- class d extends u {
- constructor() {
- super(...arguments), (this.type = i.ElementType.CDATA);
- }
- get nodeType() {
- return 4;
- }
- }
- class h extends u {
- constructor() {
- super(...arguments), (this.type = i.ElementType.Root);
- }
- get nodeType() {
- return 9;
- }
- }
- class p extends u {
- constructor(
- e,
- t,
- r = [],
- n = 'script' === e ? i.ElementType.Script : 'style' === e ? i.ElementType.Style : i.ElementType.Tag
- ) {
- super(r), (this.name = e), (this.attribs = t), (this.type = n);
- }
- get nodeType() {
- return 1;
- }
- get tagName() {
- return this.name;
- }
- set tagName(e) {
- this.name = e;
- }
- get attributes() {
- return Object.keys(this.attribs).map(e => {
- var t, r;
- return {
- name: e,
- value: this.attribs[e],
- namespace: null === (t = this['x-attribsNamespace']) || void 0 === t ? void 0 : t[e],
- prefix: null === (r = this['x-attribsPrefix']) || void 0 === r ? void 0 : r[e],
- };
- });
- }
- }
- function f(e) {
- return (0, i.isTag)(e);
- }
- function m(e, t = !1) {
- let r;
- if (e.type === i.ElementType.Text) r = new o(e.data);
- else if (e.type === i.ElementType.Comment) r = new l(e.data);
- else if (f(e)) {
- let i = t ? g(e.children) : [],
- n = new p(e.name, { ...e.attribs }, i);
- i.forEach(e => (e.parent = n)),
- null != e.namespace && (n.namespace = e.namespace),
- e['x-attribsNamespace'] && (n['x-attribsNamespace'] = { ...e['x-attribsNamespace'] }),
- e['x-attribsPrefix'] && (n['x-attribsPrefix'] = { ...e['x-attribsPrefix'] }),
- (r = n);
- } else if (e.type === i.ElementType.CDATA) {
- let i = t ? g(e.children) : [],
- n = new d(i);
- i.forEach(e => (e.parent = n)), (r = n);
- } else if (e.type === i.ElementType.Root) {
- let i = t ? g(e.children) : [],
- n = new h(i);
- i.forEach(e => (e.parent = n)), e['x-mode'] && (n['x-mode'] = e['x-mode']), (r = n);
- } else if (e.type === i.ElementType.Directive) {
- let t = new c(e.name, e.data);
- null != e['x-name'] &&
- ((t['x-name'] = e['x-name']),
- (t['x-publicId'] = e['x-publicId']),
- (t['x-systemId'] = e['x-systemId'])),
- (r = t);
- } else throw Error(`Not implemented yet: ${e.type}`);
- return (
- (r.startIndex = e.startIndex),
- (r.endIndex = e.endIndex),
- null != e.sourceCodeLocation && (r.sourceCodeLocation = e.sourceCodeLocation),
- r
- );
- }
- function g(e) {
- let t = e.map(e => m(e, !0));
- for (let e = 1; e < t.length; e++) (t[e].prev = t[e - 1]), (t[e - 1].next = t[e]);
- return t;
- }
- }),
- a('ii6m7', function (e, r) {
- t(e.exports, 'DecisionTree', () => n), t(e.exports, 'Picker', () => h);
- var i = s('2BNcT');
- class n {
- constructor(e) {
- this.branches = a(
- (function (e) {
- let t = e.length,
- r = Array(t);
- for (let s = 0; s < t; s++) {
- var n;
- let [t, a] = e[s],
- o =
- ((function e(t) {
- let r = [];
- t.list.forEach(t => {
- switch (t.type) {
- case 'class':
- r.push({
- matcher: '~=',
- modifier: null,
- name: 'class',
- namespace: null,
- specificity: t.specificity,
- type: 'attrValue',
- value: t.name,
- });
- break;
- case 'id':
- r.push({
- matcher: '=',
- modifier: null,
- name: 'id',
- namespace: null,
- specificity: t.specificity,
- type: 'attrValue',
- value: t.name,
- });
- break;
- case 'combinator':
- e(t.left), r.push(t);
- break;
- case 'universal':
- break;
- default:
- r.push(t);
- }
- }),
- (t.list = r);
- })((n = i.parse1(t))),
- i.normalize(n),
- n);
- r[s] = {
- ast: o,
- terminal: {
- type: 'terminal',
- valueContainer: { index: s, value: a, specificity: o.specificity },
- },
- };
- }
- return r;
- })(e)
- );
- }
- build(e) {
- return e(this.branches);
- }
- }
- function a(e) {
- let t = [];
- for (; e.length; ) {
- let r = d(e, e => !0, o),
- {
- matches: i,
- nonmatches: n,
- empty: s,
- } = (function (e, t) {
- let r = [],
- i = [],
- n = [];
- for (let s of e) {
- let e = s.ast.list;
- e.length ? (e.some(e => o(e) === t) ? r : i).push(s) : n.push(s);
- }
- return { matches: r, nonmatches: i, empty: n };
- })(e, r);
- (e = n),
- i.length &&
- t.push(
- (function (e, t) {
- if ('tag' === e)
- return {
- type: 'tagName',
- variants: Object.entries(
- c(
- t,
- e => 'tag' === e.type,
- e => e.name
- )
- ).map(([e, t]) => ({ type: 'variant', value: e, cont: a(t.items) })),
- };
- if (e.startsWith('attrValue '))
- return (function (e, t) {
- let r = c(
- t,
- t => 'attrValue' === t.type && t.name === e,
- e => `${e.matcher} ${e.modifier || ''} ${e.value}`
- ),
- i = [];
- for (let e of Object.values(r)) {
- let t = e.oneSimpleSelector,
- r = (function (e) {
- if ('i' === e.modifier) {
- let t = e.value.toLowerCase();
- switch (e.matcher) {
- case '=':
- return e => t === e.toLowerCase();
- case '~=':
- return e =>
- e
- .toLowerCase()
- .split(/[ \t]+/)
- .includes(t);
- case '^=':
- return e => e.toLowerCase().startsWith(t);
- case '$=':
- return e => e.toLowerCase().endsWith(t);
- case '*=':
- return e => e.toLowerCase().includes(t);
- case '|=':
- return e => {
- let r = e.toLowerCase();
- return (
- t === r ||
- (r.startsWith(t) && '-' === r[t.length])
- );
- };
- }
- } else {
- let t = e.value;
- switch (e.matcher) {
- case '=':
- return e => t === e;
- case '~=':
- return e => e.split(/[ \t]+/).includes(t);
- case '^=':
- return e => e.startsWith(t);
- case '$=':
- return e => e.endsWith(t);
- case '*=':
- return e => e.includes(t);
- case '|=':
- return e =>
- t === e ||
- (e.startsWith(t) && '-' === e[t.length]);
- }
- }
- })(t),
- n = a(e.items);
- i.push({
- type: 'matcher',
- matcher: t.matcher,
- modifier: t.modifier,
- value: t.value,
- predicate: r,
- cont: n,
- });
- }
- return { type: 'attrValue', name: e, matchers: i };
- })(e.substring(10), t);
- if (e.startsWith('attrPresence '))
- return (function (e, t) {
- for (let r of t) u(r, t => 'attrPresence' === t.type && t.name === e);
- return { type: 'attrPresence', name: e, cont: a(t) };
- })(e.substring(13), t);
- if ('combinator >' === e) return l('>', t);
- if ('combinator +' === e) return l('+', t);
- throw Error(`Unsupported selector kind: ${e}`);
- })(r, i)
- ),
- s.length &&
- t.push(
- ...(function (e) {
- let t = [];
- for (let r of e) {
- let e = r.terminal;
- if ('terminal' === e.type) t.push(e);
- else {
- let { matches: r, rest: i } = (function (e, t) {
- let r = [],
- i = [];
- for (let n of e) t(n) ? r.push(n) : i.push(n);
- return { matches: r, rest: i };
- })(e.cont, e => 'terminal' === e.type);
- r.forEach(e => t.push(e)), i.length && ((e.cont = i), t.push(e));
- }
- }
- return t;
- })(s)
- );
- }
- return t;
- }
- function o(e) {
- switch (e.type) {
- case 'attrPresence':
- return `attrPresence ${e.name}`;
- case 'attrValue':
- return `attrValue ${e.name}`;
- case 'combinator':
- return `combinator ${e.combinator}`;
- default:
- return e.type;
- }
- }
- function l(e, t) {
- let r = c(
- t,
- t => 'combinator' === t.type && t.combinator === e,
- e => i.serialize(e.left)
- ),
- n = [];
- for (let e of Object.values(r)) {
- let t = a(e.items),
- r = e.oneSimpleSelector.left;
- n.push({ ast: r, terminal: { type: 'popElement', cont: t } });
- }
- return { type: 'pushElement', combinator: e, cont: a(n) };
- }
- function c(e, t, r) {
- let i = {};
- for (; e.length; ) {
- let n = d(e, t, r),
- s = e => t(e) && r(e) === n,
- { matches: a, rest: o } = (function (e, t) {
- let r = [],
- i = [];
- for (let n of e) t(n) ? r.push(n) : i.push(n);
- return { matches: r, rest: i };
- })(e, e => e.ast.list.some(s)),
- l = null;
- for (let e of a) {
- let t = u(e, s);
- l || (l = t);
- }
- if (null == l) throw Error('No simple selector is found.');
- (i[n] = { oneSimpleSelector: l, items: a }), (e = o);
- }
- return i;
- }
- function u(e, t) {
- let r = e.ast.list,
- i = Array(r.length),
- n = -1;
- for (let e = r.length; e-- > 0; ) t(r[e]) && ((i[e] = !0), (n = e));
- if (-1 == n) throw Error("Couldn't find the required simple selector.");
- let s = r[n];
- return (e.ast.list = r.filter((e, t) => !i[t])), s;
- }
- function d(e, t, r) {
- let i = {};
- for (let n of e) {
- let e = {};
- for (let i of n.ast.list.filter(t)) e[r(i)] = !0;
- for (let t of Object.keys(e)) i[t] ? i[t]++ : (i[t] = 1);
- }
- let n = '',
- s = 0;
- for (let e of Object.entries(i)) e[1] > s && ((n = e[0]), (s = e[1]));
- return n;
- }
- class h {
- constructor(e) {
- this.f = e;
- }
- pickAll(e) {
- return this.f(e);
- }
- pick1(e, t = !1) {
- let r = this.f(e),
- i = r.length;
- if (0 === i) return null;
- if (1 === i) return r[0].value;
- let n = t ? p : f,
- s = r[0];
- for (let e = 1; e < i; e++) {
- let t = r[e];
- n(s, t) && (s = t);
- }
- return s.value;
- }
- }
- function p(e, t) {
- let r = (0, i.compareSpecificity)(t.specificity, e.specificity);
- return r > 0 || (0 === r && t.index < e.index);
- }
- function f(e, t) {
- let r = (0, i.compareSpecificity)(t.specificity, e.specificity);
- return r > 0 || (0 === r && t.index > e.index);
- }
- }),
- a('2BNcT', function (e, r) {
- t(e.exports, 'parse1', () => X),
- t(e.exports, 'serialize', () => Y),
- t(
- e.exports,
- 'normalize',
- () =>
- function e(t) {
- if (!t.type) throw Error('This is not an AST node.');
- switch (t.type) {
- case 'compound':
- t.list.forEach(e), t.list.sort((e, t) => en(er(e), er(t)));
- break;
- case 'combinator':
- e(t.left);
- break;
- case 'list':
- t.list.forEach(e), t.list.sort((e, t) => (Y(e) < Y(t) ? -1 : 1));
- }
- return t;
- }
- ),
- t(e.exports, 'compareSpecificity', () => ei);
- var i = s('ebH2o'),
- n = s('1QR7C');
- let a = `(?:[ \\t\\r\\n\\f]*)`,
- o = `(?:\\n|\\r\\n|\\r|\\f)`,
- l = `[^\\x00-\\x7F]`,
- c = `(?:\\\\[0-9a-f]{1,6}(?:\\r\\n|[ \\n\\r\\t\\f])?)`,
- u = `(?:\\\\[^\\n\\r\\f0-9a-f])`,
- d = `(?:[_a-z]|${l}|${c}|${u})`,
- h = `(?:[_a-z0-9-]|${l}|${c}|${u})`,
- p = `(?:${h}+)`,
- f = `(?:[-]?${d}${h}*)`,
- m = `'([^\\n\\r\\f\\\\']|\\\\${o}|${l}|${c}|${u})*'`,
- g = `"([^\\n\\r\\f\\\\"]|\\\\${o}|${l}|${c}|${u})*"`,
- b = (0, i.createLexer)([
- { name: 'ws', regex: new RegExp(a) },
- { name: 'hash', regex: RegExp(`#${p}`, 'i') },
- { name: 'ident', regex: RegExp(f, 'i') },
- { name: 'str1', regex: RegExp(m, 'i') },
- { name: 'str2', regex: RegExp(g, 'i') },
- { name: '*' },
- { name: '.' },
- { name: ',' },
- { name: '[' },
- { name: ']' },
- { name: '=' },
- { name: '>' },
- { name: '|' },
- { name: '+' },
- { name: '~' },
- { name: '^' },
- { name: '$' },
- ]),
- x = (0, i.createLexer)([
- { name: 'unicode', regex: RegExp(c, 'i') },
- { name: 'escape', regex: RegExp(u, 'i') },
- { name: 'any', regex: RegExp('[\\s\\S]', 'i') },
- ]);
- function y([e, t, r], [i, n, s]) {
- return [e + i, t + n, r + s];
- }
- let v = n.token(e => ('unicode' === e.name ? String.fromCodePoint(parseInt(e.text.slice(1), 16)) : void 0)),
- w = n.token(e => ('escape' === e.name ? e.text.slice(1) : void 0)),
- E = n.token(e => ('any' === e.name ? e.text : void 0)),
- k = n.map(n.many(n.or(v, w, E)), e => e.join(''));
- function T(e) {
- return k({ tokens: x(e).tokens, options: void 0 }, 0).value;
- }
- function L(e) {
- return n.token(t => t.name === e || void 0);
- }
- let S = n.token(e => ('ws' === e.name ? null : void 0)),
- A = n.option(S, null);
- function N(e) {
- return n.middle(A, e, A);
- }
- let I = n.token(e => ('ident' === e.name ? T(e.text) : void 0)),
- C = n.token(e => ('hash' === e.name ? T(e.text.slice(1)) : void 0)),
- q = n.token(e => (e.name.startsWith('str') ? T(e.text.slice(1, -1)) : void 0)),
- B = n.left(n.option(I, ''), L('|')),
- D = n.eitherOr(
- n.ab(B, I, (e, t) => ({ name: t, namespace: e })),
- n.map(I, e => ({ name: e, namespace: null }))
- ),
- R = n.eitherOr(
- n.ab(B, L('*'), e => ({ type: 'universal', namespace: e, specificity: [0, 0, 0] })),
- n.map(L('*'), () => ({ type: 'universal', namespace: null, specificity: [0, 0, 0] }))
- ),
- _ = n.map(D, ({ name: e, namespace: t }) => ({
- type: 'tag',
- name: e,
- namespace: t,
- specificity: [0, 0, 1],
- })),
- P = n.ab(L('.'), I, (e, t) => ({ type: 'class', name: t, specificity: [0, 1, 0] })),
- O = n.map(C, e => ({ type: 'id', name: e, specificity: [1, 0, 0] })),
- M = n.token(e => {
- if ('ident' === e.name) {
- if ('i' === e.text || 'I' === e.text) return 'i';
- if ('s' === e.text || 'S' === e.text) return 's';
- }
- }),
- V = n.eitherOr(
- n.ab(q, n.option(n.right(A, M), null), (e, t) => ({ value: e, modifier: t })),
- n.ab(I, n.option(n.right(S, M), null), (e, t) => ({ value: e, modifier: t }))
- ),
- U = n.choice(
- n.map(L('='), () => '='),
- n.ab(L('~'), L('='), () => '~='),
- n.ab(L('|'), L('='), () => '|='),
- n.ab(L('^'), L('='), () => '^='),
- n.ab(L('$'), L('='), () => '$='),
- n.ab(L('*'), L('='), () => '*=')
- ),
- W = n.abc(L('['), N(D), L(']'), (e, { name: t, namespace: r }) => ({
- type: 'attrPresence',
- name: t,
- namespace: r,
- specificity: [0, 1, 0],
- })),
- H = n.middle(
- L('['),
- n.abc(N(D), U, N(V), ({ name: e, namespace: t }, r, { value: i, modifier: n }) => ({
- type: 'attrValue',
- name: e,
- namespace: t,
- matcher: r,
- value: i,
- modifier: n,
- specificity: [0, 1, 0],
- })),
- L(']')
- ),
- j = n.eitherOr(W, H),
- F = n.eitherOr(R, _),
- $ = n.choice(O, P, j),
- G = n.map(n.eitherOr(n.flatten(F, n.many($)), n.many1($)), e => ({
- type: 'compound',
- list: e,
- specificity: e.map(e => e.specificity).reduce(y, [0, 0, 0]),
- })),
- z = n.choice(
- n.map(L('>'), () => '>'),
- n.map(L('+'), () => '+'),
- n.map(L('~'), () => '~'),
- n.ab(L('|'), L('|'), () => '||')
- ),
- Z = n.eitherOr(
- N(z),
- n.map(S, () => ' ')
- ),
- Q = n.leftAssoc2(
- G,
- n.map(Z, e => (t, r) => ({
- type: 'compound',
- list: [...r.list, { type: 'combinator', combinator: e, left: t, specificity: t.specificity }],
- specificity: y(t.specificity, r.specificity),
- })),
- G
- );
- function J(e, t, r = 1) {
- return `${e.replace(/(\t)|(\r)|(\n)/g, (e, t, r) => (t ? '␉' : r ? '␍' : '␊'))}
-${''.padEnd(t)}${'^'.repeat(r)}`;
- }
- function X(e) {
- return (function (e, t) {
- if (!('string' == typeof t || t instanceof String))
- throw Error('Expected a selector string. Actual input is not a string!');
- let r = b(t);
- if (!r.complete)
- throw Error(
- `The input "${t}" was only partially tokenized, stopped at offset ${r.offset}!
-` + J(t, r.offset)
- );
- let i = N(e)({ tokens: r.tokens, options: void 0 }, 0);
- if (!i.matched) throw Error(`No match for "${t}" input!`);
- if (i.position < r.tokens.length) {
- let e = r.tokens[i.position];
- throw Error(
- `The input "${t}" was only partially parsed, stopped at offset ${e.offset}!
-` + J(t, e.offset, e.len)
- );
- }
- return i.value;
- })(Q, e);
- }
- function Y(e) {
- if (!e.type) throw Error('This is not an AST node.');
- switch (e.type) {
- case 'universal':
- return K(e.namespace) + '*';
- case 'tag':
- return K(e.namespace) + et(e.name);
- case 'class':
- return '.' + et(e.name);
- case 'id':
- return '#' + et(e.name);
- case 'attrPresence':
- return `[${K(e.namespace)}${et(e.name)}]`;
- case 'attrValue':
- return `[${K(e.namespace)}${et(e.name)}${e.matcher}"${e.value.replace(/(")|(\\)|(\x00)|([\x01-\x1f]|\x7f)/g, (e, t, r, i, n) => (t ? '\\"' : r ? '\\\\' : i ? '�' : ee(n)))}"${e.modifier ? e.modifier : ''}]`;
- case 'combinator':
- return Y(e.left) + e.combinator;
- case 'compound':
- return e.list.reduce((e, t) => ('combinator' === t.type ? Y(t) + e : e + Y(t)), '');
- case 'list':
- return e.list.map(Y).join(',');
- }
- }
- function K(e) {
- return e || '' === e ? et(e) + '|' : '';
- }
- function ee(e) {
- return `\\${e.codePointAt(0).toString(16)} `;
- }
- function et(e) {
- return e.replace(
- /(^[0-9])|(^-[0-9])|(^-$)|([-0-9a-zA-Z_]|[^\x00-\x7F])|(\x00)|([\x01-\x1f]|\x7f)|([\s\S])/g,
- (e, t, r, i, n, s, a, o) =>
- t ? ee(t) : r ? '-' + ee(r.slice(1)) : i ? '\\-' : n || (s ? '�' : a ? ee(a) : '\\' + o)
- );
- }
- function er(e) {
- switch (e.type) {
- case 'universal':
- case 'tag':
- return [1];
- case 'id':
- return [2];
- case 'class':
- return [3, e.name];
- case 'attrPresence':
- return [4, Y(e)];
- case 'attrValue':
- return [5, Y(e)];
- case 'combinator':
- return [15, Y(e)];
- }
- }
- function ei(e, t) {
- return en(e, t);
- }
- function en(e, t) {
- if (!Array.isArray(e) || !Array.isArray(t)) throw Error('Arguments must be arrays.');
- let r = e.length < t.length ? e.length : t.length;
- for (let i = 0; i < r; i++) if (e[i] !== t[i]) return e[i] < t[i] ? -1 : 1;
- return e.length - t.length;
- }
- n.leftAssoc2(
- n.map(Q, e => ({ type: 'list', list: [e] })),
- n.map(N(L(',')), () => (e, t) => ({ type: 'list', list: [...e.list, t] })),
- Q
- );
- }),
- a('ebH2o', function (e, r) {
- t(e.exports, 'createLexer', () => n);
- let i = /\n/g;
- function n(e, t = '', r = {}) {
- let a = 'string' == typeof t ? t : '',
- o = e.map(s),
- l = !!('string' != typeof t ? t : r).lineNumbers;
- return function (e, t = 0) {
- let r = l
- ? (function (e) {
- let t = [...e.matchAll(i)].map(e => e.index || 0);
- t.unshift(-1);
- let r = (function e(t, r, i) {
- if (i - r == 1) return { offset: t[r], index: r + 1 };
- let n = Math.ceil((r + i) / 2),
- s = e(t, r, n),
- a = e(t, n, i);
- return { offset: s.offset, low: s, high: a };
- })(t, 0, t.length);
- return e =>
- (function e(t, r) {
- return Object.prototype.hasOwnProperty.call(t, 'index')
- ? { line: t.index, column: r - t.offset }
- : e(t.high.offset < r ? t.high : t.low, r);
- })(r, e);
- })(e)
- : () => ({ line: 0, column: 0 }),
- n = t,
- s = [];
- t: for (; n < e.length; ) {
- let t = !1;
- for (let i of o) {
- i.regex.lastIndex = n;
- let o = i.regex.exec(e);
- if (o && o[0].length > 0) {
- if (!i.discard) {
- let e = r(n),
- t =
- 'string' == typeof i.replace
- ? o[0].replace(new RegExp(i.regex.source, i.regex.flags), i.replace)
- : o[0];
- s.push({
- state: a,
- name: i.name,
- text: t,
- offset: n,
- len: o[0].length,
- line: e.line,
- column: e.column,
- });
- }
- if (((n = i.regex.lastIndex), (t = !0), i.push)) {
- let t = i.push(e, n);
- s.push(...t.tokens), (n = t.offset);
- }
- if (i.pop) break t;
- break;
- }
- }
- if (!t) break;
- }
- return { tokens: s, offset: n, complete: e.length <= n };
- };
- }
- function s(e, t) {
- return {
- ...e,
- regex: (function (e, t) {
- if (0 === e.name.length) throw Error(`Rule #${t} has empty name, which is not allowed.`);
- if (Object.prototype.hasOwnProperty.call(e, 'regex'))
- return (function (e) {
- if (e.global)
- throw Error(
- `Regular expression /${e.source}/${e.flags} contains the global flag, which is not allowed.`
- );
- return e.sticky ? e : RegExp(e.source, e.flags + 'y');
- })(e.regex);
- if (Object.prototype.hasOwnProperty.call(e, 'str')) {
- if (0 === e.str.length)
- throw Error(`Rule #${t} ("${e.name}") has empty "str" property, which is not allowed.`);
- return RegExp(a(e.str), 'y');
- }
- return RegExp(a(e.name), 'y');
- })(e, t),
- };
- }
- function a(e) {
- return e.replace(/[-[\]{}()*+!<=:?./\\^$|#\s,]/g, '\\$&');
- }
- }),
- a('1QR7C', function (e, r) {
- function i(e, t) {
- return (r, i) => {
- let n,
- s = i;
- return (
- i < r.tokens.length ? void 0 !== (n = e(r.tokens[i], r, i)) && s++ : t?.(r, i),
- void 0 === n ? { matched: !1 } : { matched: !0, position: s, value: n }
- );
- };
- }
- function n(e, t) {
- return e.matched ? { matched: !0, position: e.position, value: t(e.value, e.position) } : e;
- }
- function a(e, t) {
- return e.matched ? t(e) : e;
- }
- function o(e, t) {
- return (r, i) => n(e(r, i), (e, n) => t(e, r, i, n));
- }
- function l(e, t) {
- return (r, i) => {
- let n = e(r, i);
- return n.matched ? n : { matched: !0, position: i, value: t };
- };
- }
- function c(...e) {
- return (t, r) => {
- for (let i of e) {
- let e = i(t, r);
- if (e.matched) return e;
- }
- return { matched: !1 };
- };
- }
- function u(e, t) {
- return (r, i) => {
- let n = e(r, i);
- return n.matched ? n : t(r, i);
- };
- }
- function d(e) {
- var t;
- return (
- (t = () => !0),
- (r, i) => {
- let n = [],
- s = !0;
- do {
- let a = e(r, i);
- a.matched && t(a.value, n.length + 1, r, i, a.position)
- ? (n.push(a.value), (i = a.position))
- : (s = !1);
- } while (s);
- return { matched: !0, position: i, value: n };
- }
- );
- }
- function h(e) {
- return p(e, d(e), (e, t) => [e, ...t]);
- }
- function p(e, t, r) {
- return (i, s) => a(e(i, s), e => n(t(i, e.position), (t, n) => r(e.value, t, i, s, n)));
- }
- function f(e, t) {
- return p(e, t, e => e);
- }
- function m(e, t) {
- return p(e, t, (e, t) => t);
- }
- function g(e, t, r, i) {
- return (s, o) =>
- a(e(s, o), e =>
- a(t(s, e.position), t => n(r(s, t.position), (r, n) => i(e.value, t.value, r, s, o, n)))
- );
- }
- function b(e, t, r) {
- return g(e, t, r, (e, t) => t);
- }
- function x(...e) {
- return o(
- (function (...e) {
- return (t, r) => {
- let i = [],
- n = r;
- for (let r of e) {
- let e = r(t, n);
- if (!e.matched) return { matched: !1 };
- i.push(e.value), (n = e.position);
- }
- return { matched: !0, position: n, value: i };
- };
- })(...e),
- e => e.flatMap(e => e)
- );
- }
- function y(e, t, r) {
- var i;
- return (
- (i = e => {
- var i, n, s;
- return (
- (i = p(t, r, (e, t) => [e, t])),
- (n = (e, [t, r]) => t(e, r)),
- (s = e => o(i, (t, r, i, s) => n(e, t, r, i, s))),
- (t, r) => {
- let i = !0,
- n = e,
- a = r;
- do {
- let e = s(n, t, a)(t, a);
- e.matched ? ((n = e.value), (a = e.position)) : (i = !1);
- } while (i);
- return { matched: !0, position: a, value: n };
- }
- );
- }),
- (t, r) => a(e(t, r), e => i(e.value, t, r, e.position)(t, e.position))
- );
- }
- t(e.exports, 'token', () => i),
- t(e.exports, 'map', () => o),
- t(e.exports, 'option', () => l),
- t(e.exports, 'choice', () => c),
- t(e.exports, 'eitherOr', () => u),
- t(e.exports, 'many', () => d),
- t(e.exports, 'many1', () => h),
- t(e.exports, 'ab', () => p),
- t(e.exports, 'left', () => f),
- t(e.exports, 'right', () => m),
- t(e.exports, 'abc', () => g),
- t(e.exports, 'middle', () => b),
- t(e.exports, 'flatten', () => x),
- t(e.exports, 'leftAssoc2', () => y),
- t(e.exports, 'or', () => c),
- s('5TrSB');
- }),
- a('5TrSB', function (e, r) {
- function i(e, t, r) {
- return Math.max(e, Math.min(t, r));
- }
- function n(e) {
- return e.replace(/(\t)|(\r)|(\n)/g, (e, t, r) => (t ? '\\t' : r ? '\\r' : '\\n'));
- }
- t(e.exports, 'clamp', () => i), t(e.exports, 'escapeWhitespace', () => n);
- }),
- a('ys7X1', function (e, r) {
- t(e.exports, 'parseDocument', () => a);
- var i = s('lNrVt'),
- n = s('kyMdm');
- function a(e, t) {
- let r = new n.DomHandler(void 0, t);
- return new (0, i.Parser)(r, t).end(e), r.root;
- }
- s('a7ePg'), s('1RLFx'), s('eNMmU'), s('9YZre');
- }),
- a('lNrVt', function (e, r) {
- t(e.exports, 'Parser', () => g);
- var i = s('a7ePg'),
- n = s('1KiJy');
- let a = new Set(['input', 'option', 'optgroup', 'select', 'button', 'datalist', 'textarea']),
- o = new Set(['p']),
- l = new Set(['thead', 'tbody']),
- c = new Set(['dd', 'dt']),
- u = new Set(['rt', 'rp']),
- d = new Map([
- ['tr', new Set(['tr', 'th', 'td'])],
- ['th', new Set(['th'])],
- ['td', new Set(['thead', 'th', 'td'])],
- ['body', new Set(['head', 'link', 'script'])],
- ['li', new Set(['li'])],
- ['p', o],
- ['h1', o],
- ['h2', o],
- ['h3', o],
- ['h4', o],
- ['h5', o],
- ['h6', o],
- ['select', a],
- ['input', a],
- ['output', a],
- ['button', a],
- ['datalist', a],
- ['textarea', a],
- ['option', new Set(['option'])],
- ['optgroup', new Set(['optgroup', 'option'])],
- ['dd', c],
- ['dt', c],
- ['address', o],
- ['article', o],
- ['aside', o],
- ['blockquote', o],
- ['details', o],
- ['div', o],
- ['dl', o],
- ['fieldset', o],
- ['figcaption', o],
- ['figure', o],
- ['footer', o],
- ['form', o],
- ['header', o],
- ['hr', o],
- ['main', o],
- ['nav', o],
- ['ol', o],
- ['pre', o],
- ['section', o],
- ['table', o],
- ['ul', o],
- ['rt', u],
- ['rp', u],
- ['tbody', l],
- ['tfoot', l],
- ]),
- h = new Set([
- 'area',
- 'base',
- 'basefont',
- 'br',
- 'col',
- 'command',
- 'embed',
- 'frame',
- 'hr',
- 'img',
- 'input',
- 'isindex',
- 'keygen',
- 'link',
- 'meta',
- 'param',
- 'source',
- 'track',
- 'wbr',
- ]),
- p = new Set(['math', 'svg']),
- f = new Set(['mi', 'mo', 'mn', 'ms', 'mtext', 'annotation-xml', 'foreignobject', 'desc', 'title']),
- m = /\s|\//;
- class g {
- constructor(e, t = {}) {
- var r, n, s, a, o;
- (this.options = t),
- (this.startIndex = 0),
- (this.endIndex = 0),
- (this.openTagStart = 0),
- (this.tagname = ''),
- (this.attribname = ''),
- (this.attribvalue = ''),
- (this.attribs = null),
- (this.stack = []),
- (this.foreignContext = []),
- (this.buffers = []),
- (this.bufferOffset = 0),
- (this.writeIndex = 0),
- (this.ended = !1),
- (this.cbs = null != e ? e : {}),
- (this.lowerCaseTagNames = null !== (r = t.lowerCaseTags) && void 0 !== r ? r : !t.xmlMode),
- (this.lowerCaseAttributeNames =
- null !== (n = t.lowerCaseAttributeNames) && void 0 !== n ? n : !t.xmlMode),
- (this.tokenizer = new (null !== (s = t.Tokenizer) && void 0 !== s ? s : i.default)(
- this.options,
- this
- )),
- null === (o = (a = this.cbs).onparserinit) || void 0 === o || o.call(a, this);
- }
- ontext(e, t) {
- var r, i;
- let n = this.getSlice(e, t);
- (this.endIndex = t - 1),
- null === (i = (r = this.cbs).ontext) || void 0 === i || i.call(r, n),
- (this.startIndex = t);
- }
- ontextentity(e) {
- var t, r;
- let i = this.tokenizer.getSectionStart();
- (this.endIndex = i - 1),
- null === (r = (t = this.cbs).ontext) || void 0 === r || r.call(t, (0, n.fromCodePoint)(e)),
- (this.startIndex = i);
- }
- isVoidElement(e) {
- return !this.options.xmlMode && h.has(e);
- }
- onopentagname(e, t) {
- this.endIndex = t;
- let r = this.getSlice(e, t);
- this.lowerCaseTagNames && (r = r.toLowerCase()), this.emitOpenTag(r);
- }
- emitOpenTag(e) {
- var t, r, i, n;
- (this.openTagStart = this.startIndex), (this.tagname = e);
- let s = !this.options.xmlMode && d.get(e);
- if (s)
- for (; this.stack.length > 0 && s.has(this.stack[this.stack.length - 1]); ) {
- let e = this.stack.pop();
- null === (r = (t = this.cbs).onclosetag) || void 0 === r || r.call(t, e, !0);
- }
- !this.isVoidElement(e) &&
- (this.stack.push(e),
- p.has(e) ? this.foreignContext.push(!0) : f.has(e) && this.foreignContext.push(!1)),
- null === (n = (i = this.cbs).onopentagname) || void 0 === n || n.call(i, e),
- this.cbs.onopentag && (this.attribs = {});
- }
- endOpenTag(e) {
- var t, r;
- (this.startIndex = this.openTagStart),
- this.attribs &&
- (null === (r = (t = this.cbs).onopentag) ||
- void 0 === r ||
- r.call(t, this.tagname, this.attribs, e),
- (this.attribs = null)),
- this.cbs.onclosetag &&
- this.isVoidElement(this.tagname) &&
- this.cbs.onclosetag(this.tagname, !0),
- (this.tagname = '');
- }
- onopentagend(e) {
- (this.endIndex = e), this.endOpenTag(!1), (this.startIndex = e + 1);
- }
- onclosetag(e, t) {
- var r, i, n, s, a, o;
- this.endIndex = t;
- let l = this.getSlice(e, t);
- if (
- (this.lowerCaseTagNames && (l = l.toLowerCase()),
- (p.has(l) || f.has(l)) && this.foreignContext.pop(),
- this.isVoidElement(l))
- )
- this.options.xmlMode ||
- 'br' !== l ||
- (null === (i = (r = this.cbs).onopentagname) || void 0 === i || i.call(r, 'br'),
- null === (s = (n = this.cbs).onopentag) || void 0 === s || s.call(n, 'br', {}, !0),
- null === (o = (a = this.cbs).onclosetag) || void 0 === o || o.call(a, 'br', !1));
- else {
- let e = this.stack.lastIndexOf(l);
- if (-1 !== e) {
- if (this.cbs.onclosetag) {
- let t = this.stack.length - e;
- for (; t--; ) this.cbs.onclosetag(this.stack.pop(), 0 !== t);
- } else this.stack.length = e;
- } else this.options.xmlMode || 'p' !== l || (this.emitOpenTag('p'), this.closeCurrentTag(!0));
- }
- this.startIndex = t + 1;
- }
- onselfclosingtag(e) {
- (this.endIndex = e),
- this.options.xmlMode ||
- this.options.recognizeSelfClosing ||
- this.foreignContext[this.foreignContext.length - 1]
- ? (this.closeCurrentTag(!1), (this.startIndex = e + 1))
- : this.onopentagend(e);
- }
- closeCurrentTag(e) {
- var t, r;
- let i = this.tagname;
- this.endOpenTag(e),
- this.stack[this.stack.length - 1] === i &&
- (null === (r = (t = this.cbs).onclosetag) || void 0 === r || r.call(t, i, !e),
- this.stack.pop());
- }
- onattribname(e, t) {
- this.startIndex = e;
- let r = this.getSlice(e, t);
- this.attribname = this.lowerCaseAttributeNames ? r.toLowerCase() : r;
- }
- onattribdata(e, t) {
- this.attribvalue += this.getSlice(e, t);
- }
- onattribentity(e) {
- this.attribvalue += (0, n.fromCodePoint)(e);
- }
- onattribend(e, t) {
- var r, n;
- (this.endIndex = t),
- null === (n = (r = this.cbs).onattribute) ||
- void 0 === n ||
- n.call(
- r,
- this.attribname,
- this.attribvalue,
- e === i.QuoteType.Double
- ? '"'
- : e === i.QuoteType.Single
- ? "'"
- : e === i.QuoteType.NoValue
- ? void 0
- : null
- ),
- this.attribs &&
- !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname) &&
- (this.attribs[this.attribname] = this.attribvalue),
- (this.attribvalue = '');
- }
- getInstructionName(e) {
- let t = e.search(m),
- r = t < 0 ? e : e.substr(0, t);
- return this.lowerCaseTagNames && (r = r.toLowerCase()), r;
- }
- ondeclaration(e, t) {
- this.endIndex = t;
- let r = this.getSlice(e, t);
- if (this.cbs.onprocessinginstruction) {
- let e = this.getInstructionName(r);
- this.cbs.onprocessinginstruction(`!${e}`, `!${r}`);
- }
- this.startIndex = t + 1;
- }
- onprocessinginstruction(e, t) {
- this.endIndex = t;
- let r = this.getSlice(e, t);
- if (this.cbs.onprocessinginstruction) {
- let e = this.getInstructionName(r);
- this.cbs.onprocessinginstruction(`?${e}`, `?${r}`);
- }
- this.startIndex = t + 1;
- }
- oncomment(e, t, r) {
- var i, n, s, a;
- (this.endIndex = t),
- null === (n = (i = this.cbs).oncomment) || void 0 === n || n.call(i, this.getSlice(e, t - r)),
- null === (a = (s = this.cbs).oncommentend) || void 0 === a || a.call(s),
- (this.startIndex = t + 1);
- }
- oncdata(e, t, r) {
- var i, n, s, a, o, l, c, u, d, h;
- this.endIndex = t;
- let p = this.getSlice(e, t - r);
- this.options.xmlMode || this.options.recognizeCDATA
- ? (null === (n = (i = this.cbs).oncdatastart) || void 0 === n || n.call(i),
- null === (a = (s = this.cbs).ontext) || void 0 === a || a.call(s, p),
- null === (l = (o = this.cbs).oncdataend) || void 0 === l || l.call(o))
- : (null === (u = (c = this.cbs).oncomment) || void 0 === u || u.call(c, `[CDATA[${p}]]`),
- null === (h = (d = this.cbs).oncommentend) || void 0 === h || h.call(d)),
- (this.startIndex = t + 1);
- }
- onend() {
- var e, t;
- if (this.cbs.onclosetag) {
- this.endIndex = this.startIndex;
- for (let e = this.stack.length; e > 0; this.cbs.onclosetag(this.stack[--e], !0));
- }
- null === (t = (e = this.cbs).onend) || void 0 === t || t.call(e);
- }
- reset() {
- var e, t, r, i;
- null === (t = (e = this.cbs).onreset) || void 0 === t || t.call(e),
- this.tokenizer.reset(),
- (this.tagname = ''),
- (this.attribname = ''),
- (this.attribs = null),
- (this.stack.length = 0),
- (this.startIndex = 0),
- (this.endIndex = 0),
- null === (i = (r = this.cbs).onparserinit) || void 0 === i || i.call(r, this),
- (this.buffers.length = 0),
- (this.bufferOffset = 0),
- (this.writeIndex = 0),
- (this.ended = !1);
- }
- parseComplete(e) {
- this.reset(), this.end(e);
- }
- getSlice(e, t) {
- for (; e - this.bufferOffset >= this.buffers[0].length; ) this.shiftBuffer();
- let r = this.buffers[0].slice(e - this.bufferOffset, t - this.bufferOffset);
- for (; t - this.bufferOffset > this.buffers[0].length; )
- this.shiftBuffer(), (r += this.buffers[0].slice(0, t - this.bufferOffset));
- return r;
- }
- shiftBuffer() {
- (this.bufferOffset += this.buffers[0].length), this.writeIndex--, this.buffers.shift();
- }
- write(e) {
- var t, r;
- if (this.ended) {
- null === (r = (t = this.cbs).onerror) ||
- void 0 === r ||
- r.call(t, Error('.write() after done!'));
- return;
- }
- this.buffers.push(e), this.tokenizer.running && (this.tokenizer.write(e), this.writeIndex++);
- }
- end(e) {
- var t, r;
- if (this.ended) {
- null === (r = (t = this.cbs).onerror) || void 0 === r || r.call(t, Error('.end() after done!'));
- return;
- }
- e && this.write(e), (this.ended = !0), this.tokenizer.end();
- }
- pause() {
- this.tokenizer.pause();
- }
- resume() {
- for (this.tokenizer.resume(); this.tokenizer.running && this.writeIndex < this.buffers.length; )
- this.tokenizer.write(this.buffers[this.writeIndex++]);
- this.ended && this.tokenizer.end();
- }
- parseChunk(e) {
- this.write(e);
- }
- done(e) {
- this.end(e);
- }
- }
- }),
- a('a7ePg', function (e, r) {
- t(e.exports, 'QuoteType', () => c), t(e.exports, 'default', () => m);
- var i,
- n,
- a,
- o,
- l,
- c,
- u = s('1KiJy');
- function d(e) {
- return e === o.Space || e === o.NewLine || e === o.Tab || e === o.FormFeed || e === o.CarriageReturn;
- }
- function h(e) {
- return e === o.Slash || e === o.Gt || d(e);
- }
- function p(e) {
- return e >= o.Zero && e <= o.Nine;
- }
- ((i = o || (o = {}))[(i.Tab = 9)] = 'Tab'),
- (i[(i.NewLine = 10)] = 'NewLine'),
- (i[(i.FormFeed = 12)] = 'FormFeed'),
- (i[(i.CarriageReturn = 13)] = 'CarriageReturn'),
- (i[(i.Space = 32)] = 'Space'),
- (i[(i.ExclamationMark = 33)] = 'ExclamationMark'),
- (i[(i.Number = 35)] = 'Number'),
- (i[(i.Amp = 38)] = 'Amp'),
- (i[(i.SingleQuote = 39)] = 'SingleQuote'),
- (i[(i.DoubleQuote = 34)] = 'DoubleQuote'),
- (i[(i.Dash = 45)] = 'Dash'),
- (i[(i.Slash = 47)] = 'Slash'),
- (i[(i.Zero = 48)] = 'Zero'),
- (i[(i.Nine = 57)] = 'Nine'),
- (i[(i.Semi = 59)] = 'Semi'),
- (i[(i.Lt = 60)] = 'Lt'),
- (i[(i.Eq = 61)] = 'Eq'),
- (i[(i.Gt = 62)] = 'Gt'),
- (i[(i.Questionmark = 63)] = 'Questionmark'),
- (i[(i.UpperA = 65)] = 'UpperA'),
- (i[(i.LowerA = 97)] = 'LowerA'),
- (i[(i.UpperF = 70)] = 'UpperF'),
- (i[(i.LowerF = 102)] = 'LowerF'),
- (i[(i.UpperZ = 90)] = 'UpperZ'),
- (i[(i.LowerZ = 122)] = 'LowerZ'),
- (i[(i.LowerX = 120)] = 'LowerX'),
- (i[(i.OpeningSquareBracket = 91)] = 'OpeningSquareBracket'),
- ((n = l || (l = {}))[(n.Text = 1)] = 'Text'),
- (n[(n.BeforeTagName = 2)] = 'BeforeTagName'),
- (n[(n.InTagName = 3)] = 'InTagName'),
- (n[(n.InSelfClosingTag = 4)] = 'InSelfClosingTag'),
- (n[(n.BeforeClosingTagName = 5)] = 'BeforeClosingTagName'),
- (n[(n.InClosingTagName = 6)] = 'InClosingTagName'),
- (n[(n.AfterClosingTagName = 7)] = 'AfterClosingTagName'),
- (n[(n.BeforeAttributeName = 8)] = 'BeforeAttributeName'),
- (n[(n.InAttributeName = 9)] = 'InAttributeName'),
- (n[(n.AfterAttributeName = 10)] = 'AfterAttributeName'),
- (n[(n.BeforeAttributeValue = 11)] = 'BeforeAttributeValue'),
- (n[(n.InAttributeValueDq = 12)] = 'InAttributeValueDq'),
- (n[(n.InAttributeValueSq = 13)] = 'InAttributeValueSq'),
- (n[(n.InAttributeValueNq = 14)] = 'InAttributeValueNq'),
- (n[(n.BeforeDeclaration = 15)] = 'BeforeDeclaration'),
- (n[(n.InDeclaration = 16)] = 'InDeclaration'),
- (n[(n.InProcessingInstruction = 17)] = 'InProcessingInstruction'),
- (n[(n.BeforeComment = 18)] = 'BeforeComment'),
- (n[(n.CDATASequence = 19)] = 'CDATASequence'),
- (n[(n.InSpecialComment = 20)] = 'InSpecialComment'),
- (n[(n.InCommentLike = 21)] = 'InCommentLike'),
- (n[(n.BeforeSpecialS = 22)] = 'BeforeSpecialS'),
- (n[(n.SpecialStartSequence = 23)] = 'SpecialStartSequence'),
- (n[(n.InSpecialTag = 24)] = 'InSpecialTag'),
- (n[(n.BeforeEntity = 25)] = 'BeforeEntity'),
- (n[(n.BeforeNumericEntity = 26)] = 'BeforeNumericEntity'),
- (n[(n.InNamedEntity = 27)] = 'InNamedEntity'),
- (n[(n.InNumericEntity = 28)] = 'InNumericEntity'),
- (n[(n.InHexEntity = 29)] = 'InHexEntity'),
- ((a = c || (c = {}))[(a.NoValue = 0)] = 'NoValue'),
- (a[(a.Unquoted = 1)] = 'Unquoted'),
- (a[(a.Single = 2)] = 'Single'),
- (a[(a.Double = 3)] = 'Double');
- let f = {
- Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),
- CdataEnd: new Uint8Array([93, 93, 62]),
- CommentEnd: new Uint8Array([45, 45, 62]),
- ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),
- StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),
- TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]),
- };
- class m {
- constructor({ xmlMode: e = !1, decodeEntities: t = !0 }, r) {
- (this.cbs = r),
- (this.state = l.Text),
- (this.buffer = ''),
- (this.sectionStart = 0),
- (this.index = 0),
- (this.baseState = l.Text),
- (this.isSpecial = !1),
- (this.running = !0),
- (this.offset = 0),
- (this.currentSequence = void 0),
- (this.sequenceIndex = 0),
- (this.trieIndex = 0),
- (this.trieCurrent = 0),
- (this.entityResult = 0),
- (this.entityExcess = 0),
- (this.xmlMode = e),
- (this.decodeEntities = t),
- (this.entityTrie = e ? u.xmlDecodeTree : u.htmlDecodeTree);
- }
- reset() {
- (this.state = l.Text),
- (this.buffer = ''),
- (this.sectionStart = 0),
- (this.index = 0),
- (this.baseState = l.Text),
- (this.currentSequence = void 0),
- (this.running = !0),
- (this.offset = 0);
- }
- write(e) {
- (this.offset += this.buffer.length), (this.buffer = e), this.parse();
- }
- end() {
- this.running && this.finish();
- }
- pause() {
- this.running = !1;
- }
- resume() {
- (this.running = !0), this.index < this.buffer.length + this.offset && this.parse();
- }
- getIndex() {
- return this.index;
- }
- getSectionStart() {
- return this.sectionStart;
- }
- stateText(e) {
- e === o.Lt || (!this.decodeEntities && this.fastForwardTo(o.Lt))
- ? (this.index > this.sectionStart && this.cbs.ontext(this.sectionStart, this.index),
- (this.state = l.BeforeTagName),
- (this.sectionStart = this.index))
- : this.decodeEntities && e === o.Amp && (this.state = l.BeforeEntity);
- }
- stateSpecialStartSequence(e) {
- let t = this.sequenceIndex === this.currentSequence.length;
- if (t ? h(e) : (32 | e) === this.currentSequence[this.sequenceIndex]) {
- if (!t) {
- this.sequenceIndex++;
- return;
- }
- } else this.isSpecial = !1;
- (this.sequenceIndex = 0), (this.state = l.InTagName), this.stateInTagName(e);
- }
- stateInSpecialTag(e) {
- if (this.sequenceIndex === this.currentSequence.length) {
- if (e === o.Gt || d(e)) {
- let t = this.index - this.currentSequence.length;
- if (this.sectionStart < t) {
- let e = this.index;
- (this.index = t), this.cbs.ontext(this.sectionStart, t), (this.index = e);
- }
- (this.isSpecial = !1), (this.sectionStart = t + 2), this.stateInClosingTagName(e);
- return;
- }
- this.sequenceIndex = 0;
- }
- (32 | e) === this.currentSequence[this.sequenceIndex]
- ? (this.sequenceIndex += 1)
- : 0 === this.sequenceIndex
- ? this.currentSequence === f.TitleEnd
- ? this.decodeEntities && e === o.Amp && (this.state = l.BeforeEntity)
- : this.fastForwardTo(o.Lt) && (this.sequenceIndex = 1)
- : (this.sequenceIndex = Number(e === o.Lt));
- }
- stateCDATASequence(e) {
- e === f.Cdata[this.sequenceIndex]
- ? ++this.sequenceIndex === f.Cdata.length &&
- ((this.state = l.InCommentLike),
- (this.currentSequence = f.CdataEnd),
- (this.sequenceIndex = 0),
- (this.sectionStart = this.index + 1))
- : ((this.sequenceIndex = 0), (this.state = l.InDeclaration), this.stateInDeclaration(e));
- }
- fastForwardTo(e) {
- for (; ++this.index < this.buffer.length + this.offset; )
- if (this.buffer.charCodeAt(this.index - this.offset) === e) return !0;
- return (this.index = this.buffer.length + this.offset - 1), !1;
- }
- stateInCommentLike(e) {
- e === this.currentSequence[this.sequenceIndex]
- ? ++this.sequenceIndex === this.currentSequence.length &&
- (this.currentSequence === f.CdataEnd
- ? this.cbs.oncdata(this.sectionStart, this.index, 2)
- : this.cbs.oncomment(this.sectionStart, this.index, 2),
- (this.sequenceIndex = 0),
- (this.sectionStart = this.index + 1),
- (this.state = l.Text))
- : 0 === this.sequenceIndex
- ? this.fastForwardTo(this.currentSequence[0]) && (this.sequenceIndex = 1)
- : e !== this.currentSequence[this.sequenceIndex - 1] && (this.sequenceIndex = 0);
- }
- isTagStartChar(e) {
- return this.xmlMode ? !h(e) : (e >= o.LowerA && e <= o.LowerZ) || (e >= o.UpperA && e <= o.UpperZ);
- }
- startSpecial(e, t) {
- (this.isSpecial = !0),
- (this.currentSequence = e),
- (this.sequenceIndex = t),
- (this.state = l.SpecialStartSequence);
- }
- stateBeforeTagName(e) {
- if (e === o.ExclamationMark)
- (this.state = l.BeforeDeclaration), (this.sectionStart = this.index + 1);
- else if (e === o.Questionmark)
- (this.state = l.InProcessingInstruction), (this.sectionStart = this.index + 1);
- else if (this.isTagStartChar(e)) {
- let t = 32 | e;
- (this.sectionStart = this.index),
- this.xmlMode || t !== f.TitleEnd[2]
- ? (this.state = this.xmlMode || t !== f.ScriptEnd[2] ? l.InTagName : l.BeforeSpecialS)
- : this.startSpecial(f.TitleEnd, 3);
- } else
- e === o.Slash
- ? (this.state = l.BeforeClosingTagName)
- : ((this.state = l.Text), this.stateText(e));
- }
- stateInTagName(e) {
- h(e) &&
- (this.cbs.onopentagname(this.sectionStart, this.index),
- (this.sectionStart = -1),
- (this.state = l.BeforeAttributeName),
- this.stateBeforeAttributeName(e));
- }
- stateBeforeClosingTagName(e) {
- d(e) ||
- (e === o.Gt
- ? (this.state = l.Text)
- : ((this.state = this.isTagStartChar(e) ? l.InClosingTagName : l.InSpecialComment),
- (this.sectionStart = this.index)));
- }
- stateInClosingTagName(e) {
- (e === o.Gt || d(e)) &&
- (this.cbs.onclosetag(this.sectionStart, this.index),
- (this.sectionStart = -1),
- (this.state = l.AfterClosingTagName),
- this.stateAfterClosingTagName(e));
- }
- stateAfterClosingTagName(e) {
- (e === o.Gt || this.fastForwardTo(o.Gt)) &&
- ((this.state = l.Text), (this.baseState = l.Text), (this.sectionStart = this.index + 1));
- }
- stateBeforeAttributeName(e) {
- e === o.Gt
- ? (this.cbs.onopentagend(this.index),
- this.isSpecial
- ? ((this.state = l.InSpecialTag), (this.sequenceIndex = 0))
- : (this.state = l.Text),
- (this.baseState = this.state),
- (this.sectionStart = this.index + 1))
- : e === o.Slash
- ? (this.state = l.InSelfClosingTag)
- : d(e) || ((this.state = l.InAttributeName), (this.sectionStart = this.index));
- }
- stateInSelfClosingTag(e) {
- e === o.Gt
- ? (this.cbs.onselfclosingtag(this.index),
- (this.state = l.Text),
- (this.baseState = l.Text),
- (this.sectionStart = this.index + 1),
- (this.isSpecial = !1))
- : d(e) || ((this.state = l.BeforeAttributeName), this.stateBeforeAttributeName(e));
- }
- stateInAttributeName(e) {
- (e === o.Eq || h(e)) &&
- (this.cbs.onattribname(this.sectionStart, this.index),
- (this.sectionStart = -1),
- (this.state = l.AfterAttributeName),
- this.stateAfterAttributeName(e));
- }
- stateAfterAttributeName(e) {
- e === o.Eq
- ? (this.state = l.BeforeAttributeValue)
- : e === o.Slash || e === o.Gt
- ? (this.cbs.onattribend(c.NoValue, this.index),
- (this.state = l.BeforeAttributeName),
- this.stateBeforeAttributeName(e))
- : d(e) ||
- (this.cbs.onattribend(c.NoValue, this.index),
- (this.state = l.InAttributeName),
- (this.sectionStart = this.index));
- }
- stateBeforeAttributeValue(e) {
- e === o.DoubleQuote
- ? ((this.state = l.InAttributeValueDq), (this.sectionStart = this.index + 1))
- : e === o.SingleQuote
- ? ((this.state = l.InAttributeValueSq), (this.sectionStart = this.index + 1))
- : d(e) ||
- ((this.sectionStart = this.index),
- (this.state = l.InAttributeValueNq),
- this.stateInAttributeValueNoQuotes(e));
- }
- handleInAttributeValue(e, t) {
- e === t || (!this.decodeEntities && this.fastForwardTo(t))
- ? (this.cbs.onattribdata(this.sectionStart, this.index),
- (this.sectionStart = -1),
- this.cbs.onattribend(t === o.DoubleQuote ? c.Double : c.Single, this.index),
- (this.state = l.BeforeAttributeName))
- : this.decodeEntities &&
- e === o.Amp &&
- ((this.baseState = this.state), (this.state = l.BeforeEntity));
- }
- stateInAttributeValueDoubleQuotes(e) {
- this.handleInAttributeValue(e, o.DoubleQuote);
- }
- stateInAttributeValueSingleQuotes(e) {
- this.handleInAttributeValue(e, o.SingleQuote);
- }
- stateInAttributeValueNoQuotes(e) {
- d(e) || e === o.Gt
- ? (this.cbs.onattribdata(this.sectionStart, this.index),
- (this.sectionStart = -1),
- this.cbs.onattribend(c.Unquoted, this.index),
- (this.state = l.BeforeAttributeName),
- this.stateBeforeAttributeName(e))
- : this.decodeEntities &&
- e === o.Amp &&
- ((this.baseState = this.state), (this.state = l.BeforeEntity));
- }
- stateBeforeDeclaration(e) {
- e === o.OpeningSquareBracket
- ? ((this.state = l.CDATASequence), (this.sequenceIndex = 0))
- : (this.state = e === o.Dash ? l.BeforeComment : l.InDeclaration);
- }
- stateInDeclaration(e) {
- (e === o.Gt || this.fastForwardTo(o.Gt)) &&
- (this.cbs.ondeclaration(this.sectionStart, this.index),
- (this.state = l.Text),
- (this.sectionStart = this.index + 1));
- }
- stateInProcessingInstruction(e) {
- (e === o.Gt || this.fastForwardTo(o.Gt)) &&
- (this.cbs.onprocessinginstruction(this.sectionStart, this.index),
- (this.state = l.Text),
- (this.sectionStart = this.index + 1));
- }
- stateBeforeComment(e) {
- e === o.Dash
- ? ((this.state = l.InCommentLike),
- (this.currentSequence = f.CommentEnd),
- (this.sequenceIndex = 2),
- (this.sectionStart = this.index + 1))
- : (this.state = l.InDeclaration);
- }
- stateInSpecialComment(e) {
- (e === o.Gt || this.fastForwardTo(o.Gt)) &&
- (this.cbs.oncomment(this.sectionStart, this.index, 0),
- (this.state = l.Text),
- (this.sectionStart = this.index + 1));
- }
- stateBeforeSpecialS(e) {
- let t = 32 | e;
- t === f.ScriptEnd[3]
- ? this.startSpecial(f.ScriptEnd, 4)
- : t === f.StyleEnd[3]
- ? this.startSpecial(f.StyleEnd, 4)
- : ((this.state = l.InTagName), this.stateInTagName(e));
- }
- stateBeforeEntity(e) {
- (this.entityExcess = 1),
- (this.entityResult = 0),
- e === o.Number
- ? (this.state = l.BeforeNumericEntity)
- : e === o.Amp ||
- ((this.trieIndex = 0),
- (this.trieCurrent = this.entityTrie[0]),
- (this.state = l.InNamedEntity),
- this.stateInNamedEntity(e));
- }
- stateInNamedEntity(e) {
- if (
- ((this.entityExcess += 1),
- (this.trieIndex = (0, u.determineBranch)(
- this.entityTrie,
- this.trieCurrent,
- this.trieIndex + 1,
- e
- )),
- this.trieIndex < 0)
- ) {
- this.emitNamedEntity(), this.index--;
- return;
- }
- this.trieCurrent = this.entityTrie[this.trieIndex];
- let t = this.trieCurrent & u.BinTrieFlags.VALUE_LENGTH;
- if (t) {
- let r = (t >> 14) - 1;
- if (this.allowLegacyEntity() || e === o.Semi) {
- let e = this.index - this.entityExcess + 1;
- e > this.sectionStart && this.emitPartial(this.sectionStart, e),
- (this.entityResult = this.trieIndex),
- (this.trieIndex += r),
- (this.entityExcess = 0),
- (this.sectionStart = this.index + 1),
- 0 === r && this.emitNamedEntity();
- } else this.trieIndex += r;
- }
- }
- emitNamedEntity() {
- if (((this.state = this.baseState), 0 !== this.entityResult))
- switch ((this.entityTrie[this.entityResult] & u.BinTrieFlags.VALUE_LENGTH) >> 14) {
- case 1:
- this.emitCodePoint(this.entityTrie[this.entityResult] & ~u.BinTrieFlags.VALUE_LENGTH);
- break;
- case 2:
- this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
- break;
- case 3:
- this.emitCodePoint(this.entityTrie[this.entityResult + 1]),
- this.emitCodePoint(this.entityTrie[this.entityResult + 2]);
- }
- }
- stateBeforeNumericEntity(e) {
- (32 | e) === o.LowerX
- ? (this.entityExcess++, (this.state = l.InHexEntity))
- : ((this.state = l.InNumericEntity), this.stateInNumericEntity(e));
- }
- emitNumericEntity(e) {
- let t = this.index - this.entityExcess - 1;
- t + 2 + Number(this.state === l.InHexEntity) !== this.index &&
- (t > this.sectionStart && this.emitPartial(this.sectionStart, t),
- (this.sectionStart = this.index + Number(e)),
- this.emitCodePoint((0, u.replaceCodePoint)(this.entityResult))),
- (this.state = this.baseState);
- }
- stateInNumericEntity(e) {
- e === o.Semi
- ? this.emitNumericEntity(!0)
- : p(e)
- ? ((this.entityResult = 10 * this.entityResult + (e - o.Zero)), this.entityExcess++)
- : (this.allowLegacyEntity() ? this.emitNumericEntity(!1) : (this.state = this.baseState),
- this.index--);
- }
- stateInHexEntity(e) {
- e === o.Semi
- ? this.emitNumericEntity(!0)
- : p(e)
- ? ((this.entityResult = 16 * this.entityResult + (e - o.Zero)), this.entityExcess++)
- : (e >= o.UpperA && e <= o.UpperF) || (e >= o.LowerA && e <= o.LowerF)
- ? ((this.entityResult = 16 * this.entityResult + ((32 | e) - o.LowerA + 10)),
- this.entityExcess++)
- : (this.allowLegacyEntity() ? this.emitNumericEntity(!1) : (this.state = this.baseState),
- this.index--);
- }
- allowLegacyEntity() {
- return !this.xmlMode && (this.baseState === l.Text || this.baseState === l.InSpecialTag);
- }
- cleanup() {
- this.running &&
- this.sectionStart !== this.index &&
- (this.state === l.Text || (this.state === l.InSpecialTag && 0 === this.sequenceIndex)
- ? (this.cbs.ontext(this.sectionStart, this.index), (this.sectionStart = this.index))
- : (this.state === l.InAttributeValueDq ||
- this.state === l.InAttributeValueSq ||
- this.state === l.InAttributeValueNq) &&
- (this.cbs.onattribdata(this.sectionStart, this.index), (this.sectionStart = this.index)));
- }
- shouldContinue() {
- return this.index < this.buffer.length + this.offset && this.running;
- }
- parse() {
- for (; this.shouldContinue(); ) {
- let e = this.buffer.charCodeAt(this.index - this.offset);
- switch (this.state) {
- case l.Text:
- this.stateText(e);
- break;
- case l.SpecialStartSequence:
- this.stateSpecialStartSequence(e);
- break;
- case l.InSpecialTag:
- this.stateInSpecialTag(e);
- break;
- case l.CDATASequence:
- this.stateCDATASequence(e);
- break;
- case l.InAttributeValueDq:
- this.stateInAttributeValueDoubleQuotes(e);
- break;
- case l.InAttributeName:
- this.stateInAttributeName(e);
- break;
- case l.InCommentLike:
- this.stateInCommentLike(e);
- break;
- case l.InSpecialComment:
- this.stateInSpecialComment(e);
- break;
- case l.BeforeAttributeName:
- this.stateBeforeAttributeName(e);
- break;
- case l.InTagName:
- this.stateInTagName(e);
- break;
- case l.InClosingTagName:
- this.stateInClosingTagName(e);
- break;
- case l.BeforeTagName:
- this.stateBeforeTagName(e);
- break;
- case l.AfterAttributeName:
- this.stateAfterAttributeName(e);
- break;
- case l.InAttributeValueSq:
- this.stateInAttributeValueSingleQuotes(e);
- break;
- case l.BeforeAttributeValue:
- this.stateBeforeAttributeValue(e);
- break;
- case l.BeforeClosingTagName:
- this.stateBeforeClosingTagName(e);
- break;
- case l.AfterClosingTagName:
- this.stateAfterClosingTagName(e);
- break;
- case l.BeforeSpecialS:
- this.stateBeforeSpecialS(e);
- break;
- case l.InAttributeValueNq:
- this.stateInAttributeValueNoQuotes(e);
- break;
- case l.InSelfClosingTag:
- this.stateInSelfClosingTag(e);
- break;
- case l.InDeclaration:
- this.stateInDeclaration(e);
- break;
- case l.BeforeDeclaration:
- this.stateBeforeDeclaration(e);
- break;
- case l.BeforeComment:
- this.stateBeforeComment(e);
- break;
- case l.InProcessingInstruction:
- this.stateInProcessingInstruction(e);
- break;
- case l.InNamedEntity:
- this.stateInNamedEntity(e);
- break;
- case l.BeforeEntity:
- this.stateBeforeEntity(e);
- break;
- case l.InHexEntity:
- this.stateInHexEntity(e);
- break;
- case l.InNumericEntity:
- this.stateInNumericEntity(e);
- break;
- default:
- this.stateBeforeNumericEntity(e);
- }
- this.index++;
- }
- this.cleanup();
- }
- finish() {
- this.state === l.InNamedEntity && this.emitNamedEntity(),
- this.sectionStart < this.index && this.handleTrailingData(),
- this.cbs.onend();
- }
- handleTrailingData() {
- let e = this.buffer.length + this.offset;
- this.state === l.InCommentLike
- ? this.currentSequence === f.CdataEnd
- ? this.cbs.oncdata(this.sectionStart, e, 0)
- : this.cbs.oncomment(this.sectionStart, e, 0)
- : this.state === l.InNumericEntity && this.allowLegacyEntity()
- ? this.emitNumericEntity(!1)
- : this.state === l.InHexEntity && this.allowLegacyEntity()
- ? this.emitNumericEntity(!1)
- : this.state === l.InTagName ||
- this.state === l.BeforeAttributeName ||
- this.state === l.BeforeAttributeValue ||
- this.state === l.AfterAttributeName ||
- this.state === l.InAttributeName ||
- this.state === l.InAttributeValueSq ||
- this.state === l.InAttributeValueDq ||
- this.state === l.InAttributeValueNq ||
- this.state === l.InClosingTagName ||
- this.cbs.ontext(this.sectionStart, e);
- }
- emitPartial(e, t) {
- this.baseState !== l.Text && this.baseState !== l.InSpecialTag
- ? this.cbs.onattribdata(e, t)
- : this.cbs.ontext(e, t);
- }
- emitCodePoint(e) {
- this.baseState !== l.Text && this.baseState !== l.InSpecialTag
- ? this.cbs.onattribentity(e)
- : this.cbs.ontextentity(e);
- }
- }
- }),
- a('1KiJy', function (e, t) {
- var r,
- i,
- n,
- a,
- o,
- l,
- c,
- u,
- d =
- (e.exports && e.exports.__createBinding) ||
- (Object.create
- ? function (e, t, r, i) {
- void 0 === i && (i = r);
- var n = Object.getOwnPropertyDescriptor(t, r);
- (!n || ('get' in n ? !t.__esModule : n.writable || n.configurable)) &&
- (n = {
- enumerable: !0,
- get: function () {
- return t[r];
- },
- }),
- Object.defineProperty(e, i, n);
- }
- : function (e, t, r, i) {
- void 0 === i && (i = r), (e[i] = t[r]);
- }),
- h =
- (e.exports && e.exports.__setModuleDefault) ||
- (Object.create
- ? function (e, t) {
- Object.defineProperty(e, 'default', { enumerable: !0, value: t });
- }
- : function (e, t) {
- e.default = t;
- }),
- p =
- (e.exports && e.exports.__importStar) ||
- function (e) {
- if (e && e.__esModule) return e;
- var t = {};
- if (null != e)
- for (var r in e)
- 'default' !== r && Object.prototype.hasOwnProperty.call(e, r) && d(t, e, r);
- return h(t, e), t;
- },
- f =
- (e.exports && e.exports.__importDefault) ||
- function (e) {
- return e && e.__esModule ? e : { default: e };
- };
- Object.defineProperty(e.exports, '__esModule', { value: !0 }),
- (e.exports.decodeXML =
- e.exports.decodeHTMLStrict =
- e.exports.decodeHTMLAttribute =
- e.exports.decodeHTML =
- e.exports.determineBranch =
- e.exports.EntityDecoder =
- e.exports.DecodingMode =
- e.exports.BinTrieFlags =
- e.exports.fromCodePoint =
- e.exports.replaceCodePoint =
- e.exports.decodeCodePoint =
- e.exports.xmlDecodeTree =
- e.exports.htmlDecodeTree =
- void 0);
- var m = f(s('5sG9R'));
- e.exports.htmlDecodeTree = m.default;
- var g = f(s('cziBi'));
- e.exports.xmlDecodeTree = g.default;
- var b = p(s('6DwAw'));
- function x(e) {
- return e >= o.ZERO && e <= o.NINE;
- }
- (e.exports.decodeCodePoint = b.default),
- Object.defineProperty(e.exports, 'replaceCodePoint', {
- enumerable: !0,
- get: function () {
- return s('6DwAw').replaceCodePoint;
- },
- }),
- Object.defineProperty(e.exports, 'fromCodePoint', {
- enumerable: !0,
- get: function () {
- return s('6DwAw').fromCodePoint;
- },
- }),
- ((r = o || (o = {}))[(r.NUM = 35)] = 'NUM'),
- (r[(r.SEMI = 59)] = 'SEMI'),
- (r[(r.EQUALS = 61)] = 'EQUALS'),
- (r[(r.ZERO = 48)] = 'ZERO'),
- (r[(r.NINE = 57)] = 'NINE'),
- (r[(r.LOWER_A = 97)] = 'LOWER_A'),
- (r[(r.LOWER_F = 102)] = 'LOWER_F'),
- (r[(r.LOWER_X = 120)] = 'LOWER_X'),
- (r[(r.LOWER_Z = 122)] = 'LOWER_Z'),
- (r[(r.UPPER_A = 65)] = 'UPPER_A'),
- (r[(r.UPPER_F = 70)] = 'UPPER_F'),
- (r[(r.UPPER_Z = 90)] = 'UPPER_Z'),
- ((i = l = e.exports.BinTrieFlags || (e.exports.BinTrieFlags = {}))[(i.VALUE_LENGTH = 49152)] =
- 'VALUE_LENGTH'),
- (i[(i.BRANCH_LENGTH = 16256)] = 'BRANCH_LENGTH'),
- (i[(i.JUMP_TABLE = 127)] = 'JUMP_TABLE'),
- ((n = c || (c = {}))[(n.EntityStart = 0)] = 'EntityStart'),
- (n[(n.NumericStart = 1)] = 'NumericStart'),
- (n[(n.NumericDecimal = 2)] = 'NumericDecimal'),
- (n[(n.NumericHex = 3)] = 'NumericHex'),
- (n[(n.NamedEntity = 4)] = 'NamedEntity'),
- ((a = u = e.exports.DecodingMode || (e.exports.DecodingMode = {}))[(a.Legacy = 0)] = 'Legacy'),
- (a[(a.Strict = 1)] = 'Strict'),
- (a[(a.Attribute = 2)] = 'Attribute');
- var y = (function () {
- function e(e, t, r) {
- (this.decodeTree = e),
- (this.emitCodePoint = t),
- (this.errors = r),
- (this.state = c.EntityStart),
- (this.consumed = 1),
- (this.result = 0),
- (this.treeIndex = 0),
- (this.excess = 1),
- (this.decodeMode = u.Strict);
- }
- return (
- (e.prototype.startEntity = function (e) {
- (this.decodeMode = e),
- (this.state = c.EntityStart),
- (this.result = 0),
- (this.treeIndex = 0),
- (this.excess = 1),
- (this.consumed = 1);
- }),
- (e.prototype.write = function (e, t) {
- switch (this.state) {
- case c.EntityStart:
- if (e.charCodeAt(t) === o.NUM)
- return (
- (this.state = c.NumericStart),
- (this.consumed += 1),
- this.stateNumericStart(e, t + 1)
- );
- return (this.state = c.NamedEntity), this.stateNamedEntity(e, t);
- case c.NumericStart:
- return this.stateNumericStart(e, t);
- case c.NumericDecimal:
- return this.stateNumericDecimal(e, t);
- case c.NumericHex:
- return this.stateNumericHex(e, t);
- case c.NamedEntity:
- return this.stateNamedEntity(e, t);
- }
- }),
- (e.prototype.stateNumericStart = function (e, t) {
- return t >= e.length
- ? -1
- : (32 | e.charCodeAt(t)) === o.LOWER_X
- ? ((this.state = c.NumericHex), (this.consumed += 1), this.stateNumericHex(e, t + 1))
- : ((this.state = c.NumericDecimal), this.stateNumericDecimal(e, t));
- }),
- (e.prototype.addToNumericResult = function (e, t, r, i) {
- if (t !== r) {
- var n = r - t;
- (this.result = this.result * Math.pow(i, n) + parseInt(e.substr(t, n), i)),
- (this.consumed += n);
- }
- }),
- (e.prototype.stateNumericHex = function (e, t) {
- for (var r = t; t < e.length; ) {
- var i,
- n = e.charCodeAt(t);
- if (
- !x(n) &&
- (!((i = n) >= o.UPPER_A) || !(i <= o.UPPER_F)) &&
- (!(i >= o.LOWER_A) || !(i <= o.LOWER_F))
- )
- return this.addToNumericResult(e, r, t, 16), this.emitNumericEntity(n, 3);
- t += 1;
- }
- return this.addToNumericResult(e, r, t, 16), -1;
- }),
- (e.prototype.stateNumericDecimal = function (e, t) {
- for (var r = t; t < e.length; ) {
- var i = e.charCodeAt(t);
- if (!x(i)) return this.addToNumericResult(e, r, t, 10), this.emitNumericEntity(i, 2);
- t += 1;
- }
- return this.addToNumericResult(e, r, t, 10), -1;
- }),
- (e.prototype.emitNumericEntity = function (e, t) {
- var r;
- if (this.consumed <= t)
- return (
- null === (r = this.errors) ||
- void 0 === r ||
- r.absenceOfDigitsInNumericCharacterReference(this.consumed),
- 0
- );
- if (e === o.SEMI) this.consumed += 1;
- else if (this.decodeMode === u.Strict) return 0;
- return (
- this.emitCodePoint((0, b.replaceCodePoint)(this.result), this.consumed),
- this.errors &&
- (e !== o.SEMI && this.errors.missingSemicolonAfterCharacterReference(),
- this.errors.validateNumericCharacterReference(this.result)),
- this.consumed
- );
- }),
- (e.prototype.stateNamedEntity = function (e, t) {
- for (
- var r = this.decodeTree, i = r[this.treeIndex], n = (i & l.VALUE_LENGTH) >> 14;
- t < e.length;
- t++, this.excess++
- ) {
- var s = e.charCodeAt(t);
- if (((this.treeIndex = w(r, i, this.treeIndex + Math.max(1, n), s)), this.treeIndex < 0))
- return 0 === this.result ||
- (this.decodeMode === u.Attribute &&
- (0 === n ||
- (function (e) {
- var t;
- return (
- e === o.EQUALS ||
- ((t = e) >= o.UPPER_A && t <= o.UPPER_Z) ||
- (t >= o.LOWER_A && t <= o.LOWER_Z) ||
- x(t)
- );
- })(s)))
- ? 0
- : this.emitNotTerminatedNamedEntity();
- if (0 != (n = ((i = r[this.treeIndex]) & l.VALUE_LENGTH) >> 14)) {
- if (s === o.SEMI)
- return this.emitNamedEntityData(this.treeIndex, n, this.consumed + this.excess);
- this.decodeMode !== u.Strict &&
- ((this.result = this.treeIndex), (this.consumed += this.excess), (this.excess = 0));
- }
- }
- return -1;
- }),
- (e.prototype.emitNotTerminatedNamedEntity = function () {
- var e,
- t = this.result,
- r = (this.decodeTree[t] & l.VALUE_LENGTH) >> 14;
- return (
- this.emitNamedEntityData(t, r, this.consumed),
- null === (e = this.errors) || void 0 === e || e.missingSemicolonAfterCharacterReference(),
- this.consumed
- );
- }),
- (e.prototype.emitNamedEntityData = function (e, t, r) {
- var i = this.decodeTree;
- return (
- this.emitCodePoint(1 === t ? i[e] & ~l.VALUE_LENGTH : i[e + 1], r),
- 3 === t && this.emitCodePoint(i[e + 2], r),
- r
- );
- }),
- (e.prototype.end = function () {
- var e;
- switch (this.state) {
- case c.NamedEntity:
- return 0 !== this.result &&
- (this.decodeMode !== u.Attribute || this.result === this.treeIndex)
- ? this.emitNotTerminatedNamedEntity()
- : 0;
- case c.NumericDecimal:
- return this.emitNumericEntity(0, 2);
- case c.NumericHex:
- return this.emitNumericEntity(0, 3);
- case c.NumericStart:
- return (
- null === (e = this.errors) ||
- void 0 === e ||
- e.absenceOfDigitsInNumericCharacterReference(this.consumed),
- 0
- );
- case c.EntityStart:
- return 0;
- }
- }),
- e
- );
- })();
- function v(e) {
- var t = '',
- r = new y(e, function (e) {
- return (t += (0, b.fromCodePoint)(e));
- });
- return function (e, i) {
- for (var n = 0, s = 0; (s = e.indexOf('&', s)) >= 0; ) {
- (t += e.slice(n, s)), r.startEntity(i);
- var a = r.write(e, s + 1);
- if (a < 0) {
- n = s + r.end();
- break;
- }
- (n = s + a), (s = 0 === a ? n + 1 : n);
- }
- var o = t + e.slice(n);
- return (t = ''), o;
- };
- }
- function w(e, t, r, i) {
- var n = (t & l.BRANCH_LENGTH) >> 7,
- s = t & l.JUMP_TABLE;
- if (0 === n) return 0 !== s && i === s ? r : -1;
- if (s) {
- var a = i - s;
- return a < 0 || a >= n ? -1 : e[r + a] - 1;
- }
- for (var o = r, c = o + n - 1; o <= c; ) {
- var u = (o + c) >>> 1,
- d = e[u];
- if (d < i) o = u + 1;
- else {
- if (!(d > i)) return e[u + n];
- c = u - 1;
- }
- }
- return -1;
- }
- (e.exports.EntityDecoder = y), (e.exports.determineBranch = w);
- var E = v(m.default),
- k = v(g.default);
- (e.exports.decodeHTML = function (e, t) {
- return void 0 === t && (t = u.Legacy), E(e, t);
- }),
- (e.exports.decodeHTMLAttribute = function (e) {
- return E(e, u.Attribute);
- }),
- (e.exports.decodeHTMLStrict = function (e) {
- return E(e, u.Strict);
- }),
- (e.exports.decodeXML = function (e) {
- return k(e, u.Strict);
- });
- }),
- a('5sG9R', function (e, t) {
- Object.defineProperty(e.exports, '__esModule', { value: !0 }),
- (e.exports.default = new Uint16Array(
- 'ᵁ<Õıʊҝջאٵ۞ޢߖࠏઑඡ༉༦ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀\ud835\udd04rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀\ud835\udd38plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀\ud835\udc9cign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀\ud835\udd05pf;쀀\ud835\udd39eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀\ud835\udc9epĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀\ud835\udd07Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀\ud835\udd3bƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲϏϢϸontourIntegraìȹoɴ\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀\ud835\udc9frok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀\ud835\udd08rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀\ud835\udd3csilon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲy;䐤r;쀀\ud835\udd09lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀\ud835\udd3dAll;戀riertrf;愱còJTabcdfgorstרׯؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀\ud835\udd0a;拙pf;쀀\ud835\udd3eeater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀\ud835\udca2;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀\ud835\udd40a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ߂ߐĀiyޱrc;䄴;䐙r;쀀\ud835\udd0dpf;쀀\ud835\udd41ǣ߇\0ߌr;쀀\ud835\udca5rcy;䐈kcy;䐄HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶dil;䄶;䐚r;쀀\ud835\udd0epf;쀀\ud835\udd42cr;쀀\ud835\udca6րJTaceflmostࠥࠩࠬࡐࡣসে্ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४ĀnrࢃgleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀\ud835\udd0fĀ;eঽা拘ftarrow;懚idot;䄿ƀnpwਖਛgȀLRlr৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀\ud835\udd43erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼અઋp;椅y;䐜Ādl੯iumSpace;恟lintrf;愳r;쀀\ud835\udd10nusPlus;戓pf;쀀\ud835\udd44cò੶;䎜ҀJacefostuણધભીଔଙඑඞcy;䐊cute;䅃ƀaeyહાron;䅇dil;䅅;䐝ƀgswે૰ativeƀMTV૨ediumSpace;怋hiĀcn૦ëeryThiîtedĀGLଆreaterGreateòٳessLesóੈLine;䀊r;쀀\ud835\udd11ȀBnptଢନଷreak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪௫ఄ಄ದൡඅ櫬Āoungruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater;EFGLSTஶஷ扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨setĀ;Eೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀\ud835\udca9ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂෛ෧ขภยา฿ไlig;䅒cute耻Ó䃓Āiyීrc耻Ô䃔;䐞blac;䅐r;쀀\ud835\udd12rave耻Ò䃒ƀaei෮ෲcr;䅌ga;䎩cron;䎟pf;쀀\ud835\udd46enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀\ud835\udcaaash耻Ø䃘iŬืde耻Õ䃕es;樷ml耻Ö䃖erĀBP๋Āar๐๓r;怾acĀek๚;揞et;掴arenthesis;揜ҀacfhilorsງຊຏຒດຝະrtialD;戂y;䐟r;쀀\ud835\udd13i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ檻cedesȀ;EST່້扺qual;檯lantEqual;扼ilde;找me;怳Ādpuct;戏ortionĀ;aȥl;戝Āci༁༆r;쀀\ud835\udcab;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀\ud835\udd14pf;愚cr;쀀\ud835\udcacBEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL憒ar;懥eftArrow;懄eiling;按oǵ\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀\ud835\udd16ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»pArrow;憑gma;䎣allCircle;战pf;쀀\ud835\udd4aɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀\ud835\udcaear;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄቕቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHcቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀\ud835\udd17ĀeiቻDzኀ\0ኇefore;戴a;䎘ĀcnኘkSpace;쀀 Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀\ud835\udd4bipleDot;惛Āctዖዛr;쀀\ud835\udcafrok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀\ud835\udd18rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻on;䅲f;쀀\ud835\udd4cЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀\ud835\udcb0ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀\ud835\udd19pf;쀀\ud835\udd4dcr;쀀\ud835\udcb1dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀\ud835\udd1apf;쀀\ud835\udd4ecr;쀀\ud835\udcb2Ȁfiosᓋᓐᓒᓘr;쀀\ud835\udd1b;䎞pf;쀀\ud835\udd4fcr;쀀\ud835\udcb3ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀\ud835\udd1cpf;쀀\ud835\udd50cr;쀀\ud835\udcb4ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtèa;䎖r;愨pf;愤cr;쀀\ud835\udcb5ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀\ud835\udd1erave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀\ud835\udd52;Eaeiopᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;eᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀\ud835\udcb6;䀪mpĀ;eᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰᝃᝈ០៦ᠹᡐᜍ᥈ᥰot;櫭ĀcrᛶkȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;tbrk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯᝳ;䎲;愶een;扬r;쀀\ud835\udd1fgcostuvwឍឝឳេ៕៛ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀakoᠦᠵĀcn៲ᠣkƀlst֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀\ud835\udd53Ā;tᏋᡣom»Ꮜtie;拈DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ;敛;敘;攘;攔;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģbar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀\ud835\udcb7mi;恏mĀ;elƀ;bhᥨᥩᥫ䁜;槅sub;柈ŬᥴlĀ;e怢t»pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭒\0᯽\0ᰌƀcprᦲute;䄇̀;abcdsᦿᧀᧄ᧕᧙戩nd;橄rcup;橉Āau᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀\ud835\udd20ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r;Ecefms᩠ᩢᩫ᪤᪪旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ\0\0aĀ;t䀬;䁀ƀ;fl戁îᅠeĀmxent»eóɍǧ\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀\ud835\udd54oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀\ud835\udcb8Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯delprvw᭠᭬᭷ᮂᮬᯔarrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;pᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰻᰿ᱝᱩᱵᲞᲬᲷᴍᵻᶑᶫᶻ᷆᷍ròar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀\ud835\udd21arĀlrᲳᲵ»ࣜ»သʀaegsv᳂᳖᳜᳠mƀ;oș᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀\ud835\udd55ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀\ud835\udcb9;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄĀDoḆᴴoôĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀\ud835\udd22ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀\ud835\udd56ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»ṺƀaeiἒἚls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀\ud835\udd23lig;耀filig;쀀fjƀaltῙῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀\ud835\udd57ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧\0耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀\ud835\udcbbࢀEabcdefgijlnorstv₂₉₥₰₴⃰℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽ƀ;qsؾٌlanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀\ud835\udd24Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀\ud835\udd58Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqrⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0proør;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀\ud835\udd25sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀\ud835\udd59bar;怕ƀclt≯≴≸r;쀀\ud835\udcbdasè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀\ud835\udd26rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀\ud835\udd5aa;䎹uest耻¿䂿Āci⎊⎏r;쀀\ud835\udcbenʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀\ud835\udd27ath;䈷pf;쀀\ud835\udd5bǣ⏬\0⏱r;쀀\ud835\udcbfrcy;䑘kcy;䑔Ѐacfghjos␋␖␢ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀\ud835\udd28reen;䄸cy;䑅cy;䑜pf;쀀\ud835\udd5ccr;쀀\ud835\udcc0ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼ròòΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonóquigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀\ud835\udd29Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀\ud835\udd5dus;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀\ud835\udcc1mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀\ud835\udd2ao;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀\ud835\udd5eĀct⣸⣽r;쀀\ud835\udcc2pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roøurĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨íistĀ;sடr;쀀\ud835\udd2bȀEest⩦⩹⩼ƀ;qs⩭ƀ;qs⩴lanôií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀\ud835\udd5f膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast⭕⭚⭟lleìl;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖchimpqu⮽⯍⯙⬄⯤⯯Ȁ;cerല⯆ഷ⯉uå;쀀\ud835\udcc3ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭ååഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñĀ;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;cⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācrir;榿;쀀\ud835\udd2cͯ\0\0\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕⶥⶨrò᪀Āirⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀\ud835\udd60ƀaelⷔǒr;榷rp;榹;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ\0\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ脀¶;l䂶leìЃɩ\0\0m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀\ud835\udd2dƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳ᤈ⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀\ud835\udd61nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t⾴ïrel;抰Āci⿀⿅r;쀀\ud835\udcc5;䏈ncsp;怈̀fiopsu⋢⿱r;쀀\ud835\udd2epf;쀀\ud835\udd62rime;恗cr;쀀\ud835\udcc6ƀaeo⿸〉〓tĀei々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔ABHabcdefhilmnoprstuxけさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstwガクシスゼゾダッデナp;極Ā;fゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ìâヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀\ud835\udd2fĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘rrowĀ;tㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowóarpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓ròaòՑ;怏oustĀ;a㈞掱che»mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀\ud835\udd63us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀\ud835\udcc7Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀\ud835\udd30Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì耻䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;qኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀\ud835\udd64aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀\ud835\udcc8tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫwar;椪lig耻ß䃟㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rëƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀\ud835\udd31Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproøim»ኬsðኞĀas㚺㚮ðrn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀\ud835\udd65rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈadempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀\ud835\udcc9;䑆cy;䑛rok;䅧Āio㞋㞎xôheadĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀\ud835\udd32rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀\ud835\udd66̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀\ud835\udccaƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀\ud835\udd33tré㦮suĀbp㧯㧱»ജ»൙pf;쀀\ud835\udd67roðtré㦴Ācu㨆㨋r;쀀\ud835\udccbĀbp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀\ud835\udd34pf;쀀\ud835\udd68Ā;eᑹ㩦atèᑹcr;쀀\ud835\udcccૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜtré៑r;쀀\ud835\udd35ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀\ud835\udd69imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀\ud835\udccdĀpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀\ud835\udd36cy;䑗pf;쀀\ud835\udd6acr;쀀\ud835\udcceĀcm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀\ud835\udd37cy;䐶grarr;懝pf;쀀\ud835\udd6bcr;쀀\ud835\udccfĀjn㮅㮇;怍j;怌'
- .split('')
- .map(function (e) {
- return e.charCodeAt(0);
- })
- ));
- }),
- a('cziBi', function (e, t) {
- Object.defineProperty(e.exports, '__esModule', { value: !0 }),
- (e.exports.default = new Uint16Array(
- 'Ȁaglq \x15\x18\x1bɭ\x0f\0\0\x12p;䀦os;䀧t;䀾t;䀼uot;䀢'.split('').map(function (e) {
- return e.charCodeAt(0);
- })
- ));
- }),
- a('6DwAw', function (e, t) {
- Object.defineProperty(e.exports, '__esModule', { value: !0 }),
- (e.exports.replaceCodePoint = e.exports.fromCodePoint = void 0);
- var r,
- i = new Map([
- [0, 65533],
- [128, 8364],
- [130, 8218],
- [131, 402],
- [132, 8222],
- [133, 8230],
- [134, 8224],
- [135, 8225],
- [136, 710],
- [137, 8240],
- [138, 352],
- [139, 8249],
- [140, 338],
- [142, 381],
- [145, 8216],
- [146, 8217],
- [147, 8220],
- [148, 8221],
- [149, 8226],
- [150, 8211],
- [151, 8212],
- [152, 732],
- [153, 8482],
- [154, 353],
- [155, 8250],
- [156, 339],
- [158, 382],
- [159, 376],
- ]);
- function n(e) {
- var t;
- return (e >= 55296 && e <= 57343) || e > 1114111
- ? 65533
- : null !== (t = i.get(e)) && void 0 !== t
- ? t
- : e;
- }
- (e.exports.fromCodePoint =
- null !== (r = String.fromCodePoint) && void 0 !== r
- ? r
- : function (e) {
- var t = '';
- return (
- e > 65535 &&
- ((e -= 65536),
- (t += String.fromCharCode(((e >>> 10) & 1023) | 55296)),
- (e = 56320 | (1023 & e))),
- (t += String.fromCharCode(e))
- );
- }),
- (e.exports.replaceCodePoint = n),
- (e.exports.default = function (t) {
- return (0, e.exports.fromCodePoint)(n(t));
- });
- }),
- a('kyMdm', function (e, r) {
- t(e.exports, 'CDATA', () => s('lftuc').CDATA),
- t(e.exports, 'Comment', () => s('lftuc').Comment),
- t(e.exports, 'Document', () => s('lftuc').Document),
- t(e.exports, 'Element', () => s('lftuc').Element),
- t(e.exports, 'hasChildren', () => s('lftuc').hasChildren),
- t(e.exports, 'isCDATA', () => s('lftuc').isCDATA),
- t(e.exports, 'isComment', () => s('lftuc').isComment),
- t(e.exports, 'isTag', () => s('lftuc').isTag),
- t(e.exports, 'isText', () => s('lftuc').isText),
- t(e.exports, 'ProcessingInstruction', () => s('lftuc').ProcessingInstruction),
- t(e.exports, 'Text', () => s('lftuc').Text),
- t(e.exports, 'DomHandler', () => o);
- var i = s('1RLFx'),
- n = s('lftuc');
- let a = { withStartIndices: !1, withEndIndices: !1, xmlMode: !1 };
- class o {
- constructor(e, t, r) {
- (this.dom = []),
- (this.root = new n.Document(this.dom)),
- (this.done = !1),
- (this.tagStack = [this.root]),
- (this.lastNode = null),
- (this.parser = null),
- 'function' == typeof t && ((r = t), (t = a)),
- 'object' == typeof e && ((t = e), (e = void 0)),
- (this.callback = null != e ? e : null),
- (this.options = null != t ? t : a),
- (this.elementCB = null != r ? r : null);
- }
- onparserinit(e) {
- this.parser = e;
- }
- onreset() {
- (this.dom = []),
- (this.root = new n.Document(this.dom)),
- (this.done = !1),
- (this.tagStack = [this.root]),
- (this.lastNode = null),
- (this.parser = null);
- }
- onend() {
- this.done || ((this.done = !0), (this.parser = null), this.handleCallback(null));
- }
- onerror(e) {
- this.handleCallback(e);
- }
- onclosetag() {
- this.lastNode = null;
- let e = this.tagStack.pop();
- this.options.withEndIndices && (e.endIndex = this.parser.endIndex),
- this.elementCB && this.elementCB(e);
- }
- onopentag(e, t) {
- let r = this.options.xmlMode ? i.ElementType.Tag : void 0,
- s = new n.Element(e, t, void 0, r);
- this.addNode(s), this.tagStack.push(s);
- }
- ontext(e) {
- let { lastNode: t } = this;
- if (t && t.type === i.ElementType.Text)
- (t.data += e), this.options.withEndIndices && (t.endIndex = this.parser.endIndex);
- else {
- let t = new n.Text(e);
- this.addNode(t), (this.lastNode = t);
- }
- }
- oncomment(e) {
- if (this.lastNode && this.lastNode.type === i.ElementType.Comment) {
- this.lastNode.data += e;
- return;
- }
- let t = new n.Comment(e);
- this.addNode(t), (this.lastNode = t);
- }
- oncommentend() {
- this.lastNode = null;
- }
- oncdatastart() {
- let e = new n.Text(''),
- t = new n.CDATA([e]);
- this.addNode(t), (e.parent = t), (this.lastNode = e);
- }
- oncdataend() {
- this.lastNode = null;
- }
- onprocessinginstruction(e, t) {
- let r = new n.ProcessingInstruction(e, t);
- this.addNode(r);
- }
- handleCallback(e) {
- if ('function' == typeof this.callback) this.callback(e, this.dom);
- else if (e) throw e;
- }
- addNode(e) {
- let t = this.tagStack[this.tagStack.length - 1],
- r = t.children[t.children.length - 1];
- this.options.withStartIndices && (e.startIndex = this.parser.startIndex),
- this.options.withEndIndices && (e.endIndex = this.parser.endIndex),
- t.children.push(e),
- r && ((e.prev = r), (r.next = e)),
- (e.parent = t),
- (this.lastNode = null);
- }
- }
- }),
- a('lftuc', function (e, r) {
- t(e.exports, 'Text', () => o),
- t(e.exports, 'Comment', () => l),
- t(e.exports, 'ProcessingInstruction', () => c),
- t(e.exports, 'CDATA', () => d),
- t(e.exports, 'Document', () => h),
- t(e.exports, 'Element', () => p),
- t(e.exports, 'isTag', () => f),
- t(e.exports, 'isCDATA', () => m),
- t(e.exports, 'isText', () => g),
- t(e.exports, 'isComment', () => b),
- t(e.exports, 'hasChildren', () => x);
- var i = s('1RLFx');
- class n {
- constructor() {
- (this.parent = null),
- (this.prev = null),
- (this.next = null),
- (this.startIndex = null),
- (this.endIndex = null);
- }
- get parentNode() {
- return this.parent;
- }
- set parentNode(e) {
- this.parent = e;
- }
- get previousSibling() {
- return this.prev;
- }
- set previousSibling(e) {
- this.prev = e;
- }
- get nextSibling() {
- return this.next;
- }
- set nextSibling(e) {
- this.next = e;
- }
- cloneNode(e = !1) {
- return y(this, e);
- }
- }
- class a extends n {
- constructor(e) {
- super(), (this.data = e);
- }
- get nodeValue() {
- return this.data;
- }
- set nodeValue(e) {
- this.data = e;
- }
- }
- class o extends a {
- constructor() {
- super(...arguments), (this.type = i.ElementType.Text);
- }
- get nodeType() {
- return 3;
- }
- }
- class l extends a {
- constructor() {
- super(...arguments), (this.type = i.ElementType.Comment);
- }
- get nodeType() {
- return 8;
- }
- }
- class c extends a {
- constructor(e, t) {
- super(t), (this.name = e), (this.type = i.ElementType.Directive);
- }
- get nodeType() {
- return 1;
- }
- }
- class u extends n {
- constructor(e) {
- super(), (this.children = e);
- }
- get firstChild() {
- var e;
- return null !== (e = this.children[0]) && void 0 !== e ? e : null;
- }
- get lastChild() {
- return this.children.length > 0 ? this.children[this.children.length - 1] : null;
- }
- get childNodes() {
- return this.children;
- }
- set childNodes(e) {
- this.children = e;
- }
- }
- class d extends u {
- constructor() {
- super(...arguments), (this.type = i.ElementType.CDATA);
- }
- get nodeType() {
- return 4;
- }
- }
- class h extends u {
- constructor() {
- super(...arguments), (this.type = i.ElementType.Root);
- }
- get nodeType() {
- return 9;
- }
- }
- class p extends u {
- constructor(
- e,
- t,
- r = [],
- n = 'script' === e ? i.ElementType.Script : 'style' === e ? i.ElementType.Style : i.ElementType.Tag
- ) {
- super(r), (this.name = e), (this.attribs = t), (this.type = n);
- }
- get nodeType() {
- return 1;
- }
- get tagName() {
- return this.name;
- }
- set tagName(e) {
- this.name = e;
- }
- get attributes() {
- return Object.keys(this.attribs).map(e => {
- var t, r;
- return {
- name: e,
- value: this.attribs[e],
- namespace: null === (t = this['x-attribsNamespace']) || void 0 === t ? void 0 : t[e],
- prefix: null === (r = this['x-attribsPrefix']) || void 0 === r ? void 0 : r[e],
- };
- });
- }
- }
- function f(e) {
- return (0, i.isTag)(e);
- }
- function m(e) {
- return e.type === i.ElementType.CDATA;
- }
- function g(e) {
- return e.type === i.ElementType.Text;
- }
- function b(e) {
- return e.type === i.ElementType.Comment;
- }
- function x(e) {
- return Object.prototype.hasOwnProperty.call(e, 'children');
- }
- function y(e, t = !1) {
- let r;
- if (g(e)) r = new o(e.data);
- else if (b(e)) r = new l(e.data);
- else if (f(e)) {
- let i = t ? v(e.children) : [],
- n = new p(e.name, { ...e.attribs }, i);
- i.forEach(e => (e.parent = n)),
- null != e.namespace && (n.namespace = e.namespace),
- e['x-attribsNamespace'] && (n['x-attribsNamespace'] = { ...e['x-attribsNamespace'] }),
- e['x-attribsPrefix'] && (n['x-attribsPrefix'] = { ...e['x-attribsPrefix'] }),
- (r = n);
- } else if (m(e)) {
- let i = t ? v(e.children) : [],
- n = new d(i);
- i.forEach(e => (e.parent = n)), (r = n);
- } else if (e.type === i.ElementType.Root) {
- let i = t ? v(e.children) : [],
- n = new h(i);
- i.forEach(e => (e.parent = n)), e['x-mode'] && (n['x-mode'] = e['x-mode']), (r = n);
- } else if (e.type === i.ElementType.Directive) {
- let t = new c(e.name, e.data);
- null != e['x-name'] &&
- ((t['x-name'] = e['x-name']),
- (t['x-publicId'] = e['x-publicId']),
- (t['x-systemId'] = e['x-systemId'])),
- (r = t);
- } else throw Error(`Not implemented yet: ${e.type}`);
- return (
- (r.startIndex = e.startIndex),
- (r.endIndex = e.endIndex),
- null != e.sourceCodeLocation && (r.sourceCodeLocation = e.sourceCodeLocation),
- r
- );
- }
- function v(e) {
- let t = e.map(e => y(e, !0));
- for (let e = 1; e < t.length; e++) (t[e].prev = t[e - 1]), (t[e - 1].next = t[e]);
- return t;
- }
- }),
- a('eNMmU', function (e, r) {
- t(e.exports, 'getFeed', () => s('9YZre').getFeed),
- s('1LvIR'),
- s('63Sud'),
- s('fVc2z'),
- s('jAAIj'),
- s('7zAkY'),
- s('dIjgl'),
- s('9YZre'),
- s('kyMdm'),
- s('lftuc');
- }),
- a('1LvIR', function (e, r) {
- t(
- e.exports,
- 'textContent',
- () =>
- function e(t) {
- return Array.isArray(t)
- ? t.map(e).join('')
- : (0, i.hasChildren)(t) && !(0, i.isComment)(t)
- ? e(t.children)
- : (0, i.isText)(t)
- ? t.data
- : '';
- }
- ),
- s('kyMdm');
- var i = s('lftuc');
- s('avuoa'), s('1RLFx');
- }),
- a('avuoa', function (e, r) {
- t(e.exports, 'render', () => u), t(e.exports, 'default', () => d);
- var i = s('1RLFx');
- s('cAp4G');
- var n = s('i7QF4'),
- a = s('5CdvS');
- let o = new Set(['style', 'script', 'xmp', 'iframe', 'noembed', 'noframes', 'plaintext', 'noscript']);
- function l(e) {
- return e.replace(/"/g, '"');
- }
- let c = new Set([
- 'area',
- 'base',
- 'basefont',
- 'br',
- 'col',
- 'command',
- 'embed',
- 'frame',
- 'hr',
- 'img',
- 'input',
- 'isindex',
- 'keygen',
- 'link',
- 'meta',
- 'param',
- 'source',
- 'track',
- 'wbr',
- ]);
- function u(e, t = {}) {
- let r = 'length' in e ? e : [e],
- s = '';
- for (let e = 0; e < r.length; e++)
- s += (function (e, t) {
- switch (e.type) {
- case i.Root:
- return u(e.children, t);
- case i.Doctype:
- case i.Directive:
- return `<${e.data}>`;
- case i.Comment:
- return ``;
- case i.CDATA:
- return ``;
- case i.Script:
- case i.Style:
- case i.Tag:
- return (function (e, t) {
- var r;
- 'foreign' === t.xmlMode &&
- ((e.name =
- null !== (r = (0, a.elementNames).get(e.name)) && void 0 !== r
- ? r
- : e.name),
- e.parent && h.has(e.parent.name) && (t = { ...t, xmlMode: !1 })),
- !t.xmlMode && p.has(e.name) && (t = { ...t, xmlMode: 'foreign' });
- let i = `<${e.name}`,
- s = (function (e, t) {
- var r;
- if (!e) return;
- let i =
- (null !== (r = t.encodeEntities) && void 0 !== r
- ? r
- : t.decodeEntities) === !1
- ? l
- : t.xmlMode || 'utf8' !== t.encodeEntities
- ? n.encodeXML
- : n.escapeAttribute;
- return Object.keys(e)
- .map(r => {
- var n, s;
- let o = null !== (n = e[r]) && void 0 !== n ? n : '';
- return ('foreign' === t.xmlMode &&
- (r =
- null !== (s = (0, a.attributeNames).get(r)) && void 0 !== s
- ? s
- : r),
- t.emptyAttrs || t.xmlMode || '' !== o)
- ? `${r}="${i(o)}"`
- : r;
- })
- .join(' ');
- })(e.attribs, t);
- return (
- s && (i += ` ${s}`),
- 0 === e.children.length &&
- (t.xmlMode ? !1 !== t.selfClosingTags : t.selfClosingTags && c.has(e.name))
- ? (t.xmlMode || (i += ' '), (i += '/>'))
- : ((i += '>'),
- e.children.length > 0 && (i += u(e.children, t)),
- (t.xmlMode || !c.has(e.name)) && (i += `${e.name}>`)),
- i
- );
- })(e, t);
- case i.Text:
- return (function (e, t) {
- var r;
- let i = e.data || '';
- return (
- (null !== (r = t.encodeEntities) && void 0 !== r ? r : t.decodeEntities) ===
- !1 ||
- (!t.xmlMode && e.parent && o.has(e.parent.name)) ||
- (i =
- t.xmlMode || 'utf8' !== t.encodeEntities
- ? (0, n.encodeXML)(i)
- : (0, n.escapeText)(i)),
- i
- );
- })(e, t);
- }
- })(r[e], t);
- return s;
- }
- var d = u;
- let h = new Set(['mi', 'mo', 'mn', 'ms', 'mtext', 'annotation-xml', 'foreignObject', 'desc', 'title']),
- p = new Set(['svg', 'math']);
- }),
- a('cAp4G', function (e, r) {
- var i, n, a, o;
- t(e.exports, 'encodeXML', () => s('i7QF4').encodeXML),
- t(e.exports, 'escapeAttribute', () => s('i7QF4').escapeAttribute),
- t(e.exports, 'escapeText', () => s('i7QF4').escapeText),
- s('2vZnL'),
- s('6QxPZ'),
- s('i7QF4'),
- ((a = i || (i = {}))[(a.XML = 0)] = 'XML'),
- (a[(a.HTML = 1)] = 'HTML'),
- ((o = n || (n = {}))[(o.UTF8 = 0)] = 'UTF8'),
- (o[(o.ASCII = 1)] = 'ASCII'),
- (o[(o.Extensive = 2)] = 'Extensive'),
- (o[(o.Attribute = 3)] = 'Attribute'),
- (o[(o.Text = 4)] = 'Text');
- }),
- a('2vZnL', function (e, r) {
- t(e.exports, 'DecodingMode', () => d),
- t(e.exports, 'decodeHTML', () => v),
- t(e.exports, 'decodeXML', () => w);
- var i,
- n,
- a,
- o,
- l,
- c,
- u,
- d,
- h = s('iedzx'),
- p = s('cjXy9'),
- f = s('1mqh8');
- function m(e) {
- return e >= l.ZERO && e <= l.NINE;
- }
- ((i = l || (l = {}))[(i.NUM = 35)] = 'NUM'),
- (i[(i.SEMI = 59)] = 'SEMI'),
- (i[(i.EQUALS = 61)] = 'EQUALS'),
- (i[(i.ZERO = 48)] = 'ZERO'),
- (i[(i.NINE = 57)] = 'NINE'),
- (i[(i.LOWER_A = 97)] = 'LOWER_A'),
- (i[(i.LOWER_F = 102)] = 'LOWER_F'),
- (i[(i.LOWER_X = 120)] = 'LOWER_X'),
- (i[(i.LOWER_Z = 122)] = 'LOWER_Z'),
- (i[(i.UPPER_A = 65)] = 'UPPER_A'),
- (i[(i.UPPER_F = 70)] = 'UPPER_F'),
- (i[(i.UPPER_Z = 90)] = 'UPPER_Z'),
- ((n = c || (c = {}))[(n.VALUE_LENGTH = 49152)] = 'VALUE_LENGTH'),
- (n[(n.BRANCH_LENGTH = 16256)] = 'BRANCH_LENGTH'),
- (n[(n.JUMP_TABLE = 127)] = 'JUMP_TABLE'),
- ((a = u || (u = {}))[(a.EntityStart = 0)] = 'EntityStart'),
- (a[(a.NumericStart = 1)] = 'NumericStart'),
- (a[(a.NumericDecimal = 2)] = 'NumericDecimal'),
- (a[(a.NumericHex = 3)] = 'NumericHex'),
- (a[(a.NamedEntity = 4)] = 'NamedEntity'),
- ((o = d || (d = {}))[(o.Legacy = 0)] = 'Legacy'),
- (o[(o.Strict = 1)] = 'Strict'),
- (o[(o.Attribute = 2)] = 'Attribute');
- class g {
- constructor(e, t, r) {
- (this.decodeTree = e),
- (this.emitCodePoint = t),
- (this.errors = r),
- (this.state = u.EntityStart),
- (this.consumed = 1),
- (this.result = 0),
- (this.treeIndex = 0),
- (this.excess = 1),
- (this.decodeMode = d.Strict);
- }
- startEntity(e) {
- (this.decodeMode = e),
- (this.state = u.EntityStart),
- (this.result = 0),
- (this.treeIndex = 0),
- (this.excess = 1),
- (this.consumed = 1);
- }
- write(e, t) {
- switch (this.state) {
- case u.EntityStart:
- if (e.charCodeAt(t) === l.NUM)
- return (
- (this.state = u.NumericStart),
- (this.consumed += 1),
- this.stateNumericStart(e, t + 1)
- );
- return (this.state = u.NamedEntity), this.stateNamedEntity(e, t);
- case u.NumericStart:
- return this.stateNumericStart(e, t);
- case u.NumericDecimal:
- return this.stateNumericDecimal(e, t);
- case u.NumericHex:
- return this.stateNumericHex(e, t);
- case u.NamedEntity:
- return this.stateNamedEntity(e, t);
- }
- }
- stateNumericStart(e, t) {
- return t >= e.length
- ? -1
- : (32 | e.charCodeAt(t)) === l.LOWER_X
- ? ((this.state = u.NumericHex), (this.consumed += 1), this.stateNumericHex(e, t + 1))
- : ((this.state = u.NumericDecimal), this.stateNumericDecimal(e, t));
- }
- addToNumericResult(e, t, r, i) {
- if (t !== r) {
- let n = r - t;
- (this.result = this.result * Math.pow(i, n) + parseInt(e.substr(t, n), i)),
- (this.consumed += n);
- }
- }
- stateNumericHex(e, t) {
- let r = t;
- for (; t < e.length; ) {
- var i;
- let n = e.charCodeAt(t);
- if (
- !m(n) &&
- (!((i = n) >= l.UPPER_A) || !(i <= l.UPPER_F)) &&
- (!(i >= l.LOWER_A) || !(i <= l.LOWER_F))
- )
- return this.addToNumericResult(e, r, t, 16), this.emitNumericEntity(n, 3);
- t += 1;
- }
- return this.addToNumericResult(e, r, t, 16), -1;
- }
- stateNumericDecimal(e, t) {
- let r = t;
- for (; t < e.length; ) {
- let i = e.charCodeAt(t);
- if (!m(i)) return this.addToNumericResult(e, r, t, 10), this.emitNumericEntity(i, 2);
- t += 1;
- }
- return this.addToNumericResult(e, r, t, 10), -1;
- }
- emitNumericEntity(e, t) {
- var r;
- if (this.consumed <= t)
- return (
- null === (r = this.errors) ||
- void 0 === r ||
- r.absenceOfDigitsInNumericCharacterReference(this.consumed),
- 0
- );
- if (e === l.SEMI) this.consumed += 1;
- else if (this.decodeMode === d.Strict) return 0;
- return (
- this.emitCodePoint((0, f.replaceCodePoint)(this.result), this.consumed),
- this.errors &&
- (e !== l.SEMI && this.errors.missingSemicolonAfterCharacterReference(),
- this.errors.validateNumericCharacterReference(this.result)),
- this.consumed
- );
- }
- stateNamedEntity(e, t) {
- let { decodeTree: r } = this,
- i = r[this.treeIndex],
- n = (i & c.VALUE_LENGTH) >> 14;
- for (; t < e.length; t++, this.excess++) {
- let s = e.charCodeAt(t);
- if (
- ((this.treeIndex = (function (e, t, r, i) {
- let n = (t & c.BRANCH_LENGTH) >> 7,
- s = t & c.JUMP_TABLE;
- if (0 === n) return 0 !== s && i === s ? r : -1;
- if (s) {
- let t = i - s;
- return t < 0 || t >= n ? -1 : e[r + t] - 1;
- }
- let a = r,
- o = a + n - 1;
- for (; a <= o; ) {
- let t = (a + o) >>> 1,
- r = e[t];
- if (r < i) a = t + 1;
- else {
- if (!(r > i)) return e[t + n];
- o = t - 1;
- }
- }
- return -1;
- })(r, i, this.treeIndex + Math.max(1, n), s)),
- this.treeIndex < 0)
- )
- return 0 === this.result ||
- (this.decodeMode === d.Attribute &&
- (0 === n ||
- (function (e) {
- var t;
- return (
- e === l.EQUALS ||
- ((t = e) >= l.UPPER_A && t <= l.UPPER_Z) ||
- (t >= l.LOWER_A && t <= l.LOWER_Z) ||
- m(t)
- );
- })(s)))
- ? 0
- : this.emitNotTerminatedNamedEntity();
- if (0 != (n = ((i = r[this.treeIndex]) & c.VALUE_LENGTH) >> 14)) {
- if (s === l.SEMI)
- return this.emitNamedEntityData(this.treeIndex, n, this.consumed + this.excess);
- this.decodeMode !== d.Strict &&
- ((this.result = this.treeIndex), (this.consumed += this.excess), (this.excess = 0));
- }
- }
- return -1;
- }
- emitNotTerminatedNamedEntity() {
- var e;
- let { result: t, decodeTree: r } = this,
- i = (r[t] & c.VALUE_LENGTH) >> 14;
- return (
- this.emitNamedEntityData(t, i, this.consumed),
- null === (e = this.errors) || void 0 === e || e.missingSemicolonAfterCharacterReference(),
- this.consumed
- );
- }
- emitNamedEntityData(e, t, r) {
- let { decodeTree: i } = this;
- return (
- this.emitCodePoint(1 === t ? i[e] & ~c.VALUE_LENGTH : i[e + 1], r),
- 3 === t && this.emitCodePoint(i[e + 2], r),
- r
- );
- }
- end() {
- var e;
- switch (this.state) {
- case u.NamedEntity:
- return 0 !== this.result &&
- (this.decodeMode !== d.Attribute || this.result === this.treeIndex)
- ? this.emitNotTerminatedNamedEntity()
- : 0;
- case u.NumericDecimal:
- return this.emitNumericEntity(0, 2);
- case u.NumericHex:
- return this.emitNumericEntity(0, 3);
- case u.NumericStart:
- return (
- null === (e = this.errors) ||
- void 0 === e ||
- e.absenceOfDigitsInNumericCharacterReference(this.consumed),
- 0
- );
- case u.EntityStart:
- return 0;
- }
- }
- }
- function b(e) {
- let t = '',
- r = new g(e, e => (t += (0, f.fromCodePoint)(e)));
- return function (e, i) {
- let n = 0,
- s = 0;
- for (; (s = e.indexOf('&', s)) >= 0; ) {
- (t += e.slice(n, s)), r.startEntity(i);
- let a = r.write(e, s + 1);
- if (a < 0) {
- n = s + r.end();
- break;
- }
- (n = s + a), (s = 0 === a ? n + 1 : n);
- }
- let a = t + e.slice(n);
- return (t = ''), a;
- };
- }
- let x = b(h.default),
- y = b(p.default);
- function v(e, t = d.Legacy) {
- return x(e, t);
- }
- function w(e) {
- return y(e, d.Strict);
- }
- }),
- a('iedzx', function (e, r) {
- t(e.exports, 'default', () => i);
- var i = new Uint16Array(
- 'ᵁ<Õıʊҝջאٵ۞ޢߖࠏઑඡ༉༦ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀\ud835\udd04rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀\ud835\udd38plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀\ud835\udc9cign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀\ud835\udd05pf;쀀\ud835\udd39eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀\ud835\udc9epĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀\ud835\udd07Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀\ud835\udd3bƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲϏϢϸontourIntegraìȹoɴ\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀\ud835\udc9frok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀\ud835\udd08rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀\ud835\udd3csilon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲy;䐤r;쀀\ud835\udd09lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀\ud835\udd3dAll;戀riertrf;愱còJTabcdfgorstרׯؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀\ud835\udd0a;拙pf;쀀\ud835\udd3eeater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀\ud835\udca2;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀\ud835\udd40a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ߂ߐĀiyޱrc;䄴;䐙r;쀀\ud835\udd0dpf;쀀\ud835\udd41ǣ߇\0ߌr;쀀\ud835\udca5rcy;䐈kcy;䐄HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶dil;䄶;䐚r;쀀\ud835\udd0epf;쀀\ud835\udd42cr;쀀\ud835\udca6րJTaceflmostࠥࠩࠬࡐࡣসে্ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४ĀnrࢃgleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀\ud835\udd0fĀ;eঽা拘ftarrow;懚idot;䄿ƀnpwਖਛgȀLRlr৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀\ud835\udd43erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼અઋp;椅y;䐜Ādl੯iumSpace;恟lintrf;愳r;쀀\ud835\udd10nusPlus;戓pf;쀀\ud835\udd44cò੶;䎜ҀJacefostuણધભીଔଙඑඞcy;䐊cute;䅃ƀaeyહાron;䅇dil;䅅;䐝ƀgswે૰ativeƀMTV૨ediumSpace;怋hiĀcn૦ëeryThiîtedĀGLଆreaterGreateòٳessLesóੈLine;䀊r;쀀\ud835\udd11ȀBnptଢନଷreak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪௫ఄ಄ದൡඅ櫬Āoungruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater;EFGLSTஶஷ扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨setĀ;Eೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀\ud835\udca9ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂෛ෧ขภยา฿ไlig;䅒cute耻Ó䃓Āiyීrc耻Ô䃔;䐞blac;䅐r;쀀\ud835\udd12rave耻Ò䃒ƀaei෮ෲcr;䅌ga;䎩cron;䎟pf;쀀\ud835\udd46enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀\ud835\udcaaash耻Ø䃘iŬืde耻Õ䃕es;樷ml耻Ö䃖erĀBP๋Āar๐๓r;怾acĀek๚;揞et;掴arenthesis;揜ҀacfhilorsງຊຏຒດຝະrtialD;戂y;䐟r;쀀\ud835\udd13i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ檻cedesȀ;EST່້扺qual;檯lantEqual;扼ilde;找me;怳Ādpuct;戏ortionĀ;aȥl;戝Āci༁༆r;쀀\ud835\udcab;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀\ud835\udd14pf;愚cr;쀀\ud835\udcacBEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL憒ar;懥eftArrow;懄eiling;按oǵ\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀\ud835\udd16ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»pArrow;憑gma;䎣allCircle;战pf;쀀\ud835\udd4aɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀\ud835\udcaear;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄቕቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHcቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀\ud835\udd17ĀeiቻDzኀ\0ኇefore;戴a;䎘ĀcnኘkSpace;쀀 Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀\ud835\udd4bipleDot;惛Āctዖዛr;쀀\ud835\udcafrok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀\ud835\udd18rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻on;䅲f;쀀\ud835\udd4cЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀\ud835\udcb0ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀\ud835\udd19pf;쀀\ud835\udd4dcr;쀀\ud835\udcb1dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀\ud835\udd1apf;쀀\ud835\udd4ecr;쀀\ud835\udcb2Ȁfiosᓋᓐᓒᓘr;쀀\ud835\udd1b;䎞pf;쀀\ud835\udd4fcr;쀀\ud835\udcb3ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀\ud835\udd1cpf;쀀\ud835\udd50cr;쀀\ud835\udcb4ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtèa;䎖r;愨pf;愤cr;쀀\ud835\udcb5ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀\ud835\udd1erave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀\ud835\udd52;Eaeiopᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;eᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀\ud835\udcb6;䀪mpĀ;eᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰᝃᝈ០៦ᠹᡐᜍ᥈ᥰot;櫭ĀcrᛶkȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;tbrk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯᝳ;䎲;愶een;扬r;쀀\ud835\udd1fgcostuvwឍឝឳេ៕៛ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀakoᠦᠵĀcn៲ᠣkƀlst֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀\ud835\udd53Ā;tᏋᡣom»Ꮜtie;拈DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ;敛;敘;攘;攔;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģbar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀\ud835\udcb7mi;恏mĀ;elƀ;bhᥨᥩᥫ䁜;槅sub;柈ŬᥴlĀ;e怢t»pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭒\0᯽\0ᰌƀcprᦲute;䄇̀;abcdsᦿᧀᧄ᧕᧙戩nd;橄rcup;橉Āau᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀\ud835\udd20ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r;Ecefms᩠ᩢᩫ᪤᪪旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ\0\0aĀ;t䀬;䁀ƀ;fl戁îᅠeĀmxent»eóɍǧ\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀\ud835\udd54oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀\ud835\udcb8Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯delprvw᭠᭬᭷ᮂᮬᯔarrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;pᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰻᰿ᱝᱩᱵᲞᲬᲷᴍᵻᶑᶫᶻ᷆᷍ròar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀\ud835\udd21arĀlrᲳᲵ»ࣜ»သʀaegsv᳂᳖᳜᳠mƀ;oș᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀\ud835\udd55ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀\ud835\udcb9;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄĀDoḆᴴoôĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀\ud835\udd22ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀\ud835\udd56ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»ṺƀaeiἒἚls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀\ud835\udd23lig;耀filig;쀀fjƀaltῙῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀\ud835\udd57ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧\0耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀\ud835\udcbbࢀEabcdefgijlnorstv₂₉₥₰₴⃰℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽ƀ;qsؾٌlanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀\ud835\udd24Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀\ud835\udd58Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqrⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0proør;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀\ud835\udd25sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀\ud835\udd59bar;怕ƀclt≯≴≸r;쀀\ud835\udcbdasè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀\ud835\udd26rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀\ud835\udd5aa;䎹uest耻¿䂿Āci⎊⎏r;쀀\ud835\udcbenʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀\ud835\udd27ath;䈷pf;쀀\ud835\udd5bǣ⏬\0⏱r;쀀\ud835\udcbfrcy;䑘kcy;䑔Ѐacfghjos␋␖␢ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀\ud835\udd28reen;䄸cy;䑅cy;䑜pf;쀀\ud835\udd5ccr;쀀\ud835\udcc0ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼ròòΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonóquigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀\ud835\udd29Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀\ud835\udd5dus;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀\ud835\udcc1mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀\ud835\udd2ao;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀\ud835\udd5eĀct⣸⣽r;쀀\ud835\udcc2pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roøurĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨íistĀ;sடr;쀀\ud835\udd2bȀEest⩦⩹⩼ƀ;qs⩭ƀ;qs⩴lanôií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀\ud835\udd5f膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast⭕⭚⭟lleìl;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖchimpqu⮽⯍⯙⬄⯤⯯Ȁ;cerല⯆ഷ⯉uå;쀀\ud835\udcc3ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭ååഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñĀ;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;cⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācrir;榿;쀀\ud835\udd2cͯ\0\0\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕⶥⶨrò᪀Āirⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀\ud835\udd60ƀaelⷔǒr;榷rp;榹;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ\0\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ脀¶;l䂶leìЃɩ\0\0m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀\ud835\udd2dƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳ᤈ⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀\ud835\udd61nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t⾴ïrel;抰Āci⿀⿅r;쀀\ud835\udcc5;䏈ncsp;怈̀fiopsu⋢⿱r;쀀\ud835\udd2epf;쀀\ud835\udd62rime;恗cr;쀀\ud835\udcc6ƀaeo⿸〉〓tĀei々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔ABHabcdefhilmnoprstuxけさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstwガクシスゼゾダッデナp;極Ā;fゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ìâヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀\ud835\udd2fĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘rrowĀ;tㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowóarpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓ròaòՑ;怏oustĀ;a㈞掱che»mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀\ud835\udd63us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀\ud835\udcc7Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀\ud835\udd30Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì耻䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;qኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀\ud835\udd64aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀\ud835\udcc8tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫwar;椪lig耻ß䃟㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rëƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀\ud835\udd31Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproøim»ኬsðኞĀas㚺㚮ðrn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀\ud835\udd65rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈadempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀\ud835\udcc9;䑆cy;䑛rok;䅧Āio㞋㞎xôheadĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀\ud835\udd32rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀\ud835\udd66̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀\ud835\udccaƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀\ud835\udd33tré㦮suĀbp㧯㧱»ജ»൙pf;쀀\ud835\udd67roðtré㦴Ācu㨆㨋r;쀀\ud835\udccbĀbp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀\ud835\udd34pf;쀀\ud835\udd68Ā;eᑹ㩦atèᑹcr;쀀\ud835\udcccૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜtré៑r;쀀\ud835\udd35ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀\ud835\udd69imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀\ud835\udccdĀpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀\ud835\udd36cy;䑗pf;쀀\ud835\udd6acr;쀀\ud835\udcceĀcm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀\ud835\udd37cy;䐶grarr;懝pf;쀀\ud835\udd6bcr;쀀\ud835\udccfĀjn㮅㮇;怍j;怌'
- .split('')
- .map(e => e.charCodeAt(0))
- );
- }),
- a('cjXy9', function (e, r) {
- t(e.exports, 'default', () => i);
- var i = new Uint16Array(
- 'Ȁaglq \x15\x18\x1bɭ\x0f\0\0\x12p;䀦os;䀧t;䀾t;䀼uot;䀢'.split('').map(e => e.charCodeAt(0))
- );
- }),
- a('1mqh8', function (e, r) {
- var i;
- t(e.exports, 'fromCodePoint', () => s), t(e.exports, 'replaceCodePoint', () => a);
- let n = new Map([
- [0, 65533],
- [128, 8364],
- [130, 8218],
- [131, 402],
- [132, 8222],
- [133, 8230],
- [134, 8224],
- [135, 8225],
- [136, 710],
- [137, 8240],
- [138, 352],
- [139, 8249],
- [140, 338],
- [142, 381],
- [145, 8216],
- [146, 8217],
- [147, 8220],
- [148, 8221],
- [149, 8226],
- [150, 8211],
- [151, 8212],
- [152, 732],
- [153, 8482],
- [154, 353],
- [155, 8250],
- [156, 339],
- [158, 382],
- [159, 376],
- ]),
- s =
- null !== (i = String.fromCodePoint) && void 0 !== i
- ? i
- : function (e) {
- let t = '';
- return (
- e > 65535 &&
- ((e -= 65536),
- (t += String.fromCharCode(((e >>> 10) & 1023) | 55296)),
- (e = 56320 | (1023 & e))),
- (t += String.fromCharCode(e))
- );
- };
- function a(e) {
- var t;
- return (e >= 55296 && e <= 57343) || e > 1114111
- ? 65533
- : null !== (t = n.get(e)) && void 0 !== t
- ? t
- : e;
- }
- }),
- a('6QxPZ', function (e, r) {
- t(e.exports, 'encodeHTML', () => o), t(e.exports, 'encodeNonAsciiHTML', () => l);
- var i = s('4b7Mz'),
- n = s('i7QF4');
- let a = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;
- function o(e) {
- return c(a, e);
- }
- function l(e) {
- return c(n.xmlReplacer, e);
- }
- function c(e, t) {
- let r,
- s = '',
- a = 0;
- for (; null !== (r = e.exec(t)); ) {
- let o = r.index;
- s += t.substring(a, o);
- let l = t.charCodeAt(o),
- c = (0, i.default).get(l);
- if ('object' == typeof c) {
- if (o + 1 < t.length) {
- let r = t.charCodeAt(o + 1),
- i = 'number' == typeof c.n ? (c.n === r ? c.o : void 0) : c.n.get(r);
- if (void 0 !== i) {
- (s += i), (a = e.lastIndex += 1);
- continue;
- }
- }
- c = c.v;
- }
- if (void 0 !== c) (s += c), (a = o + 1);
- else {
- let r = (0, n.getCodePoint)(t, o);
- (s += `${r.toString(16)};`), (a = e.lastIndex += Number(r !== l));
- }
- }
- return s + t.substr(a);
- }
- }),
- a('4b7Mz', function (e, r) {
- function i(e) {
- for (let t = 1; t < e.length; t++) e[t][0] += e[t - 1][0] + 1;
- return e;
- }
- t(e.exports, 'default', () => n);
- var n = new Map(
- i([
- [9, '	'],
- [0, '
'],
- [22, '!'],
- [0, '"'],
- [0, '#'],
- [0, '$'],
- [0, '%'],
- [0, '&'],
- [0, '''],
- [0, '('],
- [0, ')'],
- [0, '*'],
- [0, '+'],
- [0, ','],
- [1, '.'],
- [0, '/'],
- [10, ':'],
- [0, ';'],
- [0, { v: '<', n: 8402, o: '<⃒' }],
- [0, { v: '=', n: 8421, o: '=⃥' }],
- [0, { v: '>', n: 8402, o: '>⃒' }],
- [0, '?'],
- [0, '@'],
- [26, '['],
- [0, '\'],
- [0, ']'],
- [0, '^'],
- [0, '_'],
- [0, '`'],
- [5, { n: 106, o: 'fj' }],
- [20, '{'],
- [0, '|'],
- [0, '}'],
- [34, ' '],
- [0, '¡'],
- [0, '¢'],
- [0, '£'],
- [0, '¤'],
- [0, '¥'],
- [0, '¦'],
- [0, '§'],
- [0, '¨'],
- [0, '©'],
- [0, 'ª'],
- [0, '«'],
- [0, '¬'],
- [0, ''],
- [0, '®'],
- [0, '¯'],
- [0, '°'],
- [0, '±'],
- [0, '²'],
- [0, '³'],
- [0, '´'],
- [0, 'µ'],
- [0, '¶'],
- [0, '·'],
- [0, '¸'],
- [0, '¹'],
- [0, 'º'],
- [0, '»'],
- [0, '¼'],
- [0, '½'],
- [0, '¾'],
- [0, '¿'],
- [0, 'À'],
- [0, 'Á'],
- [0, 'Â'],
- [0, 'Ã'],
- [0, 'Ä'],
- [0, 'Å'],
- [0, 'Æ'],
- [0, 'Ç'],
- [0, 'È'],
- [0, 'É'],
- [0, 'Ê'],
- [0, 'Ë'],
- [0, 'Ì'],
- [0, 'Í'],
- [0, 'Î'],
- [0, 'Ï'],
- [0, 'Ð'],
- [0, 'Ñ'],
- [0, 'Ò'],
- [0, 'Ó'],
- [0, 'Ô'],
- [0, 'Õ'],
- [0, 'Ö'],
- [0, '×'],
- [0, 'Ø'],
- [0, 'Ù'],
- [0, 'Ú'],
- [0, 'Û'],
- [0, 'Ü'],
- [0, 'Ý'],
- [0, 'Þ'],
- [0, 'ß'],
- [0, 'à'],
- [0, 'á'],
- [0, 'â'],
- [0, 'ã'],
- [0, 'ä'],
- [0, 'å'],
- [0, 'æ'],
- [0, 'ç'],
- [0, 'è'],
- [0, 'é'],
- [0, 'ê'],
- [0, 'ë'],
- [0, 'ì'],
- [0, 'í'],
- [0, 'î'],
- [0, 'ï'],
- [0, 'ð'],
- [0, 'ñ'],
- [0, 'ò'],
- [0, 'ó'],
- [0, 'ô'],
- [0, 'õ'],
- [0, 'ö'],
- [0, '÷'],
- [0, 'ø'],
- [0, 'ù'],
- [0, 'ú'],
- [0, 'û'],
- [0, 'ü'],
- [0, 'ý'],
- [0, 'þ'],
- [0, 'ÿ'],
- [0, 'Ā'],
- [0, 'ā'],
- [0, 'Ă'],
- [0, 'ă'],
- [0, 'Ą'],
- [0, 'ą'],
- [0, 'Ć'],
- [0, 'ć'],
- [0, 'Ĉ'],
- [0, 'ĉ'],
- [0, 'Ċ'],
- [0, 'ċ'],
- [0, 'Č'],
- [0, 'č'],
- [0, 'Ď'],
- [0, 'ď'],
- [0, 'Đ'],
- [0, 'đ'],
- [0, 'Ē'],
- [0, 'ē'],
- [2, 'Ė'],
- [0, 'ė'],
- [0, 'Ę'],
- [0, 'ę'],
- [0, 'Ě'],
- [0, 'ě'],
- [0, 'Ĝ'],
- [0, 'ĝ'],
- [0, 'Ğ'],
- [0, 'ğ'],
- [0, 'Ġ'],
- [0, 'ġ'],
- [0, 'Ģ'],
- [1, 'Ĥ'],
- [0, 'ĥ'],
- [0, 'Ħ'],
- [0, 'ħ'],
- [0, 'Ĩ'],
- [0, 'ĩ'],
- [0, 'Ī'],
- [0, 'ī'],
- [2, 'Į'],
- [0, 'į'],
- [0, 'İ'],
- [0, 'ı'],
- [0, 'IJ'],
- [0, 'ij'],
- [0, 'Ĵ'],
- [0, 'ĵ'],
- [0, 'Ķ'],
- [0, 'ķ'],
- [0, 'ĸ'],
- [0, 'Ĺ'],
- [0, 'ĺ'],
- [0, 'Ļ'],
- [0, 'ļ'],
- [0, 'Ľ'],
- [0, 'ľ'],
- [0, 'Ŀ'],
- [0, 'ŀ'],
- [0, 'Ł'],
- [0, 'ł'],
- [0, 'Ń'],
- [0, 'ń'],
- [0, 'Ņ'],
- [0, 'ņ'],
- [0, 'Ň'],
- [0, 'ň'],
- [0, 'ʼn'],
- [0, 'Ŋ'],
- [0, 'ŋ'],
- [0, 'Ō'],
- [0, 'ō'],
- [2, 'Ő'],
- [0, 'ő'],
- [0, 'Œ'],
- [0, 'œ'],
- [0, 'Ŕ'],
- [0, 'ŕ'],
- [0, 'Ŗ'],
- [0, 'ŗ'],
- [0, 'Ř'],
- [0, 'ř'],
- [0, 'Ś'],
- [0, 'ś'],
- [0, 'Ŝ'],
- [0, 'ŝ'],
- [0, 'Ş'],
- [0, 'ş'],
- [0, 'Š'],
- [0, 'š'],
- [0, 'Ţ'],
- [0, 'ţ'],
- [0, 'Ť'],
- [0, 'ť'],
- [0, 'Ŧ'],
- [0, 'ŧ'],
- [0, 'Ũ'],
- [0, 'ũ'],
- [0, 'Ū'],
- [0, 'ū'],
- [0, 'Ŭ'],
- [0, 'ŭ'],
- [0, 'Ů'],
- [0, 'ů'],
- [0, 'Ű'],
- [0, 'ű'],
- [0, 'Ų'],
- [0, 'ų'],
- [0, 'Ŵ'],
- [0, 'ŵ'],
- [0, 'Ŷ'],
- [0, 'ŷ'],
- [0, 'Ÿ'],
- [0, 'Ź'],
- [0, 'ź'],
- [0, 'Ż'],
- [0, 'ż'],
- [0, 'Ž'],
- [0, 'ž'],
- [19, 'ƒ'],
- [34, 'Ƶ'],
- [63, 'ǵ'],
- [65, 'ȷ'],
- [142, 'ˆ'],
- [0, 'ˇ'],
- [16, '˘'],
- [0, '˙'],
- [0, '˚'],
- [0, '˛'],
- [0, '˜'],
- [0, '˝'],
- [51, '̑'],
- [127, 'Α'],
- [0, 'Β'],
- [0, 'Γ'],
- [0, 'Δ'],
- [0, 'Ε'],
- [0, 'Ζ'],
- [0, 'Η'],
- [0, 'Θ'],
- [0, 'Ι'],
- [0, 'Κ'],
- [0, 'Λ'],
- [0, 'Μ'],
- [0, 'Ν'],
- [0, 'Ξ'],
- [0, 'Ο'],
- [0, 'Π'],
- [0, 'Ρ'],
- [1, 'Σ'],
- [0, 'Τ'],
- [0, 'Υ'],
- [0, 'Φ'],
- [0, 'Χ'],
- [0, 'Ψ'],
- [0, 'Ω'],
- [7, 'α'],
- [0, 'β'],
- [0, 'γ'],
- [0, 'δ'],
- [0, 'ε'],
- [0, 'ζ'],
- [0, 'η'],
- [0, 'θ'],
- [0, 'ι'],
- [0, 'κ'],
- [0, 'λ'],
- [0, 'μ'],
- [0, 'ν'],
- [0, 'ξ'],
- [0, 'ο'],
- [0, 'π'],
- [0, 'ρ'],
- [0, 'ς'],
- [0, 'σ'],
- [0, 'τ'],
- [0, 'υ'],
- [0, 'φ'],
- [0, 'χ'],
- [0, 'ψ'],
- [0, 'ω'],
- [7, 'ϑ'],
- [0, 'ϒ'],
- [2, 'ϕ'],
- [0, 'ϖ'],
- [5, 'Ϝ'],
- [0, 'ϝ'],
- [18, 'ϰ'],
- [0, 'ϱ'],
- [3, 'ϵ'],
- [0, '϶'],
- [10, 'Ё'],
- [0, 'Ђ'],
- [0, 'Ѓ'],
- [0, 'Є'],
- [0, 'Ѕ'],
- [0, 'І'],
- [0, 'Ї'],
- [0, 'Ј'],
- [0, 'Љ'],
- [0, 'Њ'],
- [0, 'Ћ'],
- [0, 'Ќ'],
- [1, 'Ў'],
- [0, 'Џ'],
- [0, 'А'],
- [0, 'Б'],
- [0, 'В'],
- [0, 'Г'],
- [0, 'Д'],
- [0, 'Е'],
- [0, 'Ж'],
- [0, 'З'],
- [0, 'И'],
- [0, 'Й'],
- [0, 'К'],
- [0, 'Л'],
- [0, 'М'],
- [0, 'Н'],
- [0, 'О'],
- [0, 'П'],
- [0, 'Р'],
- [0, 'С'],
- [0, 'Т'],
- [0, 'У'],
- [0, 'Ф'],
- [0, 'Х'],
- [0, 'Ц'],
- [0, 'Ч'],
- [0, 'Ш'],
- [0, 'Щ'],
- [0, 'Ъ'],
- [0, 'Ы'],
- [0, 'Ь'],
- [0, 'Э'],
- [0, 'Ю'],
- [0, 'Я'],
- [0, 'а'],
- [0, 'б'],
- [0, 'в'],
- [0, 'г'],
- [0, 'д'],
- [0, 'е'],
- [0, 'ж'],
- [0, 'з'],
- [0, 'и'],
- [0, 'й'],
- [0, 'к'],
- [0, 'л'],
- [0, 'м'],
- [0, 'н'],
- [0, 'о'],
- [0, 'п'],
- [0, 'р'],
- [0, 'с'],
- [0, 'т'],
- [0, 'у'],
- [0, 'ф'],
- [0, 'х'],
- [0, 'ц'],
- [0, 'ч'],
- [0, 'ш'],
- [0, 'щ'],
- [0, 'ъ'],
- [0, 'ы'],
- [0, 'ь'],
- [0, 'э'],
- [0, 'ю'],
- [0, 'я'],
- [1, 'ё'],
- [0, 'ђ'],
- [0, 'ѓ'],
- [0, 'є'],
- [0, 'ѕ'],
- [0, 'і'],
- [0, 'ї'],
- [0, 'ј'],
- [0, 'љ'],
- [0, 'њ'],
- [0, 'ћ'],
- [0, 'ќ'],
- [1, 'ў'],
- [0, 'џ'],
- [7074, ' '],
- [0, ' '],
- [0, ' '],
- [0, ' '],
- [1, ' '],
- [0, ' '],
- [0, ' '],
- [0, ' '],
- [0, '​'],
- [0, ''],
- [0, ''],
- [0, ''],
- [0, ''],
- [0, '‐'],
- [2, '–'],
- [0, '—'],
- [0, '―'],
- [0, '‖'],
- [1, '‘'],
- [0, '’'],
- [0, '‚'],
- [1, '“'],
- [0, '”'],
- [0, '„'],
- [1, '†'],
- [0, '‡'],
- [0, '•'],
- [2, '‥'],
- [0, '…'],
- [9, '‰'],
- [0, '‱'],
- [0, '′'],
- [0, '″'],
- [0, '‴'],
- [0, '‵'],
- [3, '‹'],
- [0, '›'],
- [3, '‾'],
- [2, '⁁'],
- [1, '⁃'],
- [0, '⁄'],
- [10, '⁏'],
- [7, '⁗'],
- [7, { v: ' ', n: 8202, o: '  ' }],
- [0, '⁠'],
- [0, '⁡'],
- [0, '⁢'],
- [0, '⁣'],
- [72, '€'],
- [46, '⃛'],
- [0, '⃜'],
- [37, 'ℂ'],
- [2, '℅'],
- [4, 'ℊ'],
- [0, 'ℋ'],
- [0, 'ℌ'],
- [0, 'ℍ'],
- [0, 'ℎ'],
- [0, 'ℏ'],
- [0, 'ℐ'],
- [0, 'ℑ'],
- [0, 'ℒ'],
- [0, 'ℓ'],
- [1, 'ℕ'],
- [0, '№'],
- [0, '℗'],
- [0, '℘'],
- [0, 'ℙ'],
- [0, 'ℚ'],
- [0, 'ℛ'],
- [0, 'ℜ'],
- [0, 'ℝ'],
- [0, '℞'],
- [3, '™'],
- [1, 'ℤ'],
- [2, '℧'],
- [0, 'ℨ'],
- [0, '℩'],
- [2, 'ℬ'],
- [0, 'ℭ'],
- [1, 'ℯ'],
- [0, 'ℰ'],
- [0, 'ℱ'],
- [1, 'ℳ'],
- [0, 'ℴ'],
- [0, 'ℵ'],
- [0, 'ℶ'],
- [0, 'ℷ'],
- [0, 'ℸ'],
- [12, 'ⅅ'],
- [0, 'ⅆ'],
- [0, 'ⅇ'],
- [0, 'ⅈ'],
- [10, '⅓'],
- [0, '⅔'],
- [0, '⅕'],
- [0, '⅖'],
- [0, '⅗'],
- [0, '⅘'],
- [0, '⅙'],
- [0, '⅚'],
- [0, '⅛'],
- [0, '⅜'],
- [0, '⅝'],
- [0, '⅞'],
- [49, '←'],
- [0, '↑'],
- [0, '→'],
- [0, '↓'],
- [0, '↔'],
- [0, '↕'],
- [0, '↖'],
- [0, '↗'],
- [0, '↘'],
- [0, '↙'],
- [0, '↚'],
- [0, '↛'],
- [1, { v: '↝', n: 824, o: '↝̸' }],
- [0, '↞'],
- [0, '↟'],
- [0, '↠'],
- [0, '↡'],
- [0, '↢'],
- [0, '↣'],
- [0, '↤'],
- [0, '↥'],
- [0, '↦'],
- [0, '↧'],
- [1, '↩'],
- [0, '↪'],
- [0, '↫'],
- [0, '↬'],
- [0, '↭'],
- [0, '↮'],
- [1, '↰'],
- [0, '↱'],
- [0, '↲'],
- [0, '↳'],
- [1, '↵'],
- [0, '↶'],
- [0, '↷'],
- [2, '↺'],
- [0, '↻'],
- [0, '↼'],
- [0, '↽'],
- [0, '↾'],
- [0, '↿'],
- [0, '⇀'],
- [0, '⇁'],
- [0, '⇂'],
- [0, '⇃'],
- [0, '⇄'],
- [0, '⇅'],
- [0, '⇆'],
- [0, '⇇'],
- [0, '⇈'],
- [0, '⇉'],
- [0, '⇊'],
- [0, '⇋'],
- [0, '⇌'],
- [0, '⇍'],
- [0, '⇎'],
- [0, '⇏'],
- [0, '⇐'],
- [0, '⇑'],
- [0, '⇒'],
- [0, '⇓'],
- [0, '⇔'],
- [0, '⇕'],
- [0, '⇖'],
- [0, '⇗'],
- [0, '⇘'],
- [0, '⇙'],
- [0, '⇚'],
- [0, '⇛'],
- [1, '⇝'],
- [6, '⇤'],
- [0, '⇥'],
- [15, '⇵'],
- [7, '⇽'],
- [0, '⇾'],
- [0, '⇿'],
- [0, '∀'],
- [0, '∁'],
- [0, { v: '∂', n: 824, o: '∂̸' }],
- [0, '∃'],
- [0, '∄'],
- [0, '∅'],
- [1, '∇'],
- [0, '∈'],
- [0, '∉'],
- [1, '∋'],
- [0, '∌'],
- [2, '∏'],
- [0, '∐'],
- [0, '∑'],
- [0, '−'],
- [0, '∓'],
- [0, '∔'],
- [1, '∖'],
- [0, '∗'],
- [0, '∘'],
- [1, '√'],
- [2, '∝'],
- [0, '∞'],
- [0, '∟'],
- [0, { v: '∠', n: 8402, o: '∠⃒' }],
- [0, '∡'],
- [0, '∢'],
- [0, '∣'],
- [0, '∤'],
- [0, '∥'],
- [0, '∦'],
- [0, '∧'],
- [0, '∨'],
- [0, { v: '∩', n: 65024, o: '∩︀' }],
- [0, { v: '∪', n: 65024, o: '∪︀' }],
- [0, '∫'],
- [0, '∬'],
- [0, '∭'],
- [0, '∮'],
- [0, '∯'],
- [0, '∰'],
- [0, '∱'],
- [0, '∲'],
- [0, '∳'],
- [0, '∴'],
- [0, '∵'],
- [0, '∶'],
- [0, '∷'],
- [0, '∸'],
- [1, '∺'],
- [0, '∻'],
- [0, { v: '∼', n: 8402, o: '∼⃒' }],
- [0, { v: '∽', n: 817, o: '∽̱' }],
- [0, { v: '∾', n: 819, o: '∾̳' }],
- [0, '∿'],
- [0, '≀'],
- [0, '≁'],
- [0, { v: '≂', n: 824, o: '≂̸' }],
- [0, '≃'],
- [0, '≄'],
- [0, '≅'],
- [0, '≆'],
- [0, '≇'],
- [0, '≈'],
- [0, '≉'],
- [0, '≊'],
- [0, { v: '≋', n: 824, o: '≋̸' }],
- [0, '≌'],
- [0, { v: '≍', n: 8402, o: '≍⃒' }],
- [0, { v: '≎', n: 824, o: '≎̸' }],
- [0, { v: '≏', n: 824, o: '≏̸' }],
- [0, { v: '≐', n: 824, o: '≐̸' }],
- [0, '≑'],
- [0, '≒'],
- [0, '≓'],
- [0, '≔'],
- [0, '≕'],
- [0, '≖'],
- [0, '≗'],
- [1, '≙'],
- [0, '≚'],
- [1, '≜'],
- [2, '≟'],
- [0, '≠'],
- [0, { v: '≡', n: 8421, o: '≡⃥' }],
- [0, '≢'],
- [1, { v: '≤', n: 8402, o: '≤⃒' }],
- [0, { v: '≥', n: 8402, o: '≥⃒' }],
- [0, { v: '≦', n: 824, o: '≦̸' }],
- [0, { v: '≧', n: 824, o: '≧̸' }],
- [0, { v: '≨', n: 65024, o: '≨︀' }],
- [0, { v: '≩', n: 65024, o: '≩︀' }],
- [
- 0,
- {
- v: '≪',
- n: new Map(
- i([
- [824, '≪̸'],
- [7577, '≪⃒'],
- ])
- ),
- },
- ],
- [
- 0,
- {
- v: '≫',
- n: new Map(
- i([
- [824, '≫̸'],
- [7577, '≫⃒'],
- ])
- ),
- },
- ],
- [0, '≬'],
- [0, '≭'],
- [0, '≮'],
- [0, '≯'],
- [0, '≰'],
- [0, '≱'],
- [0, '≲'],
- [0, '≳'],
- [0, '≴'],
- [0, '≵'],
- [0, '≶'],
- [0, '≷'],
- [0, '≸'],
- [0, '≹'],
- [0, '≺'],
- [0, '≻'],
- [0, '≼'],
- [0, '≽'],
- [0, '≾'],
- [0, { v: '≿', n: 824, o: '≿̸' }],
- [0, '⊀'],
- [0, '⊁'],
- [0, { v: '⊂', n: 8402, o: '⊂⃒' }],
- [0, { v: '⊃', n: 8402, o: '⊃⃒' }],
- [0, '⊄'],
- [0, '⊅'],
- [0, '⊆'],
- [0, '⊇'],
- [0, '⊈'],
- [0, '⊉'],
- [0, { v: '⊊', n: 65024, o: '⊊︀' }],
- [0, { v: '⊋', n: 65024, o: '⊋︀' }],
- [1, '⊍'],
- [0, '⊎'],
- [0, { v: '⊏', n: 824, o: '⊏̸' }],
- [0, { v: '⊐', n: 824, o: '⊐̸' }],
- [0, '⊑'],
- [0, '⊒'],
- [0, { v: '⊓', n: 65024, o: '⊓︀' }],
- [0, { v: '⊔', n: 65024, o: '⊔︀' }],
- [0, '⊕'],
- [0, '⊖'],
- [0, '⊗'],
- [0, '⊘'],
- [0, '⊙'],
- [0, '⊚'],
- [0, '⊛'],
- [1, '⊝'],
- [0, '⊞'],
- [0, '⊟'],
- [0, '⊠'],
- [0, '⊡'],
- [0, '⊢'],
- [0, '⊣'],
- [0, '⊤'],
- [0, '⊥'],
- [1, '⊧'],
- [0, '⊨'],
- [0, '⊩'],
- [0, '⊪'],
- [0, '⊫'],
- [0, '⊬'],
- [0, '⊭'],
- [0, '⊮'],
- [0, '⊯'],
- [0, '⊰'],
- [1, '⊲'],
- [0, '⊳'],
- [0, { v: '⊴', n: 8402, o: '⊴⃒' }],
- [0, { v: '⊵', n: 8402, o: '⊵⃒' }],
- [0, '⊶'],
- [0, '⊷'],
- [0, '⊸'],
- [0, '⊹'],
- [0, '⊺'],
- [0, '⊻'],
- [1, '⊽'],
- [0, '⊾'],
- [0, '⊿'],
- [0, '⋀'],
- [0, '⋁'],
- [0, '⋂'],
- [0, '⋃'],
- [0, '⋄'],
- [0, '⋅'],
- [0, '⋆'],
- [0, '⋇'],
- [0, '⋈'],
- [0, '⋉'],
- [0, '⋊'],
- [0, '⋋'],
- [0, '⋌'],
- [0, '⋍'],
- [0, '⋎'],
- [0, '⋏'],
- [0, '⋐'],
- [0, '⋑'],
- [0, '⋒'],
- [0, '⋓'],
- [0, '⋔'],
- [0, '⋕'],
- [0, '⋖'],
- [0, '⋗'],
- [0, { v: '⋘', n: 824, o: '⋘̸' }],
- [0, { v: '⋙', n: 824, o: '⋙̸' }],
- [0, { v: '⋚', n: 65024, o: '⋚︀' }],
- [0, { v: '⋛', n: 65024, o: '⋛︀' }],
- [2, '⋞'],
- [0, '⋟'],
- [0, '⋠'],
- [0, '⋡'],
- [0, '⋢'],
- [0, '⋣'],
- [2, '⋦'],
- [0, '⋧'],
- [0, '⋨'],
- [0, '⋩'],
- [0, '⋪'],
- [0, '⋫'],
- [0, '⋬'],
- [0, '⋭'],
- [0, '⋮'],
- [0, '⋯'],
- [0, '⋰'],
- [0, '⋱'],
- [0, '⋲'],
- [0, '⋳'],
- [0, '⋴'],
- [0, { v: '⋵', n: 824, o: '⋵̸' }],
- [0, '⋶'],
- [0, '⋷'],
- [1, { v: '⋹', n: 824, o: '⋹̸' }],
- [0, '⋺'],
- [0, '⋻'],
- [0, '⋼'],
- [0, '⋽'],
- [0, '⋾'],
- [6, '⌅'],
- [0, '⌆'],
- [1, '⌈'],
- [0, '⌉'],
- [0, '⌊'],
- [0, '⌋'],
- [0, '⌌'],
- [0, '⌍'],
- [0, '⌎'],
- [0, '⌏'],
- [0, '⌐'],
- [1, '⌒'],
- [0, '⌓'],
- [1, '⌕'],
- [0, '⌖'],
- [5, '⌜'],
- [0, '⌝'],
- [0, '⌞'],
- [0, '⌟'],
- [2, '⌢'],
- [0, '⌣'],
- [9, '⌭'],
- [0, '⌮'],
- [7, '⌶'],
- [6, '⌽'],
- [1, '⌿'],
- [60, '⍼'],
- [51, '⎰'],
- [0, '⎱'],
- [2, '⎴'],
- [0, '⎵'],
- [0, '⎶'],
- [37, '⏜'],
- [0, '⏝'],
- [0, '⏞'],
- [0, '⏟'],
- [2, '⏢'],
- [4, '⏧'],
- [59, '␣'],
- [164, 'Ⓢ'],
- [55, '─'],
- [1, '│'],
- [9, '┌'],
- [3, '┐'],
- [3, '└'],
- [3, '┘'],
- [3, '├'],
- [7, '┤'],
- [7, '┬'],
- [7, '┴'],
- [7, '┼'],
- [19, '═'],
- [0, '║'],
- [0, '╒'],
- [0, '╓'],
- [0, '╔'],
- [0, '╕'],
- [0, '╖'],
- [0, '╗'],
- [0, '╘'],
- [0, '╙'],
- [0, '╚'],
- [0, '╛'],
- [0, '╜'],
- [0, '╝'],
- [0, '╞'],
- [0, '╟'],
- [0, '╠'],
- [0, '╡'],
- [0, '╢'],
- [0, '╣'],
- [0, '╤'],
- [0, '╥'],
- [0, '╦'],
- [0, '╧'],
- [0, '╨'],
- [0, '╩'],
- [0, '╪'],
- [0, '╫'],
- [0, '╬'],
- [19, '▀'],
- [3, '▄'],
- [3, '█'],
- [8, '░'],
- [0, '▒'],
- [0, '▓'],
- [13, '□'],
- [8, '▪'],
- [0, '▫'],
- [1, '▭'],
- [0, '▮'],
- [2, '▱'],
- [1, '△'],
- [0, '▴'],
- [0, '▵'],
- [2, '▸'],
- [0, '▹'],
- [3, '▽'],
- [0, '▾'],
- [0, '▿'],
- [2, '◂'],
- [0, '◃'],
- [6, '◊'],
- [0, '○'],
- [32, '◬'],
- [2, '◯'],
- [8, '◸'],
- [0, '◹'],
- [0, '◺'],
- [0, '◻'],
- [0, '◼'],
- [8, '★'],
- [0, '☆'],
- [7, '☎'],
- [49, '♀'],
- [1, '♂'],
- [29, '♠'],
- [2, '♣'],
- [1, '♥'],
- [0, '♦'],
- [3, '♪'],
- [2, '♭'],
- [0, '♮'],
- [0, '♯'],
- [163, '✓'],
- [3, '✗'],
- [8, '✠'],
- [21, '✶'],
- [33, '❘'],
- [25, '❲'],
- [0, '❳'],
- [84, '⟈'],
- [0, '⟉'],
- [28, '⟦'],
- [0, '⟧'],
- [0, '〈'],
- [0, '〉'],
- [0, '⟪'],
- [0, '⟫'],
- [0, '⟬'],
- [0, '⟭'],
- [7, '⟵'],
- [0, '⟶'],
- [0, '⟷'],
- [0, '⟸'],
- [0, '⟹'],
- [0, '⟺'],
- [1, '⟼'],
- [2, '⟿'],
- [258, '⤂'],
- [0, '⤃'],
- [0, '⤄'],
- [0, '⤅'],
- [6, '⤌'],
- [0, '⤍'],
- [0, '⤎'],
- [0, '⤏'],
- [0, '⤐'],
- [0, '⤑'],
- [0, '⤒'],
- [0, '⤓'],
- [2, '⤖'],
- [2, '⤙'],
- [0, '⤚'],
- [0, '⤛'],
- [0, '⤜'],
- [0, '⤝'],
- [0, '⤞'],
- [0, '⤟'],
- [0, '⤠'],
- [2, '⤣'],
- [0, '⤤'],
- [0, '⤥'],
- [0, '⤦'],
- [0, '⤧'],
- [0, '⤨'],
- [0, '⤩'],
- [0, '⤪'],
- [8, { v: '⤳', n: 824, o: '⤳̸' }],
- [1, '⤵'],
- [0, '⤶'],
- [0, '⤷'],
- [0, '⤸'],
- [0, '⤹'],
- [2, '⤼'],
- [0, '⤽'],
- [7, '⥅'],
- [2, '⥈'],
- [0, '⥉'],
- [0, '⥊'],
- [0, '⥋'],
- [2, '⥎'],
- [0, '⥏'],
- [0, '⥐'],
- [0, '⥑'],
- [0, '⥒'],
- [0, '⥓'],
- [0, '⥔'],
- [0, '⥕'],
- [0, '⥖'],
- [0, '⥗'],
- [0, '⥘'],
- [0, '⥙'],
- [0, '⥚'],
- [0, '⥛'],
- [0, '⥜'],
- [0, '⥝'],
- [0, '⥞'],
- [0, '⥟'],
- [0, '⥠'],
- [0, '⥡'],
- [0, '⥢'],
- [0, '⥣'],
- [0, '⥤'],
- [0, '⥥'],
- [0, '⥦'],
- [0, '⥧'],
- [0, '⥨'],
- [0, '⥩'],
- [0, '⥪'],
- [0, '⥫'],
- [0, '⥬'],
- [0, '⥭'],
- [0, '⥮'],
- [0, '⥯'],
- [0, '⥰'],
- [0, '⥱'],
- [0, '⥲'],
- [0, '⥳'],
- [0, '⥴'],
- [0, '⥵'],
- [0, '⥶'],
- [1, '⥸'],
- [0, '⥹'],
- [1, '⥻'],
- [0, '⥼'],
- [0, '⥽'],
- [0, '⥾'],
- [0, '⥿'],
- [5, '⦅'],
- [0, '⦆'],
- [4, '⦋'],
- [0, '⦌'],
- [0, '⦍'],
- [0, '⦎'],
- [0, '⦏'],
- [0, '⦐'],
- [0, '⦑'],
- [0, '⦒'],
- [0, '⦓'],
- [0, '⦔'],
- [0, '⦕'],
- [0, '⦖'],
- [3, '⦚'],
- [1, '⦜'],
- [0, '⦝'],
- [6, '⦤'],
- [0, '⦥'],
- [0, '⦦'],
- [0, '⦧'],
- [0, '⦨'],
- [0, '⦩'],
- [0, '⦪'],
- [0, '⦫'],
- [0, '⦬'],
- [0, '⦭'],
- [0, '⦮'],
- [0, '⦯'],
- [0, '⦰'],
- [0, '⦱'],
- [0, '⦲'],
- [0, '⦳'],
- [0, '⦴'],
- [0, '⦵'],
- [0, '⦶'],
- [0, '⦷'],
- [1, '⦹'],
- [1, '⦻'],
- [0, '⦼'],
- [1, '⦾'],
- [0, '⦿'],
- [0, '⧀'],
- [0, '⧁'],
- [0, '⧂'],
- [0, '⧃'],
- [0, '⧄'],
- [0, '⧅'],
- [3, '⧉'],
- [3, '⧍'],
- [0, '⧎'],
- [0, { v: '⧏', n: 824, o: '⧏̸' }],
- [0, { v: '⧐', n: 824, o: '⧐̸' }],
- [11, '⧜'],
- [0, '⧝'],
- [0, '⧞'],
- [4, '⧣'],
- [0, '⧤'],
- [0, '⧥'],
- [5, '⧫'],
- [8, '⧴'],
- [1, '⧶'],
- [9, '⨀'],
- [0, '⨁'],
- [0, '⨂'],
- [1, '⨄'],
- [1, '⨆'],
- [5, '⨌'],
- [0, '⨍'],
- [2, '⨐'],
- [0, '⨑'],
- [0, '⨒'],
- [0, '⨓'],
- [0, '⨔'],
- [0, '⨕'],
- [0, '⨖'],
- [0, '⨗'],
- [10, '⨢'],
- [0, '⨣'],
- [0, '⨤'],
- [0, '⨥'],
- [0, '⨦'],
- [0, '⨧'],
- [1, '⨩'],
- [0, '⨪'],
- [2, '⨭'],
- [0, '⨮'],
- [0, '⨯'],
- [0, '⨰'],
- [0, '⨱'],
- [1, '⨳'],
- [0, '⨴'],
- [0, '⨵'],
- [0, '⨶'],
- [0, '⨷'],
- [0, '⨸'],
- [0, '⨹'],
- [0, '⨺'],
- [0, '⨻'],
- [0, '⨼'],
- [2, '⨿'],
- [0, '⩀'],
- [1, '⩂'],
- [0, '⩃'],
- [0, '⩄'],
- [0, '⩅'],
- [0, '⩆'],
- [0, '⩇'],
- [0, '⩈'],
- [0, '⩉'],
- [0, '⩊'],
- [0, '⩋'],
- [0, '⩌'],
- [0, '⩍'],
- [2, '⩐'],
- [2, '⩓'],
- [0, '⩔'],
- [0, '⩕'],
- [0, '⩖'],
- [0, '⩗'],
- [0, '⩘'],
- [1, '⩚'],
- [0, '⩛'],
- [0, '⩜'],
- [0, '⩝'],
- [1, '⩟'],
- [6, '⩦'],
- [3, '⩪'],
- [2, { v: '⩭', n: 824, o: '⩭̸' }],
- [0, '⩮'],
- [0, '⩯'],
- [0, { v: '⩰', n: 824, o: '⩰̸' }],
- [0, '⩱'],
- [0, '⩲'],
- [0, '⩳'],
- [0, '⩴'],
- [0, '⩵'],
- [1, '⩷'],
- [0, '⩸'],
- [0, '⩹'],
- [0, '⩺'],
- [0, '⩻'],
- [0, '⩼'],
- [0, { v: '⩽', n: 824, o: '⩽̸' }],
- [0, { v: '⩾', n: 824, o: '⩾̸' }],
- [0, '⩿'],
- [0, '⪀'],
- [0, '⪁'],
- [0, '⪂'],
- [0, '⪃'],
- [0, '⪄'],
- [0, '⪅'],
- [0, '⪆'],
- [0, '⪇'],
- [0, '⪈'],
- [0, '⪉'],
- [0, '⪊'],
- [0, '⪋'],
- [0, '⪌'],
- [0, '⪍'],
- [0, '⪎'],
- [0, '⪏'],
- [0, '⪐'],
- [0, '⪑'],
- [0, '⪒'],
- [0, '⪓'],
- [0, '⪔'],
- [0, '⪕'],
- [0, '⪖'],
- [0, '⪗'],
- [0, '⪘'],
- [0, '⪙'],
- [0, '⪚'],
- [2, '⪝'],
- [0, '⪞'],
- [0, '⪟'],
- [0, '⪠'],
- [0, { v: '⪡', n: 824, o: '⪡̸' }],
- [0, { v: '⪢', n: 824, o: '⪢̸' }],
- [1, '⪤'],
- [0, '⪥'],
- [0, '⪦'],
- [0, '⪧'],
- [0, '⪨'],
- [0, '⪩'],
- [0, '⪪'],
- [0, '⪫'],
- [0, { v: '⪬', n: 65024, o: '⪬︀' }],
- [0, { v: '⪭', n: 65024, o: '⪭︀' }],
- [0, '⪮'],
- [0, { v: '⪯', n: 824, o: '⪯̸' }],
- [0, { v: '⪰', n: 824, o: '⪰̸' }],
- [2, '⪳'],
- [0, '⪴'],
- [0, '⪵'],
- [0, '⪶'],
- [0, '⪷'],
- [0, '⪸'],
- [0, '⪹'],
- [0, '⪺'],
- [0, '⪻'],
- [0, '⪼'],
- [0, '⪽'],
- [0, '⪾'],
- [0, '⪿'],
- [0, '⫀'],
- [0, '⫁'],
- [0, '⫂'],
- [0, '⫃'],
- [0, '⫄'],
- [0, { v: '⫅', n: 824, o: '⫅̸' }],
- [0, { v: '⫆', n: 824, o: '⫆̸' }],
- [0, '⫇'],
- [0, '⫈'],
- [2, { v: '⫋', n: 65024, o: '⫋︀' }],
- [0, { v: '⫌', n: 65024, o: '⫌︀' }],
- [2, '⫏'],
- [0, '⫐'],
- [0, '⫑'],
- [0, '⫒'],
- [0, '⫓'],
- [0, '⫔'],
- [0, '⫕'],
- [0, '⫖'],
- [0, '⫗'],
- [0, '⫘'],
- [0, '⫙'],
- [0, '⫚'],
- [0, '⫛'],
- [8, '⫤'],
- [1, '⫦'],
- [0, '⫧'],
- [0, '⫨'],
- [0, '⫩'],
- [1, '⫫'],
- [0, '⫬'],
- [0, '⫭'],
- [0, '⫮'],
- [0, '⫯'],
- [0, '⫰'],
- [0, '⫱'],
- [0, '⫲'],
- [0, '⫳'],
- [9, { v: '⫽', n: 8421, o: '⫽⃥' }],
- [
- 44343,
- {
- n: new Map(
- i([
- [56476, '𝒜'],
- [1, '𝒞'],
- [0, '𝒟'],
- [2, '𝒢'],
- [2, '𝒥'],
- [0, '𝒦'],
- [2, '𝒩'],
- [0, '𝒪'],
- [0, '𝒫'],
- [0, '𝒬'],
- [1, '𝒮'],
- [0, '𝒯'],
- [0, '𝒰'],
- [0, '𝒱'],
- [0, '𝒲'],
- [0, '𝒳'],
- [0, '𝒴'],
- [0, '𝒵'],
- [0, '𝒶'],
- [0, '𝒷'],
- [0, '𝒸'],
- [0, '𝒹'],
- [1, '𝒻'],
- [1, '𝒽'],
- [0, '𝒾'],
- [0, '𝒿'],
- [0, '𝓀'],
- [0, '𝓁'],
- [0, '𝓂'],
- [0, '𝓃'],
- [1, '𝓅'],
- [0, '𝓆'],
- [0, '𝓇'],
- [0, '𝓈'],
- [0, '𝓉'],
- [0, '𝓊'],
- [0, '𝓋'],
- [0, '𝓌'],
- [0, '𝓍'],
- [0, '𝓎'],
- [0, '𝓏'],
- [52, '𝔄'],
- [0, '𝔅'],
- [1, '𝔇'],
- [0, '𝔈'],
- [0, '𝔉'],
- [0, '𝔊'],
- [2, '𝔍'],
- [0, '𝔎'],
- [0, '𝔏'],
- [0, '𝔐'],
- [0, '𝔑'],
- [0, '𝔒'],
- [0, '𝔓'],
- [0, '𝔔'],
- [1, '𝔖'],
- [0, '𝔗'],
- [0, '𝔘'],
- [0, '𝔙'],
- [0, '𝔚'],
- [0, '𝔛'],
- [0, '𝔜'],
- [1, '𝔞'],
- [0, '𝔟'],
- [0, '𝔠'],
- [0, '𝔡'],
- [0, '𝔢'],
- [0, '𝔣'],
- [0, '𝔤'],
- [0, '𝔥'],
- [0, '𝔦'],
- [0, '𝔧'],
- [0, '𝔨'],
- [0, '𝔩'],
- [0, '𝔪'],
- [0, '𝔫'],
- [0, '𝔬'],
- [0, '𝔭'],
- [0, '𝔮'],
- [0, '𝔯'],
- [0, '𝔰'],
- [0, '𝔱'],
- [0, '𝔲'],
- [0, '𝔳'],
- [0, '𝔴'],
- [0, '𝔵'],
- [0, '𝔶'],
- [0, '𝔷'],
- [0, '𝔸'],
- [0, '𝔹'],
- [1, '𝔻'],
- [0, '𝔼'],
- [0, '𝔽'],
- [0, '𝔾'],
- [1, '𝕀'],
- [0, '𝕁'],
- [0, '𝕂'],
- [0, '𝕃'],
- [0, '𝕄'],
- [1, '𝕆'],
- [3, '𝕊'],
- [0, '𝕋'],
- [0, '𝕌'],
- [0, '𝕍'],
- [0, '𝕎'],
- [0, '𝕏'],
- [0, '𝕐'],
- [1, '𝕒'],
- [0, '𝕓'],
- [0, '𝕔'],
- [0, '𝕕'],
- [0, '𝕖'],
- [0, '𝕗'],
- [0, '𝕘'],
- [0, '𝕙'],
- [0, '𝕚'],
- [0, '𝕛'],
- [0, '𝕜'],
- [0, '𝕝'],
- [0, '𝕞'],
- [0, '𝕟'],
- [0, '𝕠'],
- [0, '𝕡'],
- [0, '𝕢'],
- [0, '𝕣'],
- [0, '𝕤'],
- [0, '𝕥'],
- [0, '𝕦'],
- [0, '𝕧'],
- [0, '𝕨'],
- [0, '𝕩'],
- [0, '𝕪'],
- [0, '𝕫'],
- ])
- ),
- },
- ],
- [8906, 'ff'],
- [0, 'fi'],
- [0, 'fl'],
- [0, 'ffi'],
- [0, 'ffl'],
- ])
- );
- }),
- a('i7QF4', function (e, r) {
- t(e.exports, 'xmlReplacer', () => i),
- t(e.exports, 'getCodePoint', () => s),
- t(e.exports, 'encodeXML', () => a),
- t(e.exports, 'escapeUTF8', () => l),
- t(e.exports, 'escapeAttribute', () => c),
- t(e.exports, 'escapeText', () => u);
- let i = /["&'<>$\x80-\uFFFF]/g,
- n = new Map([
- [34, '"'],
- [38, '&'],
- [39, '''],
- [60, '<'],
- [62, '>'],
- ]),
- s =
- null != String.prototype.codePointAt
- ? (e, t) => e.codePointAt(t)
- : (e, t) =>
- (64512 & e.charCodeAt(t)) == 55296
- ? (e.charCodeAt(t) - 55296) * 1024 + e.charCodeAt(t + 1) - 56320 + 65536
- : e.charCodeAt(t);
- function a(e) {
- let t,
- r = '',
- a = 0;
- for (; null !== (t = i.exec(e)); ) {
- let o = t.index,
- l = e.charCodeAt(o),
- c = n.get(l);
- void 0 !== c
- ? ((r += e.substring(a, o) + c), (a = o + 1))
- : ((r += `${e.substring(a, o)}${s(e, o).toString(16)};`),
- (a = i.lastIndex += Number((64512 & l) == 55296)));
- }
- return r + e.substr(a);
- }
- function o(e, t) {
- return function (r) {
- let i;
- let n = 0,
- s = '';
- for (; (i = e.exec(r)); )
- n !== i.index && (s += r.substring(n, i.index)),
- (s += t.get(i[0].charCodeAt(0))),
- (n = i.index + 1);
- return s + r.substring(n);
- };
- }
- let l = o(/[&<>'"]/g, n),
- c = o(
- /["&\u00A0]/g,
- new Map([
- [34, '"'],
- [38, '&'],
- [160, ' '],
- ])
- ),
- u = o(
- /[&<>\u00A0]/g,
- new Map([
- [38, '&'],
- [60, '<'],
- [62, '>'],
- [160, ' '],
- ])
- );
- }),
- a('5CdvS', function (e, r) {
- t(e.exports, 'elementNames', () => i), t(e.exports, 'attributeNames', () => n);
- let i = new Map(
- [
- 'altGlyph',
- 'altGlyphDef',
- 'altGlyphItem',
- 'animateColor',
- 'animateMotion',
- 'animateTransform',
- 'clipPath',
- 'feBlend',
- 'feColorMatrix',
- 'feComponentTransfer',
- 'feComposite',
- 'feConvolveMatrix',
- 'feDiffuseLighting',
- 'feDisplacementMap',
- 'feDistantLight',
- 'feDropShadow',
- 'feFlood',
- 'feFuncA',
- 'feFuncB',
- 'feFuncG',
- 'feFuncR',
- 'feGaussianBlur',
- 'feImage',
- 'feMerge',
- 'feMergeNode',
- 'feMorphology',
- 'feOffset',
- 'fePointLight',
- 'feSpecularLighting',
- 'feSpotLight',
- 'feTile',
- 'feTurbulence',
- 'foreignObject',
- 'glyphRef',
- 'linearGradient',
- 'radialGradient',
- 'textPath',
- ].map(e => [e.toLowerCase(), e])
- ),
- n = new Map(
- [
- 'definitionURL',
- 'attributeName',
- 'attributeType',
- 'baseFrequency',
- 'baseProfile',
- 'calcMode',
- 'clipPathUnits',
- 'diffuseConstant',
- 'edgeMode',
- 'filterUnits',
- 'glyphRef',
- 'gradientTransform',
- 'gradientUnits',
- 'kernelMatrix',
- 'kernelUnitLength',
- 'keyPoints',
- 'keySplines',
- 'keyTimes',
- 'lengthAdjust',
- 'limitingConeAngle',
- 'markerHeight',
- 'markerUnits',
- 'markerWidth',
- 'maskContentUnits',
- 'maskUnits',
- 'numOctaves',
- 'pathLength',
- 'patternContentUnits',
- 'patternTransform',
- 'patternUnits',
- 'pointsAtX',
- 'pointsAtY',
- 'pointsAtZ',
- 'preserveAlpha',
- 'preserveAspectRatio',
- 'primitiveUnits',
- 'refX',
- 'refY',
- 'repeatCount',
- 'repeatDur',
- 'requiredExtensions',
- 'requiredFeatures',
- 'specularConstant',
- 'specularExponent',
- 'spreadMethod',
- 'startOffset',
- 'stdDeviation',
- 'stitchTiles',
- 'surfaceScale',
- 'systemLanguage',
- 'tableValues',
- 'targetX',
- 'targetY',
- 'textLength',
- 'viewBox',
- 'viewTarget',
- 'xChannelSelector',
- 'yChannelSelector',
- 'zoomAndPan',
- ].map(e => [e.toLowerCase(), e])
- );
- }),
- a('63Sud', function (e, t) {
- s('kyMdm'), s('lftuc');
- }),
- a('fVc2z', function (e, t) {}),
- a('jAAIj', function (e, r) {
- t(e.exports, 'filter', () => n),
- t(
- e.exports,
- 'findOne',
- () =>
- function e(t, r, n = !0) {
- let s = null;
- for (let a = 0; a < r.length && !s; a++) {
- let o = r[a];
- (0, i.isTag)(o) &&
- (t(o) ? (s = o) : n && o.children.length > 0 && (s = e(t, o.children, !0)));
- }
- return s;
- }
- ),
- s('kyMdm');
- var i = s('lftuc');
- function n(e, t, r = !0, s = 1 / 0) {
- return (function (e, t, r, n) {
- let s = [],
- a = [t],
- o = [0];
- for (;;) {
- if (o[0] >= a[0].length) {
- if (1 === o.length) return s;
- a.shift(), o.shift();
- continue;
- }
- let t = a[0][o[0]++];
- if (e(t) && (s.push(t), --n <= 0)) return s;
- r && (0, i.hasChildren)(t) && t.children.length > 0 && (o.unshift(0), a.unshift(t.children));
- }
- })(e, Array.isArray(t) ? t : [t], r, s);
- }
- }),
- a('7zAkY', function (e, r) {
- t(e.exports, 'getElementsByTagName', () => o), s('kyMdm');
- var i = s('lftuc'),
- n = s('jAAIj');
- let a = e =>
- 'function' == typeof e
- ? t => (0, i.isTag)(t) && e(t.name)
- : '*' === e
- ? i.isTag
- : t => (0, i.isTag)(t) && t.name === e;
- function o(e, t, r = !0, i = 1 / 0) {
- return (0, n.filter)(a(e), t, r, i);
- }
- }),
- a('dIjgl', function (e, t) {
- var r, i;
- s('kyMdm'),
- s('lftuc'),
- ((i = r || (r = {}))[(i.DISCONNECTED = 1)] = 'DISCONNECTED'),
- (i[(i.PRECEDING = 2)] = 'PRECEDING'),
- (i[(i.FOLLOWING = 4)] = 'FOLLOWING'),
- (i[(i.CONTAINS = 8)] = 'CONTAINS'),
- (i[(i.CONTAINED_BY = 16)] = 'CONTAINED_BY');
- }),
- a('9YZre', function (e, r) {
- t(e.exports, 'getFeed', () => a);
- var i = s('1LvIR'),
- n = s('7zAkY');
- function a(e) {
- let t = u(p, e);
- return t
- ? 'feed' === t.name
- ? (function (e) {
- var t;
- let r = e.children,
- i = {
- type: 'atom',
- items: (0, n.getElementsByTagName)('entry', r).map(e => {
- var t;
- let { children: r } = e,
- i = { media: c(r) };
- h(i, 'id', 'id', r), h(i, 'title', 'title', r);
- let n = null === (t = u('link', r)) || void 0 === t ? void 0 : t.attribs.href;
- n && (i.link = n);
- let s = d('summary', r) || d('content', r);
- s && (i.description = s);
- let a = d('updated', r);
- return a && (i.pubDate = new Date(a)), i;
- }),
- };
- h(i, 'id', 'id', r), h(i, 'title', 'title', r);
- let s = null === (t = u('link', r)) || void 0 === t ? void 0 : t.attribs.href;
- s && (i.link = s), h(i, 'description', 'subtitle', r);
- let a = d('updated', r);
- return a && (i.updated = new Date(a)), h(i, 'author', 'email', r, !0), i;
- })(t)
- : (function (e) {
- var t, r;
- let i =
- null !==
- (r =
- null === (t = u('channel', e.children)) || void 0 === t
- ? void 0
- : t.children) && void 0 !== r
- ? r
- : [],
- s = {
- type: e.name.substr(0, 3),
- id: '',
- items: (0, n.getElementsByTagName)('item', e.children).map(e => {
- let { children: t } = e,
- r = { media: c(t) };
- h(r, 'id', 'guid', t),
- h(r, 'title', 'title', t),
- h(r, 'link', 'link', t),
- h(r, 'description', 'description', t);
- let i = d('pubDate', t) || d('dc:date', t);
- return i && (r.pubDate = new Date(i)), r;
- }),
- };
- h(s, 'title', 'title', i), h(s, 'link', 'link', i), h(s, 'description', 'description', i);
- let a = d('lastBuildDate', i);
- return a && (s.updated = new Date(a)), h(s, 'author', 'managingEditor', i, !0), s;
- })(t)
- : null;
- }
- let o = ['url', 'type', 'lang'],
- l = ['fileSize', 'bitrate', 'framerate', 'samplingrate', 'channels', 'duration', 'height', 'width'];
- function c(e) {
- return (0, n.getElementsByTagName)('media:content', e).map(e => {
- let { attribs: t } = e,
- r = { medium: t.medium, isDefault: !!t.isDefault };
- for (let e of o) t[e] && (r[e] = t[e]);
- for (let e of l) t[e] && (r[e] = parseInt(t[e], 10));
- return t.expression && (r.expression = t.expression), r;
- });
- }
- function u(e, t) {
- return (0, n.getElementsByTagName)(e, t, !0, 1)[0];
- }
- function d(e, t, r = !1) {
- return (0, i.textContent)((0, n.getElementsByTagName)(e, t, r, 1)).trim();
- }
- function h(e, t, r, i, n = !1) {
- let s = d(r, i, n);
- s && (e[t] = s);
- }
- function p(e) {
- return 'rss' === e || 'feed' === e || 'rdf:RDF' === e;
- }
- }),
- a('4CCA2', function (e, t) {
- var r = function (e) {
- var t;
- return (
- !!e &&
- 'object' == typeof e &&
- '[object RegExp]' !== (t = Object.prototype.toString.call(e)) &&
- '[object Date]' !== t &&
- e.$$typeof !== i
- );
- },
- i = 'function' == typeof Symbol && Symbol.for ? Symbol.for('react.element') : 60103;
- function n(e, t) {
- return !1 !== t.clone && t.isMergeableObject(e) ? l(Array.isArray(e) ? [] : {}, e, t) : e;
- }
- function s(e, t, r) {
- return e.concat(t).map(function (e) {
- return n(e, r);
- });
- }
- function a(e) {
- return Object.keys(e).concat(
- Object.getOwnPropertySymbols
- ? Object.getOwnPropertySymbols(e).filter(function (t) {
- return Object.propertyIsEnumerable.call(e, t);
- })
- : []
- );
- }
- function o(e, t) {
- try {
- return t in e;
- } catch (e) {
- return !1;
- }
- }
- function l(e, t, i) {
- ((i = i || {}).arrayMerge = i.arrayMerge || s),
- (i.isMergeableObject = i.isMergeableObject || r),
- (i.cloneUnlessOtherwiseSpecified = n);
- var c,
- u,
- d = Array.isArray(t);
- return d !== Array.isArray(e)
- ? n(t, i)
- : d
- ? i.arrayMerge(e, t, i)
- : ((u = {}),
- (c = i).isMergeableObject(e) &&
- a(e).forEach(function (t) {
- u[t] = n(e[t], c);
- }),
- a(t).forEach(function (r) {
- (o(e, r) &&
- !(Object.hasOwnProperty.call(e, r) && Object.propertyIsEnumerable.call(e, r))) ||
- (o(e, r) && c.isMergeableObject(t[r])
- ? (u[r] = (function (e, t) {
- if (!t.customMerge) return l;
- var r = t.customMerge(e);
- return 'function' == typeof r ? r : l;
- })(r, c)(e[r], t[r], c))
- : (u[r] = n(t[r], c)));
- }),
- u);
- }
- (l.all = function (e, t) {
- if (!Array.isArray(e)) throw Error('first argument should be an array');
- return e.reduce(function (e, r) {
- return l(e, r, t);
- }, {});
- }),
- (e.exports = l);
- }),
- s('742Ng');
-})();
-//# sourceMappingURL=Search.js.map
diff --git a/docs/scripts/Search.js.map b/docs/scripts/Search.js.map
deleted file mode 100644
index 545c9d31..00000000
--- a/docs/scripts/Search.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"mappings":"A,C,K,S,E,C,E,O,G,E,U,C,E,O,C,C,C,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,I,E,E,Q,C,E,Q,S,C,C,C,E,E,E,O,C,U,I,G,ICKK,E,E,E,E,S,E,E,Q,EAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,G,M,C,S,E,K,C,Q,E,O,C,UAML,IAAM,EAAyC,OAAO,MAAM,CACxD,IAAI,IAAI,CACJ,CAAC,I,QAAsB,CACvB,CAAC,I,UAAwB,CAE5B,GAEC,EAAyC,OAAO,MAAM,CACxD,IAAI,IAAI,CACJ,C,SAAoB,CAAC,AAAA,EAAA,eAAc,CAAE,KAAK,CAAE,AAAA,EAAA,eAAc,CAAE,OAAO,CAAC,CAAC,CACrE,C,QAAmB,CAAC,AAAA,EAAA,eAAc,CAAE,KAAK,CAAC,CAAC,CAC3C,C,UAAqB,CAAC,AAAA,EAAA,eAAc,CAAE,OAAO,CAAC,CAAC,CAElD,GAoBC,EAA0D,IAAI,IACpE,eAAe,EAAS,CAAa,CAAE,CAA6B,EAChE,EAAQ,EAAM,IAAI,GAClB,IAAM,EAAc,EAAmB,GAAG,CAAC,GACrC,EAAa,EAAc,GAAG,CAAC,CAAK,CAAC,EAAE,GAA7C,SAEA,MADI,WAAA,GAAoC,CAAA,EAAQ,EAAM,KAAK,CAAC,GAAG,IAAI,EAAnE,EACO,AAAU,KAAV,EACD,CAAE,QAAS,CAAA,CAAK,EAChB,CACE,QAAS,CAAA,EACT,WAAY,EACZ,QAAS,GACF,MAAM,AAAC,CAAA,UACN,IAAM,EAA0C,MAAM,EAAqB,EAAY,EAAO,GAE9F,OADA,EAAmB,GAAG,CAAC,EAAO,GACvB,CACX,CAAA,IACJ,UAAW,AAAgB,KAAA,IAAhB,CACf,CACR,CAEA,eAAe,EAAqB,CAAsB,C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O,AA2DnB,SAA8B,CAAI,EAC9B,IAAM,EAAe,EAAY,EAAK,IAAI,EAC1C,MAAO,CAAC,EAAI,EAAM,GAAG,IAAS,EAAa,KAAS,EACxD,EA9DwC,EACpC,CACJ,CA8CA,IAAM,EAAsB,AAAC,IACzB,IAAM,EAAO,EAAG,IAAI,QACpB,AAAI,AAAS,OAAT,EACO,KAEH,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,EAAM,GAAS,EAAO,EAAoB,EACtD,EACM,EAAmB,AAAC,IACtB,IAAM,EAAS,EAAG,MAAM,CACxB,OAAQ,GAAU,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,EAAM,GAAW,EAAS,IAChD,C,G,E,Q,S,C,C,C,E,E,E,O,C,Q,I,A,E,S,K,E,E,E,O,C,U,I,A,E,S,O,E,E,E,O,C,W,I,A,E,S,Q,E,E,E,O,C,U,I,A,E,S,O,E,E,E,O,C,Q,I,A,E,S,K,E,E,E,O,C,wB,I,A,E,S,qB,E,E,E,O,C,O,I,A,E,S,I,E,E,S,E,Q,G,E,Q,S,C,C,C,MElFW,EACA,EAyBJ,SAAS,EAAM,CAAI,EACtB,OAAQ,EAAK,IAAI,GAAK,EAAY,GAAG,EACjC,EAAK,IAAI,GAAK,EAAY,MAAM,EAChC,EAAK,IAAI,GAAK,EAAY,KAAK,AACvC,C,E,E,O,C,c,I,G,E,E,O,C,Q,I,G,E,E,O,C,O,I,G,E,E,O,C,O,I,G,E,E,O,C,Y,I,G,E,E,O,C,U,I,G,E,E,O,C,S,I,G,E,E,O,C,Q,I,G,E,E,O,C,M,I,G,E,E,O,C,Q,I,G,E,E,O,C,U,I,GA3BI,CAFO,EAmBR,GAAgB,CAAA,EAAc,CAAC,CAAA,GAjBlB,IAAO,CAAG,OAEtB,EAAY,IAAO,CAAG,OAEtB,EAAY,SAAY,CAAG,YAE3B,EAAY,OAAU,CAAG,UAEzB,EAAY,MAAS,CAAG,SAExB,EAAY,KAAQ,CAAG,QAEvB,EAAY,GAAM,CAAG,MAErB,EAAY,KAAQ,CAAG,QAEvB,EAAY,OAAU,CAAG,UActB,IAAM,EAAO,EAAY,IAAI,CAEvB,EAAO,EAAY,IAAI,CAEvB,EAAY,EAAY,SAAS,CAEjC,EAAU,EAAY,OAAO,CAE7B,EAAS,EAAY,MAAM,CAE3B,EAAQ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SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,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,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC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,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS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","sources":["
","scripts/Search.ts","node_modules/fuzzysort/fuzzysort.js","lib/types/Searchable.ts","node_modules/html-to-text/lib/html-to-text.mjs","node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.mjs","node_modules/@selderee/plugin-htmlparser2/node_modules/domhandler/lib/esm/index.js","node_modules/domelementtype/lib/esm/index.js","node_modules/@selderee/plugin-htmlparser2/node_modules/domhandler/lib/esm/node.js","node_modules/selderee/lib/selderee.mjs","node_modules/parseley/lib/parseley.mjs","node_modules/leac/lib/leac.mjs","node_modules/peberminta/lib/core.mjs","node_modules/peberminta/lib/util.mjs","node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js","node_modules/html-to-text/node_modules/htmlparser2/lib/esm/https:/raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/index.ts","node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js","node_modules/html-to-text/node_modules/htmlparser2/lib/esm/https:/raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/Parser.ts","node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js","node_modules/html-to-text/node_modules/htmlparser2/lib/esm/https:/raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/Tokenizer.ts","node_modules/entities/lib/decode.js","node_modules/entities/lib/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode.ts","node_modules/entities/lib/generated/decode-data-html.js","node_modules/entities/lib/generated/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-html.ts","node_modules/entities/lib/generated/decode-data-xml.js","node_modules/entities/lib/generated/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-xml.ts","node_modules/entities/lib/decode_codepoint.js","node_modules/entities/lib/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode_codepoint.ts","node_modules/html-to-text/node_modules/domhandler/lib/esm/index.js","node_modules/html-to-text/node_modules/domhandler/lib/esm/node.js","node_modules/html-to-text/node_modules/domutils/lib/esm/https:/raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/index.ts","node_modules/html-to-text/node_modules/domutils/lib/esm/stringify.js","node_modules/html-to-text/node_modules/domutils/lib/esm/https:/raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/stringify.ts","node_modules/html-to-text/node_modules/dom-serializer/lib/esm/index.js","node_modules/entities/lib/esm/index.js","node_modules/entities/lib/esm/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/index.ts","node_modules/entities/lib/esm/decode.js","node_modules/entities/lib/esm/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode.ts","node_modules/entities/lib/esm/generated/decode-data-html.js","node_modules/entities/lib/esm/generated/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-html.ts","node_modules/entities/lib/esm/generated/decode-data-xml.js","node_modules/entities/lib/esm/generated/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-xml.ts","node_modules/entities/lib/esm/decode_codepoint.js","node_modules/entities/lib/esm/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode_codepoint.ts","node_modules/entities/lib/esm/encode.js","node_modules/entities/lib/esm/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/encode.ts","node_modules/entities/lib/esm/generated/encode-html.js","node_modules/entities/lib/esm/generated/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/encode-html.ts","node_modules/entities/lib/esm/escape.js","node_modules/entities/lib/esm/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/escape.ts","node_modules/html-to-text/node_modules/dom-serializer/lib/esm/foreignNames.js","node_modules/html-to-text/node_modules/domutils/lib/esm/traversal.js","node_modules/html-to-text/node_modules/domutils/lib/esm/https:/raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/traversal.ts","node_modules/html-to-text/node_modules/domutils/lib/esm/manipulation.js","node_modules/html-to-text/node_modules/domutils/lib/esm/https:/raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/manipulation.ts","node_modules/html-to-text/node_modules/domutils/lib/esm/querying.js","node_modules/html-to-text/node_modules/domutils/lib/esm/https:/raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/querying.ts","node_modules/html-to-text/node_modules/domutils/lib/esm/legacy.js","node_modules/html-to-text/node_modules/domutils/lib/esm/https:/raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/legacy.ts","node_modules/html-to-text/node_modules/domutils/lib/esm/helpers.js","node_modules/html-to-text/node_modules/domutils/lib/esm/https:/raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/helpers.ts","node_modules/html-to-text/node_modules/domutils/lib/esm/feeds.js","node_modules/html-to-text/node_modules/domutils/lib/esm/https:/raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/feeds.ts","node_modules/deepmerge/dist/cjs.js"],"sourcesContent":["(() => {\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire8bfa\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire8bfa\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"742Ng\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $1716747725c23613$export$2e2bcd8739ae039);\n\nvar $gx5Hu = parcelRequire(\"gx5Hu\");\n\nvar $lHYGq = parcelRequire(\"lHYGq\");\nconst $1716747725c23613$var$SEARCH_RESULTS_HIGHLIGHT_CLASS = \"highlight\";\nvar $1716747725c23613$var$SearchMode;\n(function(SearchMode) {\n SearchMode[\"NORMAL\"] = \"normal\";\n SearchMode[\"TITLE\"] = \"title\";\n SearchMode[\"CONTENT\"] = \"content\";\n})($1716747725c23613$var$SearchMode || ($1716747725c23613$var$SearchMode = {}));\nconst $1716747725c23613$var$SEARCH_PREFIX = Object.freeze(new Map([\n [\n \"!\",\n \"title\"\n ],\n [\n \":\",\n \"content\"\n ]\n]));\nconst $1716747725c23613$var$SEARCH_KEYS = Object.freeze(new Map([\n [\n \"normal\",\n [\n (0, $lHYGq.IndexableFields).TITLE,\n (0, $lHYGq.IndexableFields).CONTENT\n ]\n ],\n [\n \"title\",\n [\n (0, $lHYGq.IndexableFields).TITLE\n ]\n ],\n [\n \"content\",\n [\n (0, $lHYGq.IndexableFields).CONTENT\n ]\n ]\n]));\nconst $1716747725c23613$var$searchResultsCache = new Map();\nasync function $1716747725c23613$var$doSearch(query, searchTargets) {\n query = query.trim();\n const cacheResult = $1716747725c23613$var$searchResultsCache.get(query);\n const searchMode = $1716747725c23613$var$SEARCH_PREFIX.get(query[0]) ?? \"normal\";\n if (searchMode !== \"normal\") query = query.slice(1).trim();\n return query === \"\" ? {\n aborted: true\n } : {\n aborted: false,\n searchMode: searchMode,\n results: cacheResult ?? await (async ()=>{\n const compiledResults = await $1716747725c23613$var$compileSearchResults(searchMode, query, searchTargets);\n $1716747725c23613$var$searchResultsCache.set(query, compiledResults);\n return compiledResults;\n })(),\n usedCache: cacheResult !== undefined\n };\n}\nasync function $1716747725c23613$var$compileSearchResults(searchMode, query, searchTargets) {\n const compiledResults = [];\n //! PERFORMANCE\n const fuzzysortStartTime = performance.now();\n //! -----------\n const results = (0, (/*@__PURE__*/$parcel$interopDefault($gx5Hu))).go(query, searchTargets, {\n keys: $1716747725c23613$var$SEARCH_KEYS.get(searchMode) ?? (()=>{\n throw new Error(`Search keys not found for search mode ${searchMode}`);\n })()\n });\n //! PERFORMANCE\n const fuzzysortEndTime = performance.now();\n //! -----------\n //! PERFORMANCE\n const compilationStartTime = performance.now();\n //! -----------\n results.forEach((result)=>{\n console.log(result);\n const { titleResult: titleResult, contentResult: contentResult } = (()=>{\n switch(searchMode){\n case \"normal\":\n return {\n titleResult: result[0],\n contentResult: result[1]\n };\n case \"title\":\n return {\n titleResult: result[0],\n contentResult: undefined\n };\n case \"content\":\n return {\n titleResult: undefined,\n contentResult: result[0]\n };\n default:\n throw new Error(`Search mode ${searchMode} not implemented`);\n }\n })();\n compiledResults.push({\n path: result.obj.path,\n score: result.score,\n title: result.obj.title.target,\n highlightedTitleChunks: titleResult !== undefined ? getHighlighted(query, titleResult) : [\n result.obj.title.target\n ],\n highlightedContentChunks: contentResult !== undefined ? getHighlighted(query, contentResult) : [\n getAbbreviated(result.obj.content.target)\n ]\n });\n });\n //! PERFORMANCE\n const compilationEndTime = performance.now();\n console.log(\"Fuzzysort took\", fuzzysortEndTime - fuzzysortStartTime, \"ms\");\n console.log(\"Compilation took\", compilationEndTime - compilationStartTime, \"ms\");\n //! -----------\n return compiledResults;\n //\n function getHighlighted(query, result) {\n const OPEN_TAG = ``;\n const CLOSE_TAG = \" \";\n // preliminary highlight using fuzzysort highlight function\n // this only cares about the first match and ignores the rest\n const preHighlightedTokens = result.highlight((highlightText)=>`${OPEN_TAG}${highlightText}${CLOSE_TAG}`);\n if (preHighlightedTokens.length === 0) return [];\n // highlight the rest, atomise them, and push them into the same array\n const TAGGED_REGEX = new RegExp(String.raw`^${OPEN_TAG}.*${CLOSE_TAG}$`, \"g\");\n const comprehensiveTokens = getComprehensiveTokens(preHighlightedTokens);\n const [atomicTokens, tagTokenIndices] = atomiseTokens(comprehensiveTokens);\n // condense the tokens\n const condensedTokens = condenseTokens(atomicTokens, tagTokenIndices);\n return condensedTokens;\n //\n function getComprehensiveTokens(inputTokens) {\n const compTokens = [];\n inputTokens.forEach((token)=>{\n if (token.match(TAGGED_REGEX)) // is tag\n compTokens.push(token);\n else {\n // is sentences\n const taggedSentences = highlightMore(token);\n const tokenisedHighlightedSentences = tokeniseTaggedSentences(taggedSentences);\n compTokens.push(...tokenisedHighlightedSentences);\n }\n });\n return compTokens;\n //\n function highlightMore(text) {\n const queries = query.split(\" \").filter((word)=>word.length > 0).map((word)=>word.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"));\n const comprehensiveQueryRegex = new RegExp(String.raw`(${queries.join(\"|\")})`, \"gi\");\n return text.replace(comprehensiveQueryRegex, `${OPEN_TAG}$1${CLOSE_TAG}`);\n }\n function tokeniseTaggedSentences(taggedSentences) {\n const tagSplitRegex = new RegExp(String.raw`(?=${OPEN_TAG})|(?<=${CLOSE_TAG})`, \"g\");\n return taggedSentences.split(tagSplitRegex);\n }\n }\n function atomiseTokens(inputTokens) {\n const tokens = [];\n const tokenIndices = [];\n inputTokens.forEach((token)=>{\n if (token.match(TAGGED_REGEX)) {\n // is tag\n tokenIndices.push(tokens.length);\n tokens.push(token);\n } else // is sentences\n tokens.push(...tokeniseSentences(token));\n });\n return [\n tokens,\n tokenIndices\n ];\n //\n function tokeniseSentences(sentences) {\n const tokens = sentences.split(/(?<=\\n|\\.\\s|\\?\\s|!\\s)/g).filter((sentence)=>sentence.length > 0);\n const paddedTokens = replaceNewlinesWithEmptyElements(tokens);\n return paddedTokens;\n //\n function replaceNewlinesWithEmptyElements(tokens) {\n for(let i = 0; i < tokens.length; i++){\n const splitTokens = tokens[i].split(\"\\n\");\n if (splitTokens.length > 1) {\n const withEmptyElements = interweaveEmptyElements(splitTokens);\n tokens.splice(i, 1, ...withEmptyElements);\n i += withEmptyElements.length - 1;\n }\n }\n return tokens;\n }\n function interweaveEmptyElements(splitTokens) {\n const interweaved = [];\n for(let j = 0; j < splitTokens.length; j++){\n interweaved.push(splitTokens[j]);\n if (j < splitTokens.length - 1) interweaved.push(\"\");\n }\n return interweaved;\n }\n }\n }\n function condenseTokens(inputTokens, tagIndices) {\n const condensedTokens = [];\n let condensedTokenIndex = 0;\n while(condensedTokenIndex < inputTokens.length){\n let currentCondensedToken = \"\";\n let position;\n while(isTruthy(position = tokenIsTagOrAdjacentToTag(condensedTokenIndex))){\n const token = inputTokens[condensedTokenIndex];\n if (token === undefined) break;\n condensedTokenIndex++;\n //\n currentCondensedToken += token;\n if (!position.isBefore && position.isAfter) break;\n }\n if (currentCondensedToken.length > 0) condensedTokens.push(currentCondensedToken.trim());\n else condensedTokenIndex++;\n }\n return condensedTokens;\n function tokenIsTagOrAdjacentToTag(index) {\n return {\n isBefore: tagIndices.includes(index + 1),\n isTag: tagIndices.includes(index),\n isAfter: tagIndices.includes(index - 1)\n };\n }\n function isTruthy(position) {\n return position.isBefore || position.isTag || position.isAfter;\n }\n }\n }\n function getAbbreviated(text) {\n const MAX_LENGTH = 200;\n return text.length > MAX_LENGTH ? text.slice(0, MAX_LENGTH) + \"...\" : text;\n }\n}\nclass $1716747725c23613$export$2e2bcd8739ae039 {\n static{\n this.doSearch = $1716747725c23613$var$doSearch;\n }\n}\n\n});\nparcelRegister(\"gx5Hu\", function(module, exports) {\n// https://github.com/farzher/fuzzysort v3.0.2\n// UMD (Universal Module Definition) for fuzzysort\n((root, UMD)=>{\n if (typeof define === \"function\" && define.amd) define([], UMD);\n else if (0, module.exports) module.exports = UMD();\n else root[\"fuzzysort\"] = UMD();\n})(module.exports, (_)=>{\n \"use strict\";\n var single = (search, target)=>{\n if (!search || !target) return NULL;\n var preparedSearch = getPreparedSearch(search);\n if (!isPrepared(target)) target = getPrepared(target);\n var searchBitflags = preparedSearch.bitflags;\n if ((searchBitflags & target._bitflags) !== searchBitflags) return NULL;\n return algorithm(preparedSearch, target);\n };\n var go = (search, targets, options)=>{\n if (!search) return options?.all ? all(targets, options) : noResults;\n var preparedSearch = getPreparedSearch(search);\n var searchBitflags = preparedSearch.bitflags;\n var containsSpace = preparedSearch.containsSpace;\n var threshold = denormalizeScore(options?.threshold || 0);\n var limit = options?.limit || INFINITY;\n var resultsLen = 0;\n var limitedCount = 0;\n var targetsLen = targets.length;\n function push_result(result) {\n if (resultsLen < limit) {\n q.add(result);\n ++resultsLen;\n } else {\n ++limitedCount;\n if (result._score > q.peek()._score) q.replaceTop(result);\n }\n }\n // This code is copy/pasted 3 times for performance reasons [options.key, options.keys, no keys]\n // options.key\n if (options?.key) {\n var key = options.key;\n for(var i = 0; i < targetsLen; ++i){\n var obj = targets[i];\n var target = getValue(obj, key);\n if (!target) continue;\n if (!isPrepared(target)) target = getPrepared(target);\n if ((searchBitflags & target._bitflags) !== searchBitflags) continue;\n var result = algorithm(preparedSearch, target);\n if (result === NULL) continue;\n if (result._score < threshold) continue;\n result.obj = obj;\n push_result(result);\n }\n // options.keys\n } else if (options?.keys) {\n var keys = options.keys;\n var keysLen = keys.length;\n outer: for(var i = 0; i < targetsLen; ++i){\n var obj = targets[i];\n var keysBitflags = 0;\n for(var keyI = 0; keyI < keysLen; ++keyI){\n var key = keys[keyI];\n var target = getValue(obj, key);\n if (!target) {\n tmpTargets[keyI] = noTarget;\n continue;\n }\n if (!isPrepared(target)) target = getPrepared(target);\n tmpTargets[keyI] = target;\n keysBitflags |= target._bitflags;\n }\n if ((searchBitflags & keysBitflags) !== searchBitflags) continue;\n if (containsSpace) for(let i = 0; i < preparedSearch.spaceSearches.length; i++)keysSpacesBestScores[i] = NEGATIVE_INFINITY;\n for(var keyI = 0; keyI < keysLen; ++keyI){\n target = tmpTargets[keyI];\n if (target === noTarget) {\n tmpResults[keyI] = noTarget;\n continue;\n }\n tmpResults[keyI] = algorithm(preparedSearch, target, /*allowSpaces=*/ false, /*allowPartialMatch=*/ containsSpace);\n if (tmpResults[keyI] === NULL) {\n tmpResults[keyI] = noTarget;\n continue;\n }\n // todo: this seems weird and wrong. like what if our first match wasn't good. this should just replace it instead of averaging with it\n // if our second match isn't good we ignore it instead of averaging with it\n if (containsSpace) for(let i = 0; i < preparedSearch.spaceSearches.length; i++){\n if (allowPartialMatchScores[i] > -1000) {\n if (keysSpacesBestScores[i] > NEGATIVE_INFINITY) {\n var tmp = (keysSpacesBestScores[i] + allowPartialMatchScores[i]) / 4 /*bonus score for having multiple matches*/ ;\n if (tmp > keysSpacesBestScores[i]) keysSpacesBestScores[i] = tmp;\n }\n }\n if (allowPartialMatchScores[i] > keysSpacesBestScores[i]) keysSpacesBestScores[i] = allowPartialMatchScores[i];\n }\n }\n if (containsSpace) for(let i = 0; i < preparedSearch.spaceSearches.length; i++){\n if (keysSpacesBestScores[i] === NEGATIVE_INFINITY) continue outer;\n }\n else {\n var hasAtLeast1Match = false;\n for(let i = 0; i < keysLen; i++)if (tmpResults[i]._score !== NEGATIVE_INFINITY) {\n hasAtLeast1Match = true;\n break;\n }\n if (!hasAtLeast1Match) continue;\n }\n var objResults = new KeysResult(keysLen);\n for(let i = 0; i < keysLen; i++)objResults[i] = tmpResults[i];\n if (containsSpace) {\n var score = 0;\n for(let i = 0; i < preparedSearch.spaceSearches.length; i++)score += keysSpacesBestScores[i];\n } else {\n // todo could rewrite this scoring to be more similar to when there's spaces\n // if we match multiple keys give us bonus points\n var score = NEGATIVE_INFINITY;\n for(let i = 0; i < keysLen; i++){\n var result = objResults[i];\n if (result._score > -1000) {\n if (score > NEGATIVE_INFINITY) {\n var tmp = (score + result._score) / 4 /*bonus score for having multiple matches*/ ;\n if (tmp > score) score = tmp;\n }\n }\n if (result._score > score) score = result._score;\n }\n }\n objResults.obj = obj;\n objResults._score = score;\n if (options?.scoreFn) {\n score = options.scoreFn(objResults);\n if (!score) continue;\n score = denormalizeScore(score);\n objResults._score = score;\n }\n if (score < threshold) continue;\n push_result(objResults);\n }\n // no keys\n } else for(var i = 0; i < targetsLen; ++i){\n var target = targets[i];\n if (!target) continue;\n if (!isPrepared(target)) target = getPrepared(target);\n if ((searchBitflags & target._bitflags) !== searchBitflags) continue;\n var result = algorithm(preparedSearch, target);\n if (result === NULL) continue;\n if (result._score < threshold) continue;\n push_result(result);\n }\n if (resultsLen === 0) return noResults;\n var results = new Array(resultsLen);\n for(var i = resultsLen - 1; i >= 0; --i)results[i] = q.poll();\n results.total = resultsLen + limitedCount;\n return results;\n };\n // this is written as 1 function instead of 2 for minification. perf seems fine ...\n // except when minified. the perf is very slow\n var highlight = (result, open = \"\", close = \" \")=>{\n var callback = typeof open === \"function\" ? open : undefined;\n var target = result.target;\n var targetLen = target.length;\n var indexes = result.indexes;\n var highlighted = \"\";\n var matchI = 0;\n var indexesI = 0;\n var opened = false;\n var parts = [];\n for(var i = 0; i < targetLen; ++i){\n var char = target[i];\n if (indexes[indexesI] === i) {\n ++indexesI;\n if (!opened) {\n opened = true;\n if (callback) {\n parts.push(highlighted);\n highlighted = \"\";\n } else highlighted += open;\n }\n if (indexesI === indexes.length) {\n if (callback) {\n highlighted += char;\n parts.push(callback(highlighted, matchI++));\n highlighted = \"\";\n parts.push(target.substr(i + 1));\n } else highlighted += char + close + target.substr(i + 1);\n break;\n }\n } else if (opened) {\n opened = false;\n if (callback) {\n parts.push(callback(highlighted, matchI++));\n highlighted = \"\";\n } else highlighted += close;\n }\n highlighted += char;\n }\n return callback ? parts : highlighted;\n };\n var prepare = (target)=>{\n if (typeof target === \"number\") target = \"\" + target;\n else if (typeof target !== \"string\") target = \"\";\n var info = prepareLowerInfo(target);\n return new_result(target, {\n _targetLower: info._lower,\n _targetLowerCodes: info.lowerCodes,\n _bitflags: info.bitflags\n });\n };\n var cleanup = ()=>{\n preparedCache.clear();\n preparedSearchCache.clear();\n };\n // Below this point is only internal code\n // Below this point is only internal code\n // Below this point is only internal code\n // Below this point is only internal code\n class Result {\n get [\"indexes\"]() {\n return this._indexes.slice(0, this._indexes.len).sort((a, b)=>a - b);\n }\n set [\"indexes\"](indexes) {\n return this._indexes = indexes;\n }\n [\"highlight\"](open, close) {\n return highlight(this, open, close);\n }\n get [\"score\"]() {\n return normalizeScore(this._score);\n }\n set [\"score\"](score) {\n this._score = denormalizeScore(score);\n }\n }\n class KeysResult extends Array {\n get [\"score\"]() {\n return normalizeScore(this._score);\n }\n set [\"score\"](score) {\n this._score = denormalizeScore(score);\n }\n }\n var new_result = (target, options)=>{\n const result = new Result();\n result[\"target\"] = target;\n result[\"obj\"] = options.obj ?? NULL;\n result._score = options._score ?? NEGATIVE_INFINITY;\n result._indexes = options._indexes ?? [];\n result._targetLower = options._targetLower ?? \"\";\n result._targetLowerCodes = options._targetLowerCodes ?? NULL;\n result._nextBeginningIndexes = options._nextBeginningIndexes ?? NULL;\n result._bitflags = options._bitflags ?? 0;\n return result;\n };\n var normalizeScore = (score)=>{\n if (score === NEGATIVE_INFINITY) return 0;\n if (score > 1) return score;\n return Math.E ** (((-score + 1) ** .04307 - 1) * -2);\n };\n var denormalizeScore = (normalizedScore)=>{\n if (normalizedScore === 0) return NEGATIVE_INFINITY;\n if (normalizedScore > 1) return normalizedScore;\n return 1 - Math.pow(Math.log(normalizedScore) / -2 + 1, 1 / 0.04307);\n };\n var prepareSearch = (search)=>{\n if (typeof search === \"number\") search = \"\" + search;\n else if (typeof search !== \"string\") search = \"\";\n search = search.trim();\n var info = prepareLowerInfo(search);\n var spaceSearches = [];\n if (info.containsSpace) {\n var searches = search.split(/\\s+/);\n searches = [\n ...new Set(searches)\n ] // distinct\n ;\n for(var i = 0; i < searches.length; i++){\n if (searches[i] === \"\") continue;\n var _info = prepareLowerInfo(searches[i]);\n spaceSearches.push({\n lowerCodes: _info.lowerCodes,\n _lower: searches[i].toLowerCase(),\n containsSpace: false\n });\n }\n }\n return {\n lowerCodes: info.lowerCodes,\n _lower: info._lower,\n containsSpace: info.containsSpace,\n bitflags: info.bitflags,\n spaceSearches: spaceSearches\n };\n };\n var getPrepared = (target)=>{\n if (target.length > 999) return prepare(target) // don't cache huge targets\n ;\n var targetPrepared = preparedCache.get(target);\n if (targetPrepared !== undefined) return targetPrepared;\n targetPrepared = prepare(target);\n preparedCache.set(target, targetPrepared);\n return targetPrepared;\n };\n var getPreparedSearch = (search)=>{\n if (search.length > 999) return prepareSearch(search) // don't cache huge searches\n ;\n var searchPrepared = preparedSearchCache.get(search);\n if (searchPrepared !== undefined) return searchPrepared;\n searchPrepared = prepareSearch(search);\n preparedSearchCache.set(search, searchPrepared);\n return searchPrepared;\n };\n var all = (targets, options)=>{\n var results = [];\n results.total = targets.length // this total can be wrong if some targets are skipped\n ;\n var limit = options?.limit || INFINITY;\n if (options?.key) for(var i = 0; i < targets.length; i++){\n var obj = targets[i];\n var target = getValue(obj, options.key);\n if (target == NULL) continue;\n if (!isPrepared(target)) target = getPrepared(target);\n var result = new_result(target.target, {\n _score: target._score,\n obj: obj\n });\n results.push(result);\n if (results.length >= limit) return results;\n }\n else if (options?.keys) for(var i = 0; i < targets.length; i++){\n var obj = targets[i];\n var objResults = new KeysResult(options.keys.length);\n for(var keyI = options.keys.length - 1; keyI >= 0; --keyI){\n var target = getValue(obj, options.keys[keyI]);\n if (!target) {\n objResults[keyI] = noTarget;\n continue;\n }\n if (!isPrepared(target)) target = getPrepared(target);\n target._score = NEGATIVE_INFINITY;\n target._indexes.len = 0;\n objResults[keyI] = target;\n }\n objResults.obj = obj;\n objResults._score = NEGATIVE_INFINITY;\n results.push(objResults);\n if (results.length >= limit) return results;\n }\n else for(var i = 0; i < targets.length; i++){\n var target = targets[i];\n if (target == NULL) continue;\n if (!isPrepared(target)) target = getPrepared(target);\n target._score = NEGATIVE_INFINITY;\n target._indexes.len = 0;\n results.push(target);\n if (results.length >= limit) return results;\n }\n return results;\n };\n var algorithm = (preparedSearch, prepared, allowSpaces = false, allowPartialMatch = false)=>{\n if (allowSpaces === false && preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared, allowPartialMatch);\n var searchLower = preparedSearch._lower;\n var searchLowerCodes = preparedSearch.lowerCodes;\n var searchLowerCode = searchLowerCodes[0];\n var targetLowerCodes = prepared._targetLowerCodes;\n var searchLen = searchLowerCodes.length;\n var targetLen = targetLowerCodes.length;\n var searchI = 0 // where we at\n ;\n var targetI = 0 // where you at\n ;\n var matchesSimpleLen = 0;\n // very basic fuzzy match; to remove non-matching targets ASAP!\n // walk through target. find sequential matches.\n // if all chars aren't found then exit\n for(;;){\n var isMatch = searchLowerCode === targetLowerCodes[targetI];\n if (isMatch) {\n matchesSimple[matchesSimpleLen++] = targetI;\n ++searchI;\n if (searchI === searchLen) break;\n searchLowerCode = searchLowerCodes[searchI];\n }\n ++targetI;\n if (targetI >= targetLen) return NULL // Failed to find searchI\n ;\n }\n var searchI = 0;\n var successStrict = false;\n var matchesStrictLen = 0;\n var nextBeginningIndexes = prepared._nextBeginningIndexes;\n if (nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target);\n targetI = matchesSimple[0] === 0 ? 0 : nextBeginningIndexes[matchesSimple[0] - 1];\n // Our target string successfully matched all characters in sequence!\n // Let's try a more advanced and strict test to improve the score\n // only count it as a match if it's consecutive or a beginning character!\n var backtrackCount = 0;\n if (targetI !== targetLen) for(;;)if (targetI >= targetLen) {\n // We failed to find a good spot for this search char, go back to the previous search char and force it forward\n if (searchI <= 0) break; // We failed to push chars forward for a better match\n ++backtrackCount;\n if (backtrackCount > 200) break; // exponential backtracking is taking too long, just give up and return a bad match\n --searchI;\n var lastMatch = matchesStrict[--matchesStrictLen];\n targetI = nextBeginningIndexes[lastMatch];\n } else {\n var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI];\n if (isMatch) {\n matchesStrict[matchesStrictLen++] = targetI;\n ++searchI;\n if (searchI === searchLen) {\n successStrict = true;\n break;\n }\n ++targetI;\n } else targetI = nextBeginningIndexes[targetI];\n }\n // check if it's a substring match\n var substringIndex = searchLen <= 1 ? -1 : prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow\n ;\n var isSubstring = !!~substringIndex;\n var isSubstringBeginning = !isSubstring ? false : substringIndex === 0 || prepared._nextBeginningIndexes[substringIndex - 1] === substringIndex;\n // if it's a substring match but not at a beginning index, let's try to find a substring starting at a beginning index for a better score\n if (isSubstring && !isSubstringBeginning) for(var i = 0; i < nextBeginningIndexes.length; i = nextBeginningIndexes[i]){\n if (i <= substringIndex) continue;\n for(var s = 0; s < searchLen; s++)if (searchLowerCodes[s] !== prepared._targetLowerCodes[i + s]) break;\n if (s === searchLen) {\n substringIndex = i;\n isSubstringBeginning = true;\n break;\n }\n }\n // tally up the score & keep track of matches for highlighting later\n // if it's a simple match, we'll switch to a substring match if a substring exists\n // if it's a strict match, we'll switch to a substring match only if that's a better score\n var calculateScore = (matches)=>{\n var score = 0;\n var extraMatchGroupCount = 0;\n for(var i = 1; i < searchLen; ++i)if (matches[i] - matches[i - 1] !== 1) {\n score -= matches[i];\n ++extraMatchGroupCount;\n }\n var unmatchedDistance = matches[searchLen - 1] - matches[0] - (searchLen - 1);\n score -= (12 + unmatchedDistance) * extraMatchGroupCount // penality for more groups\n ;\n if (matches[0] !== 0) score -= matches[0] * matches[0] * .2 // penality for not starting near the beginning\n ;\n if (!successStrict) score *= 1000;\n else {\n // successStrict on a target with too many beginning indexes loses points for being a bad target\n var uniqueBeginningIndexes = 1;\n for(var i = nextBeginningIndexes[0]; i < targetLen; i = nextBeginningIndexes[i])++uniqueBeginningIndexes;\n if (uniqueBeginningIndexes > 24) score *= (uniqueBeginningIndexes - 24) * 10 // quite arbitrary numbers here ...\n ;\n }\n score -= (targetLen - searchLen) / 2 // penality for longer targets\n ;\n if (isSubstring) score /= 1 + searchLen * searchLen * 1 // bonus for being a full substring\n ;\n if (isSubstringBeginning) score /= 1 + searchLen * searchLen * 1 // bonus for substring starting on a beginningIndex\n ;\n score -= (targetLen - searchLen) / 2 // penality for longer targets\n ;\n return score;\n };\n if (!successStrict) {\n if (isSubstring) for(var i = 0; i < searchLen; ++i)matchesSimple[i] = substringIndex + i // at this point it's safe to overwrite matchehsSimple with substr matches\n ;\n var matchesBest = matchesSimple;\n var score = calculateScore(matchesBest);\n } else if (isSubstringBeginning) {\n for(var i = 0; i < searchLen; ++i)matchesSimple[i] = substringIndex + i // at this point it's safe to overwrite matchehsSimple with substr matches\n ;\n var matchesBest = matchesSimple;\n var score = calculateScore(matchesSimple);\n } else {\n var matchesBest = matchesStrict;\n var score = calculateScore(matchesStrict);\n }\n prepared._score = score;\n for(var i = 0; i < searchLen; ++i)prepared._indexes[i] = matchesBest[i];\n prepared._indexes.len = searchLen;\n const result = new Result();\n result.target = prepared.target;\n result._score = prepared._score;\n result._indexes = prepared._indexes;\n return result;\n };\n var algorithmSpaces = (preparedSearch, target, allowPartialMatch)=>{\n var seen_indexes = new Set();\n var score = 0;\n var result = NULL;\n var first_seen_index_last_search = 0;\n var searches = preparedSearch.spaceSearches;\n var searchesLen = searches.length;\n var changeslen = 0;\n // Return _nextBeginningIndexes back to its normal state\n var resetNextBeginningIndexes = ()=>{\n for(let i = changeslen - 1; i >= 0; i--)target._nextBeginningIndexes[nextBeginningIndexesChanges[i * 2 + 0]] = nextBeginningIndexesChanges[i * 2 + 1];\n };\n var hasAtLeast1Match = false;\n for(var i = 0; i < searchesLen; ++i){\n allowPartialMatchScores[i] = NEGATIVE_INFINITY;\n var search = searches[i];\n result = algorithm(search, target);\n if (allowPartialMatch) {\n if (result === NULL) continue;\n hasAtLeast1Match = true;\n } else if (result === NULL) {\n resetNextBeginningIndexes();\n return NULL;\n }\n // if not the last search, we need to mutate _nextBeginningIndexes for the next search\n var isTheLastSearch = i === searchesLen - 1;\n if (!isTheLastSearch) {\n var indexes = result._indexes;\n var indexesIsConsecutiveSubstring = true;\n for(let i = 0; i < indexes.len - 1; i++)if (indexes[i + 1] - indexes[i] !== 1) {\n indexesIsConsecutiveSubstring = false;\n break;\n }\n if (indexesIsConsecutiveSubstring) {\n var newBeginningIndex = indexes[indexes.len - 1] + 1;\n var toReplace = target._nextBeginningIndexes[newBeginningIndex - 1];\n for(let i = newBeginningIndex - 1; i >= 0; i--){\n if (toReplace !== target._nextBeginningIndexes[i]) break;\n target._nextBeginningIndexes[i] = newBeginningIndex;\n nextBeginningIndexesChanges[changeslen * 2 + 0] = i;\n nextBeginningIndexesChanges[changeslen * 2 + 1] = toReplace;\n changeslen++;\n }\n }\n }\n score += result._score / searchesLen;\n allowPartialMatchScores[i] = result._score / searchesLen;\n // dock points based on order otherwise \"c man\" returns Manifest.cpp instead of CheatManager.h\n if (result._indexes[0] < first_seen_index_last_search) score -= (first_seen_index_last_search - result._indexes[0]) * 2;\n first_seen_index_last_search = result._indexes[0];\n for(var j = 0; j < result._indexes.len; ++j)seen_indexes.add(result._indexes[j]);\n }\n if (allowPartialMatch && !hasAtLeast1Match) return NULL;\n resetNextBeginningIndexes();\n // allows a search with spaces that's an exact substring to score well\n var allowSpacesResult = algorithm(preparedSearch, target, /*allowSpaces=*/ true);\n if (allowSpacesResult !== NULL && allowSpacesResult._score > score) {\n if (allowPartialMatch) for(var i = 0; i < searchesLen; ++i)allowPartialMatchScores[i] = allowSpacesResult._score / searchesLen;\n return allowSpacesResult;\n }\n if (allowPartialMatch) result = target;\n result._score = score;\n var i = 0;\n for (let index of seen_indexes)result._indexes[i++] = index;\n result._indexes.len = i;\n return result;\n };\n var prepareLowerInfo = (str)=>{\n var strLen = str.length;\n var lower = str.toLowerCase();\n var lowerCodes = [] // new Array(strLen) sparse array is too slow\n ;\n var bitflags = 0;\n var containsSpace = false // space isn't stored in bitflags because of how searching with a space works\n ;\n for(var i = 0; i < strLen; ++i){\n var lowerCode = lowerCodes[i] = lower.charCodeAt(i);\n if (lowerCode === 32) {\n containsSpace = true;\n continue; // it's important that we don't set any bitflags for space\n }\n var bit = lowerCode >= 97 && lowerCode <= 122 ? lowerCode - 97 // alphabet\n : lowerCode >= 48 && lowerCode <= 57 ? 26 // numbers\n : lowerCode <= 127 ? 30 // other ascii\n : 31 // other utf8\n ;\n bitflags |= 1 << bit;\n }\n return {\n lowerCodes: lowerCodes,\n bitflags: bitflags,\n containsSpace: containsSpace,\n _lower: lower\n };\n };\n var prepareBeginningIndexes = (target)=>{\n var targetLen = target.length;\n var beginningIndexes = [];\n var beginningIndexesLen = 0;\n var wasUpper = false;\n var wasAlphanum = false;\n for(var i = 0; i < targetLen; ++i){\n var targetCode = target.charCodeAt(i);\n var isUpper = targetCode >= 65 && targetCode <= 90;\n var isAlphanum = isUpper || targetCode >= 97 && targetCode <= 122 || targetCode >= 48 && targetCode <= 57;\n var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum;\n wasUpper = isUpper;\n wasAlphanum = isAlphanum;\n if (isBeginning) beginningIndexes[beginningIndexesLen++] = i;\n }\n return beginningIndexes;\n };\n var prepareNextBeginningIndexes = (target)=>{\n var targetLen = target.length;\n var beginningIndexes = prepareBeginningIndexes(target);\n var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow\n ;\n var lastIsBeginning = beginningIndexes[0];\n var lastIsBeginningI = 0;\n for(var i = 0; i < targetLen; ++i)if (lastIsBeginning > i) nextBeginningIndexes[i] = lastIsBeginning;\n else {\n lastIsBeginning = beginningIndexes[++lastIsBeginningI];\n nextBeginningIndexes[i] = lastIsBeginning === undefined ? targetLen : lastIsBeginning;\n }\n return nextBeginningIndexes;\n };\n var preparedCache = new Map();\n var preparedSearchCache = new Map();\n // the theory behind these being globals is to reduce garbage collection by not making new arrays\n var matchesSimple = [];\n var matchesStrict = [];\n var nextBeginningIndexesChanges = [] // allows straw berry to match strawberry well, by modifying the end of a substring to be considered a beginning index for the rest of the search\n ;\n var keysSpacesBestScores = [];\n var allowPartialMatchScores = [];\n var tmpTargets = [];\n var tmpResults = [];\n // prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]\n // prop = 'key1.key2' 10ms\n // prop = ['key1', 'key2'] 27ms\n // prop = obj => obj.tags.join() ??ms\n var getValue = (obj, prop)=>{\n var tmp = obj[prop];\n if (tmp !== undefined) return tmp;\n if (typeof prop === \"function\") return prop(obj) // this should run first. but that makes string props slower\n ;\n var segs = prop;\n if (!Array.isArray(prop)) segs = prop.split(\".\");\n var len = segs.length;\n var i = -1;\n while(obj && ++i < len)obj = obj[segs[i]];\n return obj;\n };\n var isPrepared = (x)=>{\n return typeof x === \"object\" && typeof x._bitflags === \"number\";\n };\n var INFINITY = Infinity;\n var NEGATIVE_INFINITY = -INFINITY;\n var noResults = [];\n noResults.total = 0;\n var NULL = null;\n var noTarget = prepare(\"\");\n // Hacked version of https://github.com/lemire/FastPriorityQueue.js\n var fastpriorityqueue = (r)=>{\n var e = [], o = 0, a = {}, v = (r)=>{\n for(var a = 0, v = e[a], c = 1; c < o;){\n var s = c + 1;\n a = c, s < o && e[s]._score < e[c]._score && (a = s), e[a - 1 >> 1] = e[a], c = 1 + (a << 1);\n }\n for(var f = a - 1 >> 1; a > 0 && v._score < e[f]._score; f = (a = f) - 1 >> 1)e[a] = e[f];\n e[a] = v;\n };\n return a.add = (r)=>{\n var a = o;\n e[o++] = r;\n for(var v = a - 1 >> 1; a > 0 && r._score < e[v]._score; v = (a = v) - 1 >> 1)e[a] = e[v];\n e[a] = r;\n }, a.poll = (r)=>{\n if (0 !== o) {\n var a = e[0];\n return e[0] = e[--o], v(), a;\n }\n }, a.peek = (r)=>{\n if (0 !== o) return e[0];\n }, a.replaceTop = (r)=>{\n e[0] = r, v();\n }, a;\n };\n var q = fastpriorityqueue() // reuse this\n ;\n // fuzzysort is written this way for minification. all names are mangeled unless quoted\n return {\n \"single\": single,\n \"go\": go,\n \"prepare\": prepare,\n \"cleanup\": cleanup\n };\n}) // UMD\n;\n\n});\n\nparcelRegister(\"lHYGq\", function(module, exports) {\n\n$parcel$export(module.exports, \"IndexableFields\", () => $03f4340efc174132$export$6d716a6d0d17e74d);\n$parcel$export(module.exports, \"default\", () => $03f4340efc174132$export$2e2bcd8739ae039);\n\nvar $iQ98l = parcelRequire(\"iQ98l\");\n\nvar $gx5Hu = parcelRequire(\"gx5Hu\");\nvar $03f4340efc174132$export$6d716a6d0d17e74d;\n(function(IndexableFields) {\n IndexableFields[\"TITLE\"] = \"title\";\n IndexableFields[\"CONTENT\"] = \"content\";\n})($03f4340efc174132$export$6d716a6d0d17e74d || ($03f4340efc174132$export$6d716a6d0d17e74d = {}));\nfunction $03f4340efc174132$var$sanitiseRawContent(htmlPollutedRawContent) {\n let sanitisedRawContent = (0, $iQ98l.htmlToText)(htmlPollutedRawContent, {\n wordwrap: false,\n selectors: [\n {\n selector: \"*\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"img\",\n format: \"skip\"\n },\n {\n selector: \"hr\",\n format: \"skip\"\n },\n {\n selector: \"blockquote\",\n format: \"block\"\n },\n {\n selector: \"a\",\n options: {\n ignoreHref: true\n }\n }\n ]\n });\n // sanitisedRawContent = sanitisedRawContent.replace(/\\s/g, ' ');\n // sanitisedRawContent = sanitisedRawContent.replace(/\\s{2,}/g, '\\n');\n sanitisedRawContent = sanitisedRawContent.replace(/\\n{2,}/g, \"\\n\");\n return sanitisedRawContent;\n}\nclass $03f4340efc174132$export$2e2bcd8739ae039 {\n static{\n this.index = [];\n }\n static get targets() {\n const targets = [];\n this.index.forEach((entry)=>targets.push({\n path: entry.path,\n title: (0, (/*@__PURE__*/$parcel$interopDefault($gx5Hu))).prepare(entry.title),\n content: (0, (/*@__PURE__*/$parcel$interopDefault($gx5Hu))).prepare(entry.content.replace(\"\", \"\").replace(\" \", \"\"))\n }));\n this._targets = targets;\n return this._targets;\n }\n static addEntry(path, title, pageData) {\n this.index.push({\n path: path,\n title: title,\n content: $03f4340efc174132$var$sanitiseRawContent(pageData.htmlPollutedRawContent ?? (()=>{\n throw new Error(`htmlPollutedRawContent not found for ${path}!`);\n })())\n });\n }\n}\n\n});\nparcelRegister(\"iQ98l\", function(module, exports) {\n\n$parcel$export(module.exports, \"htmlToText\", () => $f14a7b0c234065ea$export$9c68d69a4c5bbcf9);\n\nvar $365Jn = parcelRequire(\"365Jn\");\n\nvar $ys7X1 = parcelRequire(\"ys7X1\");\n\nvar $ii6m7 = parcelRequire(\"ii6m7\");\n\nvar $4CCA2 = parcelRequire(\"4CCA2\");\n\nvar $avuoa = parcelRequire(\"avuoa\");\n/**\n * Make a recursive function that will only run to a given depth\n * and switches to an alternative function at that depth. \\\n * No limitation if `n` is `undefined` (Just wraps `f` in that case).\n *\n * @param { number | undefined } n Allowed depth of recursion. `undefined` for no limitation.\n * @param { Function } f Function that accepts recursive callback as the first argument.\n * @param { Function } [g] Function to run instead, when maximum depth was reached. Do nothing by default.\n * @returns { Function }\n */ function $f14a7b0c234065ea$var$limitedDepthRecursive(n, f, g = ()=>undefined) {\n if (n === undefined) {\n const f1 = function(...args) {\n return f(f1, ...args);\n };\n return f1;\n }\n if (n >= 0) return function(...args) {\n return f($f14a7b0c234065ea$var$limitedDepthRecursive(n - 1, f, g), ...args);\n };\n return g;\n}\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from each side.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$trimCharacter(str, char) {\n let start = 0;\n let end = str.length;\n while(start < end && str[start] === char)++start;\n while(end > start && str[end - 1] === char)--end;\n return start > 0 || end < str.length ? str.substring(start, end) : str;\n}\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from the end only.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$trimCharacterEnd(str, char) {\n let end = str.length;\n while(end > 0 && str[end - 1] === char)--end;\n return end < str.length ? str.substring(0, end) : str;\n}\n/**\n * Return a new string will all characters replaced with unicode escape sequences.\n * This extreme kind of escaping can used to be safely compose regular expressions.\n *\n * @param { string } str A string to escape.\n * @returns { string } A string of unicode escape sequences.\n */ function $f14a7b0c234065ea$var$unicodeEscape(str) {\n return str.replace(/[\\s\\S]/g, (c)=>\"\\\\u\" + c.charCodeAt().toString(16).padStart(4, \"0\"));\n}\n/**\n * Deduplicate an array by a given key callback.\n * Item properties are merged recursively and with the preference for last defined values.\n * Of items with the same key, merged item takes the place of the last item,\n * others are omitted.\n *\n * @param { any[] } items An array to deduplicate.\n * @param { (x: any) => string } getKey Callback to get a value that distinguishes unique items.\n * @returns { any[] }\n */ function $f14a7b0c234065ea$var$mergeDuplicatesPreferLast(items, getKey) {\n const map = new Map();\n for(let i = items.length; i-- > 0;){\n const item = items[i];\n const key = getKey(item);\n map.set(key, map.has(key) ? (0, (/*@__PURE__*/$parcel$interopDefault($4CCA2)))(item, map.get(key), {\n arrayMerge: $f14a7b0c234065ea$var$overwriteMerge$1\n }) : item);\n }\n return [\n ...map.values()\n ].reverse();\n}\nconst $f14a7b0c234065ea$var$overwriteMerge$1 = (acc, src, options)=>[\n ...src\n ];\n/**\n * Get a nested property from an object.\n *\n * @param { object } obj The object to query for the value.\n * @param { string[] } path The path to the property.\n * @returns { any }\n */ function $f14a7b0c234065ea$var$get(obj, path) {\n for (const key of path){\n if (!obj) return undefined;\n obj = obj[key];\n }\n return obj;\n}\n/**\n * Convert a number into alphabetic sequence representation (Sequence without zeroes).\n *\n * For example: `a, ..., z, aa, ..., zz, aaa, ...`.\n *\n * @param { number } num Number to convert. Must be >= 1.\n * @param { string } [baseChar = 'a'] Character for 1 in the sequence.\n * @param { number } [base = 26] Number of characters in the sequence.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$numberToLetterSequence(num, baseChar = \"a\", base = 26) {\n const digits = [];\n do {\n num -= 1;\n digits.push(num % base);\n num = num / base >> 0; // quick `floor`\n }while (num > 0);\n const baseCode = baseChar.charCodeAt(0);\n return digits.reverse().map((n)=>String.fromCharCode(baseCode + n)).join(\"\");\n}\nconst $f14a7b0c234065ea$var$I = [\n \"I\",\n \"X\",\n \"C\",\n \"M\"\n];\nconst $f14a7b0c234065ea$var$V = [\n \"V\",\n \"L\",\n \"D\"\n];\n/**\n * Convert a number to it's Roman representation. No large numbers extension.\n *\n * @param { number } num Number to convert. `0 < num <= 3999`.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$numberToRoman(num) {\n return [\n ...num + \"\"\n ].map((n)=>+n).reverse().map((v, i)=>v % 5 < 4 ? (v < 5 ? \"\" : $f14a7b0c234065ea$var$V[i]) + $f14a7b0c234065ea$var$I[i].repeat(v % 5) : $f14a7b0c234065ea$var$I[i] + (v < 5 ? $f14a7b0c234065ea$var$V[i] : $f14a7b0c234065ea$var$I[i + 1])).reverse().join(\"\");\n}\n/**\n * Helps to build text from words.\n */ class $f14a7b0c234065ea$var$InlineTextBuilder {\n /**\n * Creates an instance of InlineTextBuilder.\n *\n * If `maxLineLength` is not provided then it is either `options.wordwrap` or unlimited.\n *\n * @param { Options } options HtmlToText options.\n * @param { number } [ maxLineLength ] This builder will try to wrap text to fit this line length.\n */ constructor(options, maxLineLength){\n /** @type { string[][] } */ this.lines = [];\n /** @type { string[] } */ this.nextLineWords = [];\n this.maxLineLength = maxLineLength || options.wordwrap || Number.MAX_VALUE;\n this.nextLineAvailableChars = this.maxLineLength;\n this.wrapCharacters = $f14a7b0c234065ea$var$get(options, [\n \"longWordSplit\",\n \"wrapCharacters\"\n ]) || [];\n this.forceWrapOnLimit = $f14a7b0c234065ea$var$get(options, [\n \"longWordSplit\",\n \"forceWrapOnLimit\"\n ]) || false;\n this.stashedSpace = false;\n this.wordBreakOpportunity = false;\n }\n /**\n * Add a new word.\n *\n * @param { string } word A word to add.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */ pushWord(word, noWrap = false) {\n if (this.nextLineAvailableChars <= 0 && !noWrap) this.startNewLine();\n const isLineStart = this.nextLineWords.length === 0;\n const cost = word.length + (isLineStart ? 0 : 1);\n if (cost <= this.nextLineAvailableChars || noWrap) {\n this.nextLineWords.push(word);\n this.nextLineAvailableChars -= cost;\n } else {\n // The word is moved to a new line - prefer to wrap between words.\n const [first, ...rest] = this.splitLongWord(word);\n if (!isLineStart) this.startNewLine();\n this.nextLineWords.push(first);\n this.nextLineAvailableChars -= first.length;\n for (const part of rest){\n this.startNewLine();\n this.nextLineWords.push(part);\n this.nextLineAvailableChars -= part.length;\n }\n }\n }\n /**\n * Pop a word from the currently built line.\n * This doesn't affect completed lines.\n *\n * @returns { string }\n */ popWord() {\n const lastWord = this.nextLineWords.pop();\n if (lastWord !== undefined) {\n const isLineStart = this.nextLineWords.length === 0;\n const cost = lastWord.length + (isLineStart ? 0 : 1);\n this.nextLineAvailableChars += cost;\n }\n return lastWord;\n }\n /**\n * Concat a word to the last word already in the builder.\n * Adds a new word in case there are no words yet in the last line.\n *\n * @param { string } word A word to be concatenated.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */ concatWord(word, noWrap = false) {\n if (this.wordBreakOpportunity && word.length > this.nextLineAvailableChars) {\n this.pushWord(word, noWrap);\n this.wordBreakOpportunity = false;\n } else {\n const lastWord = this.popWord();\n this.pushWord(lastWord ? lastWord.concat(word) : word, noWrap);\n }\n }\n /**\n * Add current line (and more empty lines if provided argument > 1) to the list of complete lines and start a new one.\n *\n * @param { number } n Number of line breaks that will be added to the resulting string.\n */ startNewLine(n = 1) {\n this.lines.push(this.nextLineWords);\n if (n > 1) this.lines.push(...Array.from({\n length: n - 1\n }, ()=>[]));\n this.nextLineWords = [];\n this.nextLineAvailableChars = this.maxLineLength;\n }\n /**\n * No words in this builder.\n *\n * @returns { boolean }\n */ isEmpty() {\n return this.lines.length === 0 && this.nextLineWords.length === 0;\n }\n clear() {\n this.lines.length = 0;\n this.nextLineWords.length = 0;\n this.nextLineAvailableChars = this.maxLineLength;\n }\n /**\n * Join all lines of words inside the InlineTextBuilder into a complete string.\n *\n * @returns { string }\n */ toString() {\n return [\n ...this.lines,\n this.nextLineWords\n ].map((words)=>words.join(\" \")).join(\"\\n\");\n }\n /**\n * Split a long word up to fit within the word wrap limit.\n * Use either a character to split looking back from the word wrap limit,\n * or truncate to the word wrap limit.\n *\n * @param { string } word Input word.\n * @returns { string[] } Parts of the word.\n */ splitLongWord(word) {\n const parts = [];\n let idx = 0;\n while(word.length > this.maxLineLength){\n const firstLine = word.substring(0, this.maxLineLength);\n const remainingChars = word.substring(this.maxLineLength);\n const splitIndex = firstLine.lastIndexOf(this.wrapCharacters[idx]);\n if (splitIndex > -1) {\n word = firstLine.substring(splitIndex + 1) + remainingChars;\n parts.push(firstLine.substring(0, splitIndex + 1));\n } else {\n idx++;\n if (idx < this.wrapCharacters.length) word = firstLine + remainingChars;\n else {\n if (this.forceWrapOnLimit) {\n parts.push(firstLine);\n word = remainingChars;\n if (word.length > this.maxLineLength) continue;\n } else word = firstLine + remainingChars;\n break;\n }\n }\n }\n parts.push(word); // Add remaining part to array\n return parts;\n }\n}\n/* eslint-disable max-classes-per-file */ class $f14a7b0c234065ea$var$StackItem {\n constructor(next = null){\n this.next = next;\n }\n getRoot() {\n return this.next ? this.next : this;\n }\n}\nclass $f14a7b0c234065ea$var$BlockStackItem extends $f14a7b0c234065ea$var$StackItem {\n constructor(options, next = null, leadingLineBreaks = 1, maxLineLength){\n super(next);\n this.leadingLineBreaks = leadingLineBreaks;\n this.inlineTextBuilder = new $f14a7b0c234065ea$var$InlineTextBuilder(options, maxLineLength);\n this.rawText = \"\";\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\nclass $f14a7b0c234065ea$var$ListStackItem extends $f14a7b0c234065ea$var$BlockStackItem {\n constructor(options, next = null, { interRowLineBreaks: interRowLineBreaks = 1, leadingLineBreaks: leadingLineBreaks = 2, maxLineLength: maxLineLength, maxPrefixLength: maxPrefixLength = 0, prefixAlign: prefixAlign = \"left\" } = {}){\n super(options, next, leadingLineBreaks, maxLineLength);\n this.maxPrefixLength = maxPrefixLength;\n this.prefixAlign = prefixAlign;\n this.interRowLineBreaks = interRowLineBreaks;\n }\n}\nclass $f14a7b0c234065ea$var$ListItemStackItem extends $f14a7b0c234065ea$var$BlockStackItem {\n constructor(options, next = null, { leadingLineBreaks: leadingLineBreaks = 1, maxLineLength: maxLineLength, prefix: prefix = \"\" } = {}){\n super(options, next, leadingLineBreaks, maxLineLength);\n this.prefix = prefix;\n }\n}\nclass $f14a7b0c234065ea$var$TableStackItem extends $f14a7b0c234065ea$var$StackItem {\n constructor(next = null){\n super(next);\n this.rows = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\nclass $f14a7b0c234065ea$var$TableRowStackItem extends $f14a7b0c234065ea$var$StackItem {\n constructor(next = null){\n super(next);\n this.cells = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\nclass $f14a7b0c234065ea$var$TableCellStackItem extends $f14a7b0c234065ea$var$StackItem {\n constructor(options, next = null, maxColumnWidth){\n super(next);\n this.inlineTextBuilder = new $f14a7b0c234065ea$var$InlineTextBuilder(options, maxColumnWidth);\n this.rawText = \"\";\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\nclass $f14a7b0c234065ea$var$TransformerStackItem extends $f14a7b0c234065ea$var$StackItem {\n constructor(next = null, transform){\n super(next);\n this.transform = transform;\n }\n}\nfunction $f14a7b0c234065ea$var$charactersToCodes(str) {\n return [\n ...str\n ].map((c)=>\"\\\\u\" + c.charCodeAt(0).toString(16).padStart(4, \"0\")).join(\"\");\n}\n/**\n * Helps to handle HTML whitespaces.\n *\n * @class WhitespaceProcessor\n */ class $f14a7b0c234065ea$var$WhitespaceProcessor {\n /**\n * Creates an instance of WhitespaceProcessor.\n *\n * @param { Options } options HtmlToText options.\n * @memberof WhitespaceProcessor\n */ constructor(options){\n this.whitespaceChars = options.preserveNewlines ? options.whitespaceCharacters.replace(/\\n/g, \"\") : options.whitespaceCharacters;\n const whitespaceCodes = $f14a7b0c234065ea$var$charactersToCodes(this.whitespaceChars);\n this.leadingWhitespaceRe = new RegExp(`^[${whitespaceCodes}]`);\n this.trailingWhitespaceRe = new RegExp(`[${whitespaceCodes}]$`);\n this.allWhitespaceOrEmptyRe = new RegExp(`^[${whitespaceCodes}]*$`);\n this.newlineOrNonWhitespaceRe = new RegExp(`(\\\\n|[^\\\\n${whitespaceCodes}])`, \"g\");\n this.newlineOrNonNewlineStringRe = new RegExp(`(\\\\n|[^\\\\n]+)`, \"g\");\n if (options.preserveNewlines) {\n const wordOrNewlineRe = new RegExp(`\\\\n|[^\\\\n${whitespaceCodes}]+`, \"gm\");\n /**\n * Shrink whitespaces and wrap text, add to the builder.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { (str: string) => string } [ transform ] A transform to be applied to words.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */ this.shrinkWrapAdd = function(text, inlineTextBuilder, transform = (str)=>str, noWrap = false) {\n if (!text) return;\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordOrNewlineRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === \"\\n\") inlineTextBuilder.startNewLine();\n else if (previouslyStashedSpace || this.testLeadingWhitespace(text)) inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n else inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n while((m = wordOrNewlineRe.exec(text)) !== null)if (m[0] === \"\\n\") inlineTextBuilder.startNewLine();\n else inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n inlineTextBuilder.stashedSpace = previouslyStashedSpace && !anyMatch || this.testTrailingWhitespace(text);\n // No need to stash a space in case last added item was a new line,\n // but that won't affect anything later anyway.\n };\n } else {\n const wordRe = new RegExp(`[^${whitespaceCodes}]+`, \"g\");\n this.shrinkWrapAdd = function(text, inlineTextBuilder, transform = (str)=>str, noWrap = false) {\n if (!text) return;\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordRe.exec(text);\n if (m) {\n anyMatch = true;\n if (previouslyStashedSpace || this.testLeadingWhitespace(text)) inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n else inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n while((m = wordRe.exec(text)) !== null)inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n inlineTextBuilder.stashedSpace = previouslyStashedSpace && !anyMatch || this.testTrailingWhitespace(text);\n };\n }\n }\n /**\n * Add text with only minimal processing.\n * Everything between newlines considered a single word.\n * No whitespace is trimmed.\n * Not affected by preserveNewlines option - `\\n` always starts a new line.\n *\n * `noWrap` argument is `true` by default - this won't start a new line\n * even if there is not enough space left in the current line.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */ addLiteral(text, inlineTextBuilder, noWrap = true) {\n if (!text) return;\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = this.newlineOrNonNewlineStringRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === \"\\n\") inlineTextBuilder.startNewLine();\n else if (previouslyStashedSpace) inlineTextBuilder.pushWord(m[0], noWrap);\n else inlineTextBuilder.concatWord(m[0], noWrap);\n while((m = this.newlineOrNonNewlineStringRe.exec(text)) !== null)if (m[0] === \"\\n\") inlineTextBuilder.startNewLine();\n else inlineTextBuilder.pushWord(m[0], noWrap);\n }\n inlineTextBuilder.stashedSpace = previouslyStashedSpace && !anyMatch;\n }\n /**\n * Test whether the given text starts with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */ testLeadingWhitespace(text) {\n return this.leadingWhitespaceRe.test(text);\n }\n /**\n * Test whether the given text ends with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */ testTrailingWhitespace(text) {\n return this.trailingWhitespaceRe.test(text);\n }\n /**\n * Test whether the given text contains any non-whitespace characters.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */ testContainsWords(text) {\n return !this.allWhitespaceOrEmptyRe.test(text);\n }\n /**\n * Return the number of newlines if there are no words.\n *\n * If any word is found then return zero regardless of the actual number of newlines.\n *\n * @param { string } text Input string.\n * @returns { number }\n */ countNewlinesNoWords(text) {\n this.newlineOrNonWhitespaceRe.lastIndex = 0;\n let counter = 0;\n let match;\n while((match = this.newlineOrNonWhitespaceRe.exec(text)) !== null){\n if (match[0] === \"\\n\") counter++;\n else return 0;\n }\n return counter;\n }\n}\n/**\n * Helps to build text from inline and block elements.\n *\n * @class BlockTextBuilder\n */ class $f14a7b0c234065ea$var$BlockTextBuilder {\n /**\n * Creates an instance of BlockTextBuilder.\n *\n * @param { Options } options HtmlToText options.\n * @param { import('selderee').Picker } picker Selectors decision tree picker.\n * @param { any} [metadata] Optional metadata for HTML document, for use in formatters.\n */ constructor(options, picker, metadata){\n this.options = options;\n this.picker = picker;\n this.metadata = metadata;\n this.whitespaceProcessor = new $f14a7b0c234065ea$var$WhitespaceProcessor(options);\n /** @type { StackItem } */ this._stackItem = new $f14a7b0c234065ea$var$BlockStackItem(options);\n /** @type { TransformerStackItem } */ this._wordTransformer = undefined;\n }\n /**\n * Put a word-by-word transform function onto the transformations stack.\n *\n * Mainly used for uppercasing. Can be bypassed to add unformatted text such as URLs.\n *\n * Word transformations applied before wrapping.\n *\n * @param { (str: string) => string } wordTransform Word transformation function.\n */ pushWordTransform(wordTransform) {\n this._wordTransformer = new $f14a7b0c234065ea$var$TransformerStackItem(this._wordTransformer, wordTransform);\n }\n /**\n * Remove a function from the word transformations stack.\n *\n * @returns { (str: string) => string } A function that was removed.\n */ popWordTransform() {\n if (!this._wordTransformer) return undefined;\n const transform = this._wordTransformer.transform;\n this._wordTransformer = this._wordTransformer.next;\n return transform;\n }\n /**\n * Ignore wordwrap option in followup inline additions and disable automatic wrapping.\n */ startNoWrap() {\n this._stackItem.isNoWrap = true;\n }\n /**\n * Return automatic wrapping to behavior defined by options.\n */ stopNoWrap() {\n this._stackItem.isNoWrap = false;\n }\n /** @returns { (str: string) => string } */ _getCombinedWordTransformer() {\n const wt = this._wordTransformer ? (str)=>$f14a7b0c234065ea$var$applyTransformer(str, this._wordTransformer) : undefined;\n const ce = this.options.encodeCharacters;\n return wt ? ce ? (str)=>ce(wt(str)) : wt : ce;\n }\n _popStackItem() {\n const item = this._stackItem;\n this._stackItem = item.next;\n return item;\n }\n /**\n * Add a line break into currently built block.\n */ addLineBreak() {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem)) return;\n if (this._stackItem.isPre) this._stackItem.rawText += \"\\n\";\n else this._stackItem.inlineTextBuilder.startNewLine();\n }\n /**\n * Allow to break line in case directly following text will not fit.\n */ addWordBreakOpportunity() {\n if (this._stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem) this._stackItem.inlineTextBuilder.wordBreakOpportunity = true;\n }\n /**\n * Add a node inline into the currently built block.\n *\n * @param { string } str\n * Text content of a node to add.\n *\n * @param { object } [param1]\n * Object holding the parameters of the operation.\n *\n * @param { boolean } [param1.noWordTransform]\n * Ignore word transformers if there are any.\n * Don't encode characters as well.\n * (Use this for things like URL addresses).\n */ addInline(str, { noWordTransform: noWordTransform = false } = {}) {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem)) return;\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n if (str.length === 0 || // empty string\n this._stackItem.stashedLineBreaks && // stashed linebreaks make whitespace irrelevant\n !this.whitespaceProcessor.testContainsWords(str) // no words to add\n ) return;\n if (this.options.preserveNewlines) {\n const newlinesNumber = this.whitespaceProcessor.countNewlinesNoWords(str);\n if (newlinesNumber > 0) {\n this._stackItem.inlineTextBuilder.startNewLine(newlinesNumber);\n // keep stashedLineBreaks unchanged\n return;\n }\n }\n if (this._stackItem.stashedLineBreaks) this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n this.whitespaceProcessor.shrinkWrapAdd(str, this._stackItem.inlineTextBuilder, noWordTransform ? undefined : this._getCombinedWordTransformer(), this._stackItem.isNoWrap);\n this._stackItem.stashedLineBreaks = 0; // inline text doesn't introduce line breaks\n }\n /**\n * Add a string inline into the currently built block.\n *\n * Use this for markup elements that don't have to adhere\n * to text layout rules.\n *\n * @param { string } str Text to add.\n */ addLiteral(str) {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem)) return;\n if (str.length === 0) return;\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n if (this._stackItem.stashedLineBreaks) this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n this.whitespaceProcessor.addLiteral(str, this._stackItem.inlineTextBuilder, this._stackItem.isNoWrap);\n this._stackItem.stashedLineBreaks = 0;\n }\n /**\n * Start building a new block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any preceding block.\n *\n * @param { number } [param0.reservedLineLength]\n * Reserve this number of characters on each line for block markup.\n *\n * @param { boolean } [param0.isPre]\n * Should HTML whitespace be preserved inside this block.\n */ openBlock({ leadingLineBreaks: leadingLineBreaks = 1, reservedLineLength: reservedLineLength = 0, isPre: isPre = false } = {}) {\n const maxLineLength = Math.max(20, this._stackItem.inlineTextBuilder.maxLineLength - reservedLineLength);\n this._stackItem = new $f14a7b0c234065ea$var$BlockStackItem(this.options, this._stackItem, leadingLineBreaks, maxLineLength);\n if (isPre) this._stackItem.isPre = true;\n }\n /**\n * Finalize currently built block, add it's content to the parent block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any following block.\n *\n * @param { (str: string) => string } [param0.blockTransform]\n * A function to transform the block text before adding to the parent block.\n * This happens after word wrap and should be used in combination with reserved line length\n * in order to keep line lengths correct.\n * Used for whole block markup.\n */ closeBlock({ trailingLineBreaks: trailingLineBreaks = 1, blockTransform: blockTransform } = {}) {\n const block = this._popStackItem();\n const blockText = blockTransform ? blockTransform($f14a7b0c234065ea$var$getText(block)) : $f14a7b0c234065ea$var$getText(block);\n $f14a7b0c234065ea$var$addText(this._stackItem, blockText, block.leadingLineBreaks, Math.max(block.stashedLineBreaks, trailingLineBreaks));\n }\n /**\n * Start building a new list.\n *\n * @param { object } [param0]\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.maxPrefixLength]\n * Length of the longest list item prefix.\n * If not supplied or too small then list items won't be aligned properly.\n *\n * @param { 'left' | 'right' } [param0.prefixAlign]\n * Specify how prefixes of different lengths have to be aligned\n * within a column.\n *\n * @param { number } [param0.interRowLineBreaks]\n * Minimum number of line breaks between list items.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any preceding block.\n */ openList({ maxPrefixLength: maxPrefixLength = 0, prefixAlign: prefixAlign = \"left\", interRowLineBreaks: interRowLineBreaks = 1, leadingLineBreaks: leadingLineBreaks = 2 } = {}) {\n this._stackItem = new $f14a7b0c234065ea$var$ListStackItem(this.options, this._stackItem, {\n interRowLineBreaks: interRowLineBreaks,\n leadingLineBreaks: leadingLineBreaks,\n maxLineLength: this._stackItem.inlineTextBuilder.maxLineLength,\n maxPrefixLength: maxPrefixLength,\n prefixAlign: prefixAlign\n });\n }\n /**\n * Start building a new list item.\n *\n * @param {object} param0\n * Object holding the parameters of the list item.\n *\n * @param { string } [param0.prefix]\n * Prefix for this list item (item number, bullet point, etc).\n */ openListItem({ prefix: prefix = \"\" } = {}) {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$ListStackItem)) throw new Error(\"Can't add a list item to something that is not a list! Check the formatter.\");\n const list = this._stackItem;\n const prefixLength = Math.max(prefix.length, list.maxPrefixLength);\n const maxLineLength = Math.max(20, list.inlineTextBuilder.maxLineLength - prefixLength);\n this._stackItem = new $f14a7b0c234065ea$var$ListItemStackItem(this.options, list, {\n prefix: prefix,\n maxLineLength: maxLineLength,\n leadingLineBreaks: list.interRowLineBreaks\n });\n }\n /**\n * Finalize currently built list item, add it's content to the parent list.\n */ closeListItem() {\n const listItem = this._popStackItem();\n const list = listItem.next;\n const prefixLength = Math.max(listItem.prefix.length, list.maxPrefixLength);\n const spacing = \"\\n\" + \" \".repeat(prefixLength);\n const prefix = list.prefixAlign === \"right\" ? listItem.prefix.padStart(prefixLength) : listItem.prefix.padEnd(prefixLength);\n const text = prefix + $f14a7b0c234065ea$var$getText(listItem).replace(/\\n/g, spacing);\n $f14a7b0c234065ea$var$addText(list, text, listItem.leadingLineBreaks, Math.max(listItem.stashedLineBreaks, list.interRowLineBreaks));\n }\n /**\n * Finalize currently built list, add it's content to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any following block.\n */ closeList({ trailingLineBreaks: trailingLineBreaks = 2 } = {}) {\n const list = this._popStackItem();\n const text = $f14a7b0c234065ea$var$getText(list);\n if (text) $f14a7b0c234065ea$var$addText(this._stackItem, text, list.leadingLineBreaks, trailingLineBreaks);\n }\n /**\n * Start building a table.\n */ openTable() {\n this._stackItem = new $f14a7b0c234065ea$var$TableStackItem(this._stackItem);\n }\n /**\n * Start building a table row.\n */ openTableRow() {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$TableStackItem)) throw new Error(\"Can't add a table row to something that is not a table! Check the formatter.\");\n this._stackItem = new $f14a7b0c234065ea$var$TableRowStackItem(this._stackItem);\n }\n /**\n * Start building a table cell.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.maxColumnWidth]\n * Wrap cell content to this width. Fall back to global wordwrap value if undefined.\n */ openTableCell({ maxColumnWidth: maxColumnWidth } = {}) {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$TableRowStackItem)) throw new Error(\"Can't add a table cell to something that is not a table row! Check the formatter.\");\n this._stackItem = new $f14a7b0c234065ea$var$TableCellStackItem(this.options, this._stackItem, maxColumnWidth);\n }\n /**\n * Finalize currently built table cell and add it to parent table row's cells.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.colspan] How many columns this cell should occupy.\n * @param { number } [param0.rowspan] How many rows this cell should occupy.\n */ closeTableCell({ colspan: colspan = 1, rowspan: rowspan = 1 } = {}) {\n const cell = this._popStackItem();\n const text = $f14a7b0c234065ea$var$trimCharacter($f14a7b0c234065ea$var$getText(cell), \"\\n\");\n cell.next.cells.push({\n colspan: colspan,\n rowspan: rowspan,\n text: text\n });\n }\n /**\n * Finalize currently built table row and add it to parent table's rows.\n */ closeTableRow() {\n const row = this._popStackItem();\n row.next.rows.push(row.cells);\n }\n /**\n * Finalize currently built table and add the rendered text to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the table.\n *\n * @param { TablePrinter } param0.tableToString\n * A function to convert a table of stringified cells into a complete table.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This table should have at least this number of line breaks to separate if from any preceding block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This table should have at least this number of line breaks to separate it from any following block.\n */ closeTable({ tableToString: tableToString, leadingLineBreaks: leadingLineBreaks = 2, trailingLineBreaks: trailingLineBreaks = 2 }) {\n const table = this._popStackItem();\n const output = tableToString(table.rows);\n if (output) $f14a7b0c234065ea$var$addText(this._stackItem, output, leadingLineBreaks, trailingLineBreaks);\n }\n /**\n * Return the rendered text content of this builder.\n *\n * @returns { string }\n */ toString() {\n return $f14a7b0c234065ea$var$getText(this._stackItem.getRoot());\n // There should only be the root item if everything is closed properly.\n }\n}\nfunction $f14a7b0c234065ea$var$getText(stackItem) {\n if (!(stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem)) throw new Error(\"Only blocks, list items and table cells can be requested for text contents.\");\n return stackItem.inlineTextBuilder.isEmpty() ? stackItem.rawText : stackItem.rawText + stackItem.inlineTextBuilder.toString();\n}\nfunction $f14a7b0c234065ea$var$addText(stackItem, text, leadingLineBreaks, trailingLineBreaks) {\n if (!(stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem)) throw new Error(\"Only blocks, list items and table cells can contain text.\");\n const parentText = $f14a7b0c234065ea$var$getText(stackItem);\n const lineBreaks = Math.max(stackItem.stashedLineBreaks, leadingLineBreaks);\n stackItem.inlineTextBuilder.clear();\n if (parentText) stackItem.rawText = parentText + \"\\n\".repeat(lineBreaks) + text;\n else {\n stackItem.rawText = text;\n stackItem.leadingLineBreaks = lineBreaks;\n }\n stackItem.stashedLineBreaks = trailingLineBreaks;\n}\n/**\n * @param { string } str A string to transform.\n * @param { TransformerStackItem } transformer A transformer item (with possible continuation).\n * @returns { string }\n */ function $f14a7b0c234065ea$var$applyTransformer(str, transformer) {\n return transformer ? $f14a7b0c234065ea$var$applyTransformer(transformer.transform(str), transformer.next) : str;\n}\n/**\n * Compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options (defaults, formatters, user options merged, deduplicated).\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */ function $f14a7b0c234065ea$var$compile$1(options = {}) {\n const selectorsWithoutFormat = options.selectors.filter((s)=>!s.format);\n if (selectorsWithoutFormat.length) throw new Error(\"Following selectors have no specified format: \" + selectorsWithoutFormat.map((s)=>`\\`${s.selector}\\``).join(\", \"));\n const picker = new (0, $ii6m7.DecisionTree)(options.selectors.map((s)=>[\n s.selector,\n s\n ])).build((0, $365Jn.hp2Builder));\n if (typeof options.encodeCharacters !== \"function\") options.encodeCharacters = $f14a7b0c234065ea$var$makeReplacerFromDict(options.encodeCharacters);\n const baseSelectorsPicker = new (0, $ii6m7.DecisionTree)(options.baseElements.selectors.map((s, i)=>[\n s,\n i + 1\n ])).build((0, $365Jn.hp2Builder));\n function findBaseElements(dom) {\n return $f14a7b0c234065ea$var$findBases(dom, options, baseSelectorsPicker);\n }\n const limitedWalk = $f14a7b0c234065ea$var$limitedDepthRecursive(options.limits.maxDepth, $f14a7b0c234065ea$var$recursiveWalk, function(dom, builder) {\n builder.addInline(options.limits.ellipsis || \"\");\n });\n return function(html, metadata) {\n return $f14a7b0c234065ea$var$process(html, metadata, options, picker, findBaseElements, limitedWalk);\n };\n}\n/**\n * Convert given HTML according to preprocessed options.\n *\n * @param { string } html HTML content to convert.\n * @param { any } metadata Optional metadata for HTML document, for use in formatters.\n * @param { Options } options HtmlToText options (preprocessed).\n * @param { import('selderee').Picker } picker\n * Tag definition picker for DOM nodes processing.\n * @param { (dom: DomNode[]) => DomNode[] } findBaseElements\n * Function to extract elements from HTML DOM\n * that will only be present in the output text.\n * @param { RecursiveCallback } walk Recursive callback.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$process(html, metadata, options, picker, findBaseElements, walk) {\n const maxInputLength = options.limits.maxInputLength;\n if (maxInputLength && html && html.length > maxInputLength) {\n console.warn(`Input length ${html.length} is above allowed limit of ${maxInputLength}. Truncating without ellipsis.`);\n html = html.substring(0, maxInputLength);\n }\n const document = (0, $ys7X1.parseDocument)(html, {\n decodeEntities: options.decodeEntities\n });\n const bases = findBaseElements(document.children);\n const builder = new $f14a7b0c234065ea$var$BlockTextBuilder(options, picker, metadata);\n walk(bases, builder);\n return builder.toString();\n}\nfunction $f14a7b0c234065ea$var$findBases(dom, options, baseSelectorsPicker) {\n const results = [];\n function recursiveWalk(walk, /** @type { DomNode[] } */ dom) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n for (const elem of dom){\n if (elem.type !== \"tag\") continue;\n const pickedSelectorIndex = baseSelectorsPicker.pick1(elem);\n if (pickedSelectorIndex > 0) results.push({\n selectorIndex: pickedSelectorIndex,\n element: elem\n });\n else if (elem.children) walk(elem.children);\n if (results.length >= options.limits.maxBaseElements) return;\n }\n }\n const limitedWalk = $f14a7b0c234065ea$var$limitedDepthRecursive(options.limits.maxDepth, recursiveWalk);\n limitedWalk(dom);\n if (options.baseElements.orderBy !== \"occurrence\") results.sort((a, b)=>a.selectorIndex - b.selectorIndex);\n return options.baseElements.returnDomByDefault && results.length === 0 ? dom : results.map((x)=>x.element);\n}\n/**\n * Function to walk through DOM nodes and accumulate their string representations.\n *\n * @param { RecursiveCallback } walk Recursive callback.\n * @param { DomNode[] } [dom] Nodes array to process.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @private\n */ function $f14a7b0c234065ea$var$recursiveWalk(walk, dom, builder) {\n if (!dom) return;\n const options = builder.options;\n const tooManyChildNodes = dom.length > options.limits.maxChildNodes;\n if (tooManyChildNodes) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n dom.push({\n data: options.limits.ellipsis,\n type: \"text\"\n });\n }\n for (const elem of dom)switch(elem.type){\n case \"text\":\n builder.addInline(elem.data);\n break;\n case \"tag\":\n {\n const tagDefinition = builder.picker.pick1(elem);\n const format = options.formatters[tagDefinition.format];\n format(elem, walk, builder, tagDefinition.options || {});\n break;\n }\n }\n return;\n}\n/**\n * @param { Object } dict\n * A dictionary where keys are characters to replace\n * and values are replacement strings.\n *\n * First code point from dict keys is used.\n * Compound emojis with ZWJ are not supported (not until Node 16).\n *\n * @returns { ((str: string) => string) | undefined }\n */ function $f14a7b0c234065ea$var$makeReplacerFromDict(dict) {\n if (!dict || Object.keys(dict).length === 0) return undefined;\n /** @type { [string, string][] } */ const entries = Object.entries(dict).filter(([, v])=>v !== false);\n const regex = new RegExp(entries.map(([c])=>`(${$f14a7b0c234065ea$var$unicodeEscape([\n ...c\n ][0])})`).join(\"|\"), \"g\");\n const values = entries.map(([, v])=>v);\n const replacer = (m, ...cgs)=>values[cgs.findIndex((cg)=>cg)];\n return (str)=>str.replace(regex, replacer);\n}\n/**\n * Dummy formatter that discards the input and does nothing.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatSkip(elem, walk, builder, formatOptions) {\n/* do nothing */ }\n/**\n * Insert the given string literal inline instead of a tag.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatInlineString(elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.string || \"\");\n}\n/**\n * Insert a block with the given string literal instead of a tag.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatBlockString(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n builder.addLiteral(formatOptions.string || \"\");\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process an inline-level element.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatInline(elem, walk, builder, formatOptions) {\n walk(elem.children, builder);\n}\n/**\n * Process a block-level container.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatBlock$1(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\nfunction $f14a7b0c234065ea$var$renderOpenTag(elem) {\n const attrs = elem.attribs && elem.attribs.length ? \" \" + Object.entries(elem.attribs).map(([k, v])=>v === \"\" ? k : `${k}=${v.replace(/\"/g, \""\")}`).join(\" \") : \"\";\n return `<${elem.name}${attrs}>`;\n}\nfunction $f14a7b0c234065ea$var$renderCloseTag(elem) {\n return `${elem.name}>`;\n}\n/**\n * Render an element as inline HTML tag, walk through it's children.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatInlineTag(elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral($f14a7b0c234065ea$var$renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral($f14a7b0c234065ea$var$renderCloseTag(elem));\n builder.stopNoWrap();\n}\n/**\n * Render an element as HTML block bag, walk through it's children.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatBlockTag(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n builder.startNoWrap();\n builder.addLiteral($f14a7b0c234065ea$var$renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral($f14a7b0c234065ea$var$renderCloseTag(elem));\n builder.stopNoWrap();\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Render an element with all it's children as inline HTML.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatInlineHtml(elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral((0, $avuoa.render)(elem, {\n decodeEntities: builder.options.decodeEntities\n }));\n builder.stopNoWrap();\n}\n/**\n * Render an element with all it's children as HTML block.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatBlockHtml(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n builder.startNoWrap();\n builder.addLiteral((0, $avuoa.render)(elem, {\n decodeEntities: builder.options.decodeEntities\n }));\n builder.stopNoWrap();\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Render inline element wrapped with given strings.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatInlineSurround(elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.prefix || \"\");\n walk(elem.children, builder);\n builder.addLiteral(formatOptions.suffix || \"\");\n}\nvar $f14a7b0c234065ea$var$genericFormatters = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n block: $f14a7b0c234065ea$var$formatBlock$1,\n blockHtml: $f14a7b0c234065ea$var$formatBlockHtml,\n blockString: $f14a7b0c234065ea$var$formatBlockString,\n blockTag: $f14a7b0c234065ea$var$formatBlockTag,\n inline: $f14a7b0c234065ea$var$formatInline,\n inlineHtml: $f14a7b0c234065ea$var$formatInlineHtml,\n inlineString: $f14a7b0c234065ea$var$formatInlineString,\n inlineSurround: $f14a7b0c234065ea$var$formatInlineSurround,\n inlineTag: $f14a7b0c234065ea$var$formatInlineTag,\n skip: $f14a7b0c234065ea$var$formatSkip\n});\nfunction $f14a7b0c234065ea$var$getRow(matrix, j) {\n if (!matrix[j]) matrix[j] = [];\n return matrix[j];\n}\nfunction $f14a7b0c234065ea$var$findFirstVacantIndex(row, x = 0) {\n while(row[x])x++;\n return x;\n}\nfunction $f14a7b0c234065ea$var$transposeInPlace(matrix, maxSize) {\n for(let i = 0; i < maxSize; i++){\n const rowI = $f14a7b0c234065ea$var$getRow(matrix, i);\n for(let j = 0; j < i; j++){\n const rowJ = $f14a7b0c234065ea$var$getRow(matrix, j);\n if (rowI[j] || rowJ[i]) {\n const temp = rowI[j];\n rowI[j] = rowJ[i];\n rowJ[i] = temp;\n }\n }\n }\n}\nfunction $f14a7b0c234065ea$var$putCellIntoLayout(cell, layout, baseRow, baseCol) {\n for(let r = 0; r < cell.rowspan; r++){\n const layoutRow = $f14a7b0c234065ea$var$getRow(layout, baseRow + r);\n for(let c = 0; c < cell.colspan; c++)layoutRow[baseCol + c] = cell;\n }\n}\nfunction $f14a7b0c234065ea$var$getOrInitOffset(offsets, index) {\n if (offsets[index] === undefined) offsets[index] = index === 0 ? 0 : 1 + $f14a7b0c234065ea$var$getOrInitOffset(offsets, index - 1);\n return offsets[index];\n}\nfunction $f14a7b0c234065ea$var$updateOffset(offsets, base, span, value) {\n offsets[base + span] = Math.max($f14a7b0c234065ea$var$getOrInitOffset(offsets, base + span), $f14a7b0c234065ea$var$getOrInitOffset(offsets, base) + value);\n}\n/**\n * Render a table into a string.\n * Cells can contain multiline text and span across multiple rows and columns.\n *\n * Modifies cells to add lines array.\n *\n * @param { TablePrinterCell[][] } tableRows Table to render.\n * @param { number } rowSpacing Number of spaces between columns.\n * @param { number } colSpacing Number of empty lines between rows.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$tableToString(tableRows, rowSpacing, colSpacing) {\n const layout = [];\n let colNumber = 0;\n const rowNumber = tableRows.length;\n const rowOffsets = [\n 0\n ];\n // Fill the layout table and row offsets row-by-row.\n for(let j = 0; j < rowNumber; j++){\n const layoutRow = $f14a7b0c234065ea$var$getRow(layout, j);\n const cells = tableRows[j];\n let x = 0;\n for(let i = 0; i < cells.length; i++){\n const cell = cells[i];\n x = $f14a7b0c234065ea$var$findFirstVacantIndex(layoutRow, x);\n $f14a7b0c234065ea$var$putCellIntoLayout(cell, layout, j, x);\n x += cell.colspan;\n cell.lines = cell.text.split(\"\\n\");\n const cellHeight = cell.lines.length;\n $f14a7b0c234065ea$var$updateOffset(rowOffsets, j, cell.rowspan, cellHeight + rowSpacing);\n }\n colNumber = layoutRow.length > colNumber ? layoutRow.length : colNumber;\n }\n $f14a7b0c234065ea$var$transposeInPlace(layout, rowNumber > colNumber ? rowNumber : colNumber);\n const outputLines = [];\n const colOffsets = [\n 0\n ];\n // Fill column offsets and output lines column-by-column.\n for(let x = 0; x < colNumber; x++){\n let y = 0;\n let cell;\n const rowsInThisColumn = Math.min(rowNumber, layout[x].length);\n while(y < rowsInThisColumn){\n cell = layout[x][y];\n if (cell) {\n if (!cell.rendered) {\n let cellWidth = 0;\n for(let j = 0; j < cell.lines.length; j++){\n const line = cell.lines[j];\n const lineOffset = rowOffsets[y] + j;\n outputLines[lineOffset] = (outputLines[lineOffset] || \"\").padEnd(colOffsets[x]) + line;\n cellWidth = line.length > cellWidth ? line.length : cellWidth;\n }\n $f14a7b0c234065ea$var$updateOffset(colOffsets, x, cell.colspan, cellWidth + colSpacing);\n cell.rendered = true;\n }\n y += cell.rowspan;\n } else {\n const lineOffset = rowOffsets[y];\n outputLines[lineOffset] = outputLines[lineOffset] || \"\";\n y++;\n }\n }\n }\n return outputLines.join(\"\\n\");\n}\n/**\n * Process a line-break.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatLineBreak(elem, walk, builder, formatOptions) {\n builder.addLineBreak();\n}\n/**\n * Process a `wbr` tag (word break opportunity).\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatWbr(elem, walk, builder, formatOptions) {\n builder.addWordBreakOpportunity();\n}\n/**\n * Process a horizontal line.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatHorizontalLine(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n builder.addInline(\"-\".repeat(formatOptions.length || builder.options.wordwrap || 40));\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process a paragraph.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatParagraph(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process a preformatted content.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatPre(elem, walk, builder, formatOptions) {\n builder.openBlock({\n isPre: true,\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process a heading.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatHeading(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n if (formatOptions.uppercase !== false) {\n builder.pushWordTransform((str)=>str.toUpperCase());\n walk(elem.children, builder);\n builder.popWordTransform();\n } else walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process a blockquote.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatBlockquote(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2,\n reservedLineLength: 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2,\n blockTransform: (str)=>(formatOptions.trimEmptyLines !== false ? $f14a7b0c234065ea$var$trimCharacter(str, \"\\n\") : str).split(\"\\n\").map((line)=>\"> \" + line).join(\"\\n\")\n });\n}\nfunction $f14a7b0c234065ea$var$withBrackets(str, brackets) {\n if (!brackets) return str;\n const lbr = typeof brackets[0] === \"string\" ? brackets[0] : \"[\";\n const rbr = typeof brackets[1] === \"string\" ? brackets[1] : \"]\";\n return lbr + str + rbr;\n}\nfunction $f14a7b0c234065ea$var$pathRewrite(path, rewriter, baseUrl, metadata, elem) {\n const modifiedPath = typeof rewriter === \"function\" ? rewriter(path, metadata, elem) : path;\n return modifiedPath[0] === \"/\" && baseUrl ? $f14a7b0c234065ea$var$trimCharacterEnd(baseUrl, \"/\") + modifiedPath : modifiedPath;\n}\n/**\n * Process an image.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatImage(elem, walk, builder, formatOptions) {\n const attribs = elem.attribs || {};\n const alt = attribs.alt ? attribs.alt : \"\";\n const src = !attribs.src ? \"\" : $f14a7b0c234065ea$var$pathRewrite(attribs.src, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n const text = !src ? alt : !alt ? $f14a7b0c234065ea$var$withBrackets(src, formatOptions.linkBrackets) : alt + \" \" + $f14a7b0c234065ea$var$withBrackets(src, formatOptions.linkBrackets);\n builder.addInline(text, {\n noWordTransform: true\n });\n}\n// a img baseUrl\n// a img pathRewrite\n// a img linkBrackets\n// a ignoreHref: false\n// ignoreText ?\n// a noAnchorUrl: true\n// can be replaced with selector\n// a hideLinkHrefIfSameAsText: false\n// how to compare, what to show (text, href, normalized) ?\n// a mailto protocol removed without options\n// a protocols: mailto, tel, ...\n// can be matched with selector?\n// anchors, protocols - only if no pathRewrite fn is provided\n// normalize-url ?\n// a\n// a[href^=\"#\"] - format:skip by default\n// a[href^=\"mailto:\"] - ?\n/**\n * Process an anchor.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatAnchor(elem, walk, builder, formatOptions) {\n function getHref() {\n if (formatOptions.ignoreHref) return \"\";\n if (!elem.attribs || !elem.attribs.href) return \"\";\n let href = elem.attribs.href.replace(/^mailto:/, \"\");\n if (formatOptions.noAnchorUrl && href[0] === \"#\") return \"\";\n href = $f14a7b0c234065ea$var$pathRewrite(href, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n return href;\n }\n const href = getHref();\n if (!href) walk(elem.children, builder);\n else {\n let text = \"\";\n builder.pushWordTransform((str)=>{\n if (str) text += str;\n return str;\n });\n walk(elem.children, builder);\n builder.popWordTransform();\n const hideSameLink = formatOptions.hideLinkHrefIfSameAsText && href === text;\n if (!hideSameLink) builder.addInline(!text ? href : \" \" + $f14a7b0c234065ea$var$withBrackets(href, formatOptions.linkBrackets), {\n noWordTransform: true\n });\n }\n}\n/**\n * @param { DomNode } elem List items with their prefixes.\n * @param { RecursiveCallback } walk Recursive callback to process child nodes.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @param { FormatOptions } formatOptions Options specific to a formatter.\n * @param { () => string } nextPrefixCallback Function that returns increasing index each time it is called.\n */ function $f14a7b0c234065ea$var$formatList(elem, walk, builder, formatOptions, nextPrefixCallback) {\n const isNestedList = $f14a7b0c234065ea$var$get(elem, [\n \"parent\",\n \"name\"\n ]) === \"li\";\n // With Roman numbers, index length is not as straightforward as with Arabic numbers or letters,\n // so the dumb length comparison is the most robust way to get the correct value.\n let maxPrefixLength = 0;\n const listItems = (elem.children || [])// it might be more accurate to check only for html spaces here, but no significant benefit\n .filter((child)=>child.type !== \"text\" || !/^\\s*$/.test(child.data)).map(function(child) {\n if (child.name !== \"li\") return {\n node: child,\n prefix: \"\"\n };\n const prefix = isNestedList ? nextPrefixCallback().trimStart() : nextPrefixCallback();\n if (prefix.length > maxPrefixLength) maxPrefixLength = prefix.length;\n return {\n node: child,\n prefix: prefix\n };\n });\n if (!listItems.length) return;\n builder.openList({\n interRowLineBreaks: 1,\n leadingLineBreaks: isNestedList ? 1 : formatOptions.leadingLineBreaks || 2,\n maxPrefixLength: maxPrefixLength,\n prefixAlign: \"left\"\n });\n for (const { node: node, prefix: prefix } of listItems){\n builder.openListItem({\n prefix: prefix\n });\n walk([\n node\n ], builder);\n builder.closeListItem();\n }\n builder.closeList({\n trailingLineBreaks: isNestedList ? 1 : formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process an unordered list.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatUnorderedList(elem, walk, builder, formatOptions) {\n const prefix = formatOptions.itemPrefix || \" * \";\n return $f14a7b0c234065ea$var$formatList(elem, walk, builder, formatOptions, ()=>prefix);\n}\n/**\n * Process an ordered list.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatOrderedList(elem, walk, builder, formatOptions) {\n let nextIndex = Number(elem.attribs.start || \"1\");\n const indexFunction = $f14a7b0c234065ea$var$getOrderedListIndexFunction(elem.attribs.type);\n const nextPrefixCallback = ()=>\" \" + indexFunction(nextIndex++) + \". \";\n return $f14a7b0c234065ea$var$formatList(elem, walk, builder, formatOptions, nextPrefixCallback);\n}\n/**\n * Return a function that can be used to generate index markers of a specified format.\n *\n * @param { string } [olType='1'] Marker type.\n * @returns { (i: number) => string }\n */ function $f14a7b0c234065ea$var$getOrderedListIndexFunction(olType = \"1\") {\n switch(olType){\n case \"a\":\n return (i)=>$f14a7b0c234065ea$var$numberToLetterSequence(i, \"a\");\n case \"A\":\n return (i)=>$f14a7b0c234065ea$var$numberToLetterSequence(i, \"A\");\n case \"i\":\n return (i)=>$f14a7b0c234065ea$var$numberToRoman(i).toLowerCase();\n case \"I\":\n return (i)=>$f14a7b0c234065ea$var$numberToRoman(i);\n case \"1\":\n default:\n return (i)=>i.toString();\n }\n}\n/**\n * Given a list of class and ID selectors (prefixed with '.' and '#'),\n * return them as separate lists of names without prefixes.\n *\n * @param { string[] } selectors Class and ID selectors (`[\".class\", \"#id\"]` etc).\n * @returns { { classes: string[], ids: string[] } }\n */ function $f14a7b0c234065ea$var$splitClassesAndIds(selectors) {\n const classes = [];\n const ids = [];\n for (const selector of selectors){\n if (selector.startsWith(\".\")) classes.push(selector.substring(1));\n else if (selector.startsWith(\"#\")) ids.push(selector.substring(1));\n }\n return {\n classes: classes,\n ids: ids\n };\n}\nfunction $f14a7b0c234065ea$var$isDataTable(attr, tables) {\n if (tables === true) return true;\n if (!attr) return false;\n const { classes: classes, ids: ids } = $f14a7b0c234065ea$var$splitClassesAndIds(tables);\n const attrClasses = (attr[\"class\"] || \"\").split(\" \");\n const attrIds = (attr[\"id\"] || \"\").split(\" \");\n return attrClasses.some((x)=>classes.includes(x)) || attrIds.some((x)=>ids.includes(x));\n}\n/**\n * Process a table (either as a container or as a data table, depending on options).\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatTable(elem, walk, builder, formatOptions) {\n return $f14a7b0c234065ea$var$isDataTable(elem.attribs, builder.options.tables) ? $f14a7b0c234065ea$var$formatDataTable(elem, walk, builder, formatOptions) : $f14a7b0c234065ea$var$formatBlock(elem, walk, builder, formatOptions);\n}\nfunction $f14a7b0c234065ea$var$formatBlock(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks\n });\n}\n/**\n * Process a data table.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatDataTable(elem, walk, builder, formatOptions) {\n builder.openTable();\n elem.children.forEach(walkTable);\n builder.closeTable({\n tableToString: (rows)=>$f14a7b0c234065ea$var$tableToString(rows, formatOptions.rowSpacing ?? 0, formatOptions.colSpacing ?? 3),\n leadingLineBreaks: formatOptions.leadingLineBreaks,\n trailingLineBreaks: formatOptions.trailingLineBreaks\n });\n function formatCell(cellNode) {\n const colspan = +$f14a7b0c234065ea$var$get(cellNode, [\n \"attribs\",\n \"colspan\"\n ]) || 1;\n const rowspan = +$f14a7b0c234065ea$var$get(cellNode, [\n \"attribs\",\n \"rowspan\"\n ]) || 1;\n builder.openTableCell({\n maxColumnWidth: formatOptions.maxColumnWidth\n });\n walk(cellNode.children, builder);\n builder.closeTableCell({\n colspan: colspan,\n rowspan: rowspan\n });\n }\n function walkTable(elem) {\n if (elem.type !== \"tag\") return;\n const formatHeaderCell = formatOptions.uppercaseHeaderCells !== false ? (cellNode)=>{\n builder.pushWordTransform((str)=>str.toUpperCase());\n formatCell(cellNode);\n builder.popWordTransform();\n } : formatCell;\n switch(elem.name){\n case \"thead\":\n case \"tbody\":\n case \"tfoot\":\n case \"center\":\n elem.children.forEach(walkTable);\n return;\n case \"tr\":\n builder.openTableRow();\n for (const childOfTr of elem.children){\n if (childOfTr.type !== \"tag\") continue;\n switch(childOfTr.name){\n case \"th\":\n formatHeaderCell(childOfTr);\n break;\n case \"td\":\n formatCell(childOfTr);\n break;\n }\n }\n builder.closeTableRow();\n break;\n }\n }\n}\nvar $f14a7b0c234065ea$var$textFormatters = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n anchor: $f14a7b0c234065ea$var$formatAnchor,\n blockquote: $f14a7b0c234065ea$var$formatBlockquote,\n dataTable: $f14a7b0c234065ea$var$formatDataTable,\n heading: $f14a7b0c234065ea$var$formatHeading,\n horizontalLine: $f14a7b0c234065ea$var$formatHorizontalLine,\n image: $f14a7b0c234065ea$var$formatImage,\n lineBreak: $f14a7b0c234065ea$var$formatLineBreak,\n orderedList: $f14a7b0c234065ea$var$formatOrderedList,\n paragraph: $f14a7b0c234065ea$var$formatParagraph,\n pre: $f14a7b0c234065ea$var$formatPre,\n table: $f14a7b0c234065ea$var$formatTable,\n unorderedList: $f14a7b0c234065ea$var$formatUnorderedList,\n wbr: $f14a7b0c234065ea$var$formatWbr\n});\n/**\n * Default options.\n *\n * @constant\n * @type { Options }\n * @default\n * @private\n */ const $f14a7b0c234065ea$var$DEFAULT_OPTIONS = {\n baseElements: {\n selectors: [\n \"body\"\n ],\n orderBy: \"selectors\",\n returnDomByDefault: true\n },\n decodeEntities: true,\n encodeCharacters: {},\n formatters: {},\n limits: {\n ellipsis: \"...\",\n maxBaseElements: undefined,\n maxChildNodes: undefined,\n maxDepth: undefined,\n maxInputLength: 16777216 // 16_777_216\n },\n longWordSplit: {\n forceWrapOnLimit: false,\n wrapCharacters: []\n },\n preserveNewlines: false,\n selectors: [\n {\n selector: \"*\",\n format: \"inline\"\n },\n {\n selector: \"a\",\n format: \"anchor\",\n options: {\n baseUrl: null,\n hideLinkHrefIfSameAsText: false,\n ignoreHref: false,\n linkBrackets: [\n \"[\",\n \"]\"\n ],\n noAnchorUrl: true\n }\n },\n {\n selector: \"article\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"aside\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"blockquote\",\n format: \"blockquote\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2,\n trimEmptyLines: true\n }\n },\n {\n selector: \"br\",\n format: \"lineBreak\"\n },\n {\n selector: \"div\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"footer\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"form\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"h1\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 3,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"h2\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 3,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"h3\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 3,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"h4\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"h5\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"h6\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"header\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"hr\",\n format: \"horizontalLine\",\n options: {\n leadingLineBreaks: 2,\n length: undefined,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"img\",\n format: \"image\",\n options: {\n baseUrl: null,\n linkBrackets: [\n \"[\",\n \"]\"\n ]\n }\n },\n {\n selector: \"main\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"nav\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"ol\",\n format: \"orderedList\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"p\",\n format: \"paragraph\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"pre\",\n format: \"pre\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"section\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"table\",\n format: \"table\",\n options: {\n colSpacing: 3,\n leadingLineBreaks: 2,\n maxColumnWidth: 60,\n rowSpacing: 0,\n trailingLineBreaks: 2,\n uppercaseHeaderCells: true\n }\n },\n {\n selector: \"ul\",\n format: \"unorderedList\",\n options: {\n itemPrefix: \" * \",\n leadingLineBreaks: 2,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"wbr\",\n format: \"wbr\"\n }\n ],\n tables: [],\n whitespaceCharacters: \" \t\\r\\n\\f\\u200B\",\n wordwrap: 80\n};\nconst $f14a7b0c234065ea$var$concatMerge = (acc, src, options)=>[\n ...acc,\n ...src\n ];\nconst $f14a7b0c234065ea$var$overwriteMerge = (acc, src, options)=>[\n ...src\n ];\nconst $f14a7b0c234065ea$var$selectorsMerge = (acc, src, options)=>acc.some((s)=>typeof s === \"object\") ? $f14a7b0c234065ea$var$concatMerge(acc, src) // selectors\n : $f14a7b0c234065ea$var$overwriteMerge(acc, src) // baseElements.selectors\n;\n/**\n * Preprocess options, compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options.\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */ function $f14a7b0c234065ea$export$ef7acd7185315e22(options = {}) {\n options = (0, (/*@__PURE__*/$parcel$interopDefault($4CCA2)))($f14a7b0c234065ea$var$DEFAULT_OPTIONS, options, {\n arrayMerge: $f14a7b0c234065ea$var$overwriteMerge,\n customMerge: (key)=>key === \"selectors\" ? $f14a7b0c234065ea$var$selectorsMerge : undefined\n });\n options.formatters = Object.assign({}, $f14a7b0c234065ea$var$genericFormatters, $f14a7b0c234065ea$var$textFormatters, options.formatters);\n options.selectors = $f14a7b0c234065ea$var$mergeDuplicatesPreferLast(options.selectors, (s)=>s.selector);\n $f14a7b0c234065ea$var$handleDeprecatedOptions(options);\n return $f14a7b0c234065ea$var$compile$1(options);\n}\n/**\n * Convert given HTML content to plain text string.\n *\n * @param { string } html HTML content to convert.\n * @param { Options } [options = {}] HtmlToText options.\n * @param { any } [metadata] Optional metadata for HTML document, for use in formatters.\n * @returns { string } Plain text string.\n * @static\n *\n * @example\n * const { convert } = require('html-to-text');\n * const text = convert('Hello World ', {\n * wordwrap: 130\n * });\n * console.log(text); // HELLO WORLD\n */ function $f14a7b0c234065ea$export$9c68d69a4c5bbcf9(html, options = {}, metadata) {\n return $f14a7b0c234065ea$export$ef7acd7185315e22(options)(html, metadata);\n}\n/**\n * Map previously existing and now deprecated options to the new options layout.\n * This is a subject for cleanup in major releases.\n *\n * @param { Options } options HtmlToText options.\n */ function $f14a7b0c234065ea$var$handleDeprecatedOptions(options) {\n if (options.tags) {\n const tagDefinitions = Object.entries(options.tags).map(([selector, definition])=>({\n ...definition,\n selector: selector || \"*\"\n }));\n options.selectors.push(...tagDefinitions);\n options.selectors = $f14a7b0c234065ea$var$mergeDuplicatesPreferLast(options.selectors, (s)=>s.selector);\n }\n function set(obj, path, value) {\n const valueKey = path.pop();\n for (const key of path){\n let nested = obj[key];\n if (!nested) {\n nested = {};\n obj[key] = nested;\n }\n obj = nested;\n }\n obj[valueKey] = value;\n }\n if (options[\"baseElement\"]) {\n const baseElement = options[\"baseElement\"];\n set(options, [\n \"baseElements\",\n \"selectors\"\n ], Array.isArray(baseElement) ? baseElement : [\n baseElement\n ]);\n }\n if (options[\"returnDomByDefault\"] !== undefined) set(options, [\n \"baseElements\",\n \"returnDomByDefault\"\n ], options[\"returnDomByDefault\"]);\n for (const definition of options.selectors)if (definition.format === \"anchor\" && $f14a7b0c234065ea$var$get(definition, [\n \"options\",\n \"noLinkBrackets\"\n ])) set(definition, [\n \"options\",\n \"linkBrackets\"\n ], false);\n}\n\n});\nparcelRegister(\"365Jn\", function(module, exports) {\n\n$parcel$export(module.exports, \"hp2Builder\", () => $cbea839d19c5e791$export$dbda60a8f53eb466);\nparcelRequire(\"66mCi\");\nvar $dZvva = parcelRequire(\"dZvva\");\n\nvar $ii6m7 = parcelRequire(\"ii6m7\");\nfunction $cbea839d19c5e791$export$dbda60a8f53eb466(nodes) {\n return new (0, $ii6m7.Picker)($cbea839d19c5e791$var$handleArray(nodes));\n}\nfunction $cbea839d19c5e791$var$handleArray(nodes) {\n const matchers = nodes.map($cbea839d19c5e791$var$handleNode);\n return (el, ...tail)=>matchers.flatMap((m)=>m(el, ...tail));\n}\nfunction $cbea839d19c5e791$var$handleNode(node) {\n switch(node.type){\n case \"terminal\":\n {\n const result = [\n node.valueContainer\n ];\n return (el, ...tail)=>result;\n }\n case \"tagName\":\n return $cbea839d19c5e791$var$handleTagName(node);\n case \"attrValue\":\n return $cbea839d19c5e791$var$handleAttrValueName(node);\n case \"attrPresence\":\n return $cbea839d19c5e791$var$handleAttrPresenceName(node);\n case \"pushElement\":\n return $cbea839d19c5e791$var$handlePushElementNode(node);\n case \"popElement\":\n return $cbea839d19c5e791$var$handlePopElementNode(node);\n }\n}\nfunction $cbea839d19c5e791$var$handleTagName(node) {\n const variants = {};\n for (const variant of node.variants)variants[variant.value] = $cbea839d19c5e791$var$handleArray(variant.cont);\n return (el, ...tail)=>{\n const continuation = variants[el.name];\n return continuation ? continuation(el, ...tail) : [];\n };\n}\nfunction $cbea839d19c5e791$var$handleAttrPresenceName(node) {\n const attrName = node.name;\n const continuation = $cbea839d19c5e791$var$handleArray(node.cont);\n return (el, ...tail)=>Object.prototype.hasOwnProperty.call(el.attribs, attrName) ? continuation(el, ...tail) : [];\n}\nfunction $cbea839d19c5e791$var$handleAttrValueName(node) {\n const callbacks = [];\n for (const matcher of node.matchers){\n const predicate = matcher.predicate;\n const continuation = $cbea839d19c5e791$var$handleArray(matcher.cont);\n callbacks.push((attr, el, ...tail)=>predicate(attr) ? continuation(el, ...tail) : []);\n }\n const attrName = node.name;\n return (el, ...tail)=>{\n const attr = el.attribs[attrName];\n return attr || attr === \"\" ? callbacks.flatMap((cb)=>cb(attr, el, ...tail)) : [];\n };\n}\nfunction $cbea839d19c5e791$var$handlePushElementNode(node) {\n const continuation = $cbea839d19c5e791$var$handleArray(node.cont);\n const leftElementGetter = node.combinator === \"+\" ? $cbea839d19c5e791$var$getPrecedingElement : $cbea839d19c5e791$var$getParentElement;\n return (el, ...tail)=>{\n const next = leftElementGetter(el);\n if (next === null) return [];\n return continuation(next, el, ...tail);\n };\n}\nconst $cbea839d19c5e791$var$getPrecedingElement = (el)=>{\n const prev = el.prev;\n if (prev === null) return null;\n return (0, $dZvva.isTag)(prev) ? prev : $cbea839d19c5e791$var$getPrecedingElement(prev);\n};\nconst $cbea839d19c5e791$var$getParentElement = (el)=>{\n const parent = el.parent;\n return parent && (0, $dZvva.isTag)(parent) ? parent : null;\n};\nfunction $cbea839d19c5e791$var$handlePopElementNode(node) {\n const continuation = $cbea839d19c5e791$var$handleArray(node.cont);\n return (el, next, ...tail)=>continuation(next, ...tail);\n}\n\n});\nparcelRegister(\"66mCi\", function(module, exports) {\n$parcel$export(module.exports, \"CDATA\", () => (parcelRequire(\"dZvva\")).CDATA);\n$parcel$export(module.exports, \"Comment\", () => (parcelRequire(\"dZvva\")).Comment);\n$parcel$export(module.exports, \"Document\", () => (parcelRequire(\"dZvva\")).Document);\n$parcel$export(module.exports, \"Element\", () => (parcelRequire(\"dZvva\")).Element);\n$parcel$export(module.exports, \"isTag\", () => (parcelRequire(\"dZvva\")).isTag);\n$parcel$export(module.exports, \"ProcessingInstruction\", () => (parcelRequire(\"dZvva\")).ProcessingInstruction);\n$parcel$export(module.exports, \"Text\", () => (parcelRequire(\"dZvva\")).Text);\n\nvar $1RLFx = parcelRequire(\"1RLFx\");\n\nvar $dZvva = parcelRequire(\"dZvva\");\n// Default options\nconst $4714d8cc57b60c3f$var$defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false\n};\nclass $4714d8cc57b60c3f$export$ff8ccbac9225de62 {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */ constructor(callback, options, elementCB){\n /** The elements of the DOM */ this.dom = [];\n /** The root element for the DOM */ this.root = new (0, $dZvva.Document)(this.dom);\n /** Indicated whether parsing has been completed. */ this.done = false;\n /** Stack of open tags. */ this.tagStack = [\n this.root\n ];\n /** A data node that is still being written to. */ this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */ this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = $4714d8cc57b60c3f$var$defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : $4714d8cc57b60c3f$var$defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new (0, $dZvva.Document)(this.dom);\n this.done = false;\n this.tagStack = [\n this.root\n ];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done) return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) elem.endIndex = this.parser.endIndex;\n if (this.elementCB) this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? (0, $1RLFx.ElementType).Tag : undefined;\n const element = new (0, $dZvva.Element)(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode: lastNode } = this;\n if (lastNode && lastNode.type === (0, $1RLFx.ElementType).Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) lastNode.endIndex = this.parser.endIndex;\n } else {\n const node = new (0, $dZvva.Text)(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === (0, $1RLFx.ElementType).Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new (0, $dZvva.Comment)(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new (0, $dZvva.Text)(\"\");\n const node = new (0, $dZvva.CDATA)([\n text\n ]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new (0, $dZvva.ProcessingInstruction)(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") this.callback(error, this.dom);\n else if (error) throw error;\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) node.startIndex = this.parser.startIndex;\n if (this.options.withEndIndices) node.endIndex = this.parser.endIndex;\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nvar $4714d8cc57b60c3f$export$2e2bcd8739ae039 = $4714d8cc57b60c3f$export$ff8ccbac9225de62;\n\n});\nparcelRegister(\"1RLFx\", function(module, exports) {\n\n$parcel$export(module.exports, \"ElementType\", () => $15bfb7bf4e445d41$export$b992dc138d950e31);\n$parcel$export(module.exports, \"isTag\", () => $15bfb7bf4e445d41$export$3bf645f08efe3292);\n$parcel$export(module.exports, \"Root\", () => $15bfb7bf4e445d41$export$be92b6f5f03c0fe9);\n$parcel$export(module.exports, \"Text\", () => $15bfb7bf4e445d41$export$5f1af8db9871e1d6);\n$parcel$export(module.exports, \"Directive\", () => $15bfb7bf4e445d41$export$befdefbdce210f91);\n$parcel$export(module.exports, \"Comment\", () => $15bfb7bf4e445d41$export$4d299b491347818a);\n$parcel$export(module.exports, \"Script\", () => $15bfb7bf4e445d41$export$2f8b47a141e57afc);\n$parcel$export(module.exports, \"Style\", () => $15bfb7bf4e445d41$export$d9e45bc13d335801);\n$parcel$export(module.exports, \"Tag\", () => $15bfb7bf4e445d41$export$3288d34c523a1192);\n$parcel$export(module.exports, \"CDATA\", () => $15bfb7bf4e445d41$export$1f8b8f7e5c763232);\n$parcel$export(module.exports, \"Doctype\", () => $15bfb7bf4e445d41$export$31b44af36ff2c60f);\n/** Types of elements found in htmlparser2's DOM */ var $15bfb7bf4e445d41$export$b992dc138d950e31;\n(function(ElementType) {\n /** Type for the root element of a document */ ElementType[\"Root\"] = \"root\";\n /** Type for Text */ ElementType[\"Text\"] = \"text\";\n /** Type for ... ?> */ ElementType[\"Directive\"] = \"directive\";\n /** Type for */ ElementType[\"Comment\"] = \"comment\";\n /** Type for `.\n this.sequenceIndex = Number(c === $75d60ee9abed1dd4$var$CharCodes.Lt);\n }\n stateCDATASequence(c) {\n if (c === $75d60ee9abed1dd4$var$Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === $75d60ee9abed1dd4$var$Sequences.Cdata.length) {\n this.state = $75d60ee9abed1dd4$var$State.InCommentLike;\n this.currentSequence = $75d60ee9abed1dd4$var$Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n } else {\n this.sequenceIndex = 0;\n this.state = $75d60ee9abed1dd4$var$State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */ fastForwardTo(c) {\n while(++this.index < this.buffer.length + this.offset){\n if (this.buffer.charCodeAt(this.index - this.offset) === c) return true;\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */ this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */ stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === $75d60ee9abed1dd4$var$Sequences.CdataEnd) this.cbs.oncdata(this.sectionStart, this.index, 2);\n else this.cbs.oncomment(this.sectionStart, this.index, 2);\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = $75d60ee9abed1dd4$var$State.Text;\n }\n } else if (this.sequenceIndex === 0) // Fast-forward to the first character of the sequence\n {\n if (this.fastForwardTo(this.currentSequence[0])) this.sequenceIndex = 1;\n } else if (c !== this.currentSequence[this.sequenceIndex - 1]) // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */ isTagStartChar(c) {\n return this.xmlMode ? !$75d60ee9abed1dd4$var$isEndOfTagSection(c) : $75d60ee9abed1dd4$var$isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = $75d60ee9abed1dd4$var$State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.ExclamationMark) {\n this.state = $75d60ee9abed1dd4$var$State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.Questionmark) {\n this.state = $75d60ee9abed1dd4$var$State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n } else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === $75d60ee9abed1dd4$var$Sequences.TitleEnd[2]) this.startSpecial($75d60ee9abed1dd4$var$Sequences.TitleEnd, 3);\n else this.state = !this.xmlMode && lower === $75d60ee9abed1dd4$var$Sequences.ScriptEnd[2] ? $75d60ee9abed1dd4$var$State.BeforeSpecialS : $75d60ee9abed1dd4$var$State.InTagName;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.Slash) this.state = $75d60ee9abed1dd4$var$State.BeforeClosingTagName;\n else {\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if ($75d60ee9abed1dd4$var$isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if ($75d60ee9abed1dd4$var$isWhitespace(c)) ;\n else if (c === $75d60ee9abed1dd4$var$CharCodes.Gt) this.state = $75d60ee9abed1dd4$var$State.Text;\n else {\n this.state = this.isTagStartChar(c) ? $75d60ee9abed1dd4$var$State.InClosingTagName : $75d60ee9abed1dd4$var$State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || $75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = $75d60ee9abed1dd4$var$State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.baseState = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = $75d60ee9abed1dd4$var$State.InSpecialTag;\n this.sequenceIndex = 0;\n } else this.state = $75d60ee9abed1dd4$var$State.Text;\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.Slash) this.state = $75d60ee9abed1dd4$var$State.InSelfClosingTag;\n else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.state = $75d60ee9abed1dd4$var$State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.baseState = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n } else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Eq || $75d60ee9abed1dd4$var$isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = $75d60ee9abed1dd4$var$State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Eq) this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeValue;\n else if (c === $75d60ee9abed1dd4$var$CharCodes.Slash || c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onattribend($75d60ee9abed1dd4$export$cbf5509cea2ad22.NoValue, this.index);\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n } else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.cbs.onattribend($75d60ee9abed1dd4$export$cbf5509cea2ad22.NoValue, this.index);\n this.state = $75d60ee9abed1dd4$var$State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.DoubleQuote) {\n this.state = $75d60ee9abed1dd4$var$State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.SingleQuote) {\n this.state = $75d60ee9abed1dd4$var$State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n } else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = $75d60ee9abed1dd4$var$State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === $75d60ee9abed1dd4$var$CharCodes.DoubleQuote ? $75d60ee9abed1dd4$export$cbf5509cea2ad22.Double : $75d60ee9abed1dd4$export$cbf5509cea2ad22.Single, this.index);\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n } else if (this.decodeEntities && c === $75d60ee9abed1dd4$var$CharCodes.Amp) {\n this.baseState = this.state;\n this.state = $75d60ee9abed1dd4$var$State.BeforeEntity;\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, $75d60ee9abed1dd4$var$CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, $75d60ee9abed1dd4$var$CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if ($75d60ee9abed1dd4$var$isWhitespace(c) || c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend($75d60ee9abed1dd4$export$cbf5509cea2ad22.Unquoted, this.index);\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n } else if (this.decodeEntities && c === $75d60ee9abed1dd4$var$CharCodes.Amp) {\n this.baseState = this.state;\n this.state = $75d60ee9abed1dd4$var$State.BeforeEntity;\n }\n }\n stateBeforeDeclaration(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.OpeningSquareBracket) {\n this.state = $75d60ee9abed1dd4$var$State.CDATASequence;\n this.sequenceIndex = 0;\n } else this.state = c === $75d60ee9abed1dd4$var$CharCodes.Dash ? $75d60ee9abed1dd4$var$State.BeforeComment : $75d60ee9abed1dd4$var$State.InDeclaration;\n }\n stateInDeclaration(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Dash) {\n this.state = $75d60ee9abed1dd4$var$State.InCommentLike;\n this.currentSequence = $75d60ee9abed1dd4$var$Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n } else this.state = $75d60ee9abed1dd4$var$State.InDeclaration;\n }\n stateInSpecialComment(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === $75d60ee9abed1dd4$var$Sequences.ScriptEnd[3]) this.startSpecial($75d60ee9abed1dd4$var$Sequences.ScriptEnd, 4);\n else if (lower === $75d60ee9abed1dd4$var$Sequences.StyleEnd[3]) this.startSpecial($75d60ee9abed1dd4$var$Sequences.StyleEnd, 4);\n else {\n this.state = $75d60ee9abed1dd4$var$State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeEntity(c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === $75d60ee9abed1dd4$var$CharCodes.Number) this.state = $75d60ee9abed1dd4$var$State.BeforeNumericEntity;\n else if (c === $75d60ee9abed1dd4$var$CharCodes.Amp) ;\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = $75d60ee9abed1dd4$var$State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n }\n stateInNamedEntity(c) {\n this.entityExcess += 1;\n this.trieIndex = (0, $1KiJy.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n const masked = this.trieCurrent & (0, $1KiJy.BinTrieFlags).VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== $75d60ee9abed1dd4$var$CharCodes.Semi) this.trieIndex += valueLength;\n else {\n // Add 1 as we have already incremented the excess\n const entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) this.emitPartial(this.sectionStart, entityStart);\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) this.emitNamedEntity();\n }\n }\n }\n emitNamedEntity() {\n this.state = this.baseState;\n if (this.entityResult === 0) return;\n const valueLength = (this.entityTrie[this.entityResult] & (0, $1KiJy.BinTrieFlags).VALUE_LENGTH) >> 14;\n switch(valueLength){\n case 1:\n this.emitCodePoint(this.entityTrie[this.entityResult] & ~(0, $1KiJy.BinTrieFlags).VALUE_LENGTH);\n break;\n case 2:\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n case 3:\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n stateBeforeNumericEntity(c) {\n if ((c | 0x20) === $75d60ee9abed1dd4$var$CharCodes.LowerX) {\n this.entityExcess++;\n this.state = $75d60ee9abed1dd4$var$State.InHexEntity;\n } else {\n this.state = $75d60ee9abed1dd4$var$State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n }\n emitNumericEntity(strict) {\n const entityStart = this.index - this.entityExcess - 1;\n const numberStart = entityStart + 2 + Number(this.state === $75d60ee9abed1dd4$var$State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) this.emitPartial(this.sectionStart, entityStart);\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint((0, $1KiJy.replaceCodePoint)(this.entityResult));\n }\n this.state = this.baseState;\n }\n stateInNumericEntity(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Semi) this.emitNumericEntity(true);\n else if ($75d60ee9abed1dd4$var$isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - $75d60ee9abed1dd4$var$CharCodes.Zero);\n this.entityExcess++;\n } else {\n if (this.allowLegacyEntity()) this.emitNumericEntity(false);\n else this.state = this.baseState;\n this.index--;\n }\n }\n stateInHexEntity(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Semi) this.emitNumericEntity(true);\n else if ($75d60ee9abed1dd4$var$isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - $75d60ee9abed1dd4$var$CharCodes.Zero);\n this.entityExcess++;\n } else if ($75d60ee9abed1dd4$var$isHexDigit(c)) {\n this.entityResult = this.entityResult * 16 + ((c | 0x20) - $75d60ee9abed1dd4$var$CharCodes.LowerA + 10);\n this.entityExcess++;\n } else {\n if (this.allowLegacyEntity()) this.emitNumericEntity(false);\n else this.state = this.baseState;\n this.index--;\n }\n }\n allowLegacyEntity() {\n return !this.xmlMode && (this.baseState === $75d60ee9abed1dd4$var$State.Text || this.baseState === $75d60ee9abed1dd4$var$State.InSpecialTag);\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */ cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === $75d60ee9abed1dd4$var$State.Text || this.state === $75d60ee9abed1dd4$var$State.InSpecialTag && this.sequenceIndex === 0) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n } else if (this.state === $75d60ee9abed1dd4$var$State.InAttributeValueDq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueSq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */ parse() {\n while(this.shouldContinue()){\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch(this.state){\n case $75d60ee9abed1dd4$var$State.Text:\n this.stateText(c);\n break;\n case $75d60ee9abed1dd4$var$State.SpecialStartSequence:\n this.stateSpecialStartSequence(c);\n break;\n case $75d60ee9abed1dd4$var$State.InSpecialTag:\n this.stateInSpecialTag(c);\n break;\n case $75d60ee9abed1dd4$var$State.CDATASequence:\n this.stateCDATASequence(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeValueDq:\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeName:\n this.stateInAttributeName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InCommentLike:\n this.stateInCommentLike(c);\n break;\n case $75d60ee9abed1dd4$var$State.InSpecialComment:\n this.stateInSpecialComment(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeAttributeName:\n this.stateBeforeAttributeName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InTagName:\n this.stateInTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InClosingTagName:\n this.stateInClosingTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeTagName:\n this.stateBeforeTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.AfterAttributeName:\n this.stateAfterAttributeName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeValueSq:\n this.stateInAttributeValueSingleQuotes(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeAttributeValue:\n this.stateBeforeAttributeValue(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeClosingTagName:\n this.stateBeforeClosingTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.AfterClosingTagName:\n this.stateAfterClosingTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeSpecialS:\n this.stateBeforeSpecialS(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeValueNq:\n this.stateInAttributeValueNoQuotes(c);\n break;\n case $75d60ee9abed1dd4$var$State.InSelfClosingTag:\n this.stateInSelfClosingTag(c);\n break;\n case $75d60ee9abed1dd4$var$State.InDeclaration:\n this.stateInDeclaration(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeDeclaration:\n this.stateBeforeDeclaration(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeComment:\n this.stateBeforeComment(c);\n break;\n case $75d60ee9abed1dd4$var$State.InProcessingInstruction:\n this.stateInProcessingInstruction(c);\n break;\n case $75d60ee9abed1dd4$var$State.InNamedEntity:\n this.stateInNamedEntity(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeEntity:\n this.stateBeforeEntity(c);\n break;\n case $75d60ee9abed1dd4$var$State.InHexEntity:\n this.stateInHexEntity(c);\n break;\n case $75d60ee9abed1dd4$var$State.InNumericEntity:\n this.stateInNumericEntity(c);\n break;\n default:\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === $75d60ee9abed1dd4$var$State.InNamedEntity) this.emitNamedEntity();\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */ handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.state === $75d60ee9abed1dd4$var$State.InCommentLike) {\n if (this.currentSequence === $75d60ee9abed1dd4$var$Sequences.CdataEnd) this.cbs.oncdata(this.sectionStart, endIndex, 0);\n else this.cbs.oncomment(this.sectionStart, endIndex, 0);\n } else if (this.state === $75d60ee9abed1dd4$var$State.InNumericEntity && this.allowLegacyEntity()) this.emitNumericEntity(false);\n else if (this.state === $75d60ee9abed1dd4$var$State.InHexEntity && this.allowLegacyEntity()) this.emitNumericEntity(false);\n else if (this.state === $75d60ee9abed1dd4$var$State.InTagName || this.state === $75d60ee9abed1dd4$var$State.BeforeAttributeName || this.state === $75d60ee9abed1dd4$var$State.BeforeAttributeValue || this.state === $75d60ee9abed1dd4$var$State.AfterAttributeName || this.state === $75d60ee9abed1dd4$var$State.InAttributeName || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueSq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueDq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueNq || this.state === $75d60ee9abed1dd4$var$State.InClosingTagName) ;\n else this.cbs.ontext(this.sectionStart, endIndex);\n }\n emitPartial(start, endIndex) {\n if (this.baseState !== $75d60ee9abed1dd4$var$State.Text && this.baseState !== $75d60ee9abed1dd4$var$State.InSpecialTag) this.cbs.onattribdata(start, endIndex);\n else this.cbs.ontext(start, endIndex);\n }\n emitCodePoint(cp) {\n if (this.baseState !== $75d60ee9abed1dd4$var$State.Text && this.baseState !== $75d60ee9abed1dd4$var$State.InSpecialTag) this.cbs.onattribentity(cp);\n else this.cbs.ontextentity(cp);\n }\n}\n\n});\nparcelRegister(\"1KiJy\", function(module, exports) {\n\"use strict\";\nvar $14589e7572d0431f$var$__createBinding = module.exports && module.exports.__createBinding || (Object.create ? function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {\n enumerable: true,\n get: function() {\n return m[k];\n }\n };\n Object.defineProperty(o, k2, desc);\n} : function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar $14589e7572d0431f$var$__setModuleDefault = module.exports && module.exports.__setModuleDefault || (Object.create ? function(o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function(o, v) {\n o[\"default\"] = v;\n});\nvar $14589e7572d0431f$var$__importStar = module.exports && module.exports.__importStar || function(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) {\n for(var k in mod)if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) $14589e7572d0431f$var$__createBinding(result, mod, k);\n }\n $14589e7572d0431f$var$__setModuleDefault(result, mod);\n return result;\n};\nvar $14589e7572d0431f$var$__importDefault = module.exports && module.exports.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.decodeXML = module.exports.decodeHTMLStrict = module.exports.decodeHTMLAttribute = module.exports.decodeHTML = module.exports.determineBranch = module.exports.EntityDecoder = module.exports.DecodingMode = module.exports.BinTrieFlags = module.exports.fromCodePoint = module.exports.replaceCodePoint = module.exports.decodeCodePoint = module.exports.xmlDecodeTree = module.exports.htmlDecodeTree = void 0;\n\nvar $14589e7572d0431f$var$decode_data_html_js_1 = $14589e7572d0431f$var$__importDefault((parcelRequire(\"5sG9R\")));\nmodule.exports.htmlDecodeTree = $14589e7572d0431f$var$decode_data_html_js_1.default;\n\nvar $14589e7572d0431f$var$decode_data_xml_js_1 = $14589e7572d0431f$var$__importDefault((parcelRequire(\"cziBi\")));\nmodule.exports.xmlDecodeTree = $14589e7572d0431f$var$decode_data_xml_js_1.default;\n\nvar $14589e7572d0431f$var$decode_codepoint_js_1 = $14589e7572d0431f$var$__importStar((parcelRequire(\"6DwAw\")));\nmodule.exports.decodeCodePoint = $14589e7572d0431f$var$decode_codepoint_js_1.default;\n\nObject.defineProperty(module.exports, \"replaceCodePoint\", {\n enumerable: true,\n get: function() {\n return (parcelRequire(\"6DwAw\")).replaceCodePoint;\n }\n});\nObject.defineProperty(module.exports, \"fromCodePoint\", {\n enumerable: true,\n get: function() {\n return (parcelRequire(\"6DwAw\")).fromCodePoint;\n }\n});\nvar $14589e7572d0431f$var$CharCodes;\n(function(CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})($14589e7572d0431f$var$CharCodes || ($14589e7572d0431f$var$CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */ var $14589e7572d0431f$var$TO_LOWER_BIT = 32;\nvar $14589e7572d0431f$var$BinTrieFlags;\n(function(BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})($14589e7572d0431f$var$BinTrieFlags = module.exports.BinTrieFlags || (module.exports.BinTrieFlags = {}));\nfunction $14589e7572d0431f$var$isNumber(code) {\n return code >= $14589e7572d0431f$var$CharCodes.ZERO && code <= $14589e7572d0431f$var$CharCodes.NINE;\n}\nfunction $14589e7572d0431f$var$isHexadecimalCharacter(code) {\n return code >= $14589e7572d0431f$var$CharCodes.UPPER_A && code <= $14589e7572d0431f$var$CharCodes.UPPER_F || code >= $14589e7572d0431f$var$CharCodes.LOWER_A && code <= $14589e7572d0431f$var$CharCodes.LOWER_F;\n}\nfunction $14589e7572d0431f$var$isAsciiAlphaNumeric(code) {\n return code >= $14589e7572d0431f$var$CharCodes.UPPER_A && code <= $14589e7572d0431f$var$CharCodes.UPPER_Z || code >= $14589e7572d0431f$var$CharCodes.LOWER_A && code <= $14589e7572d0431f$var$CharCodes.LOWER_Z || $14589e7572d0431f$var$isNumber(code);\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */ function $14589e7572d0431f$var$isEntityInAttributeInvalidEnd(code) {\n return code === $14589e7572d0431f$var$CharCodes.EQUALS || $14589e7572d0431f$var$isAsciiAlphaNumeric(code);\n}\nvar $14589e7572d0431f$var$EntityDecoderState;\n(function(EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})($14589e7572d0431f$var$EntityDecoderState || ($14589e7572d0431f$var$EntityDecoderState = {}));\nvar $14589e7572d0431f$var$DecodingMode;\n(function(DecodingMode) {\n /** Entities in text nodes that can end with any character. */ DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */ DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */ DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})($14589e7572d0431f$var$DecodingMode = module.exports.DecodingMode || (module.exports.DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */ var $14589e7572d0431f$var$EntityDecoder = /** @class */ function() {\n function EntityDecoder(/** The tree used to decode entities. */ decodeTree, /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */ emitCodePoint, /** An object that is used to produce errors. */ errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */ this.state = $14589e7572d0431f$var$EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */ this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */ this.result = 0;\n /** The current index in the decode tree. */ this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */ this.excess = 1;\n /** The mode in which the decoder is operating. */ this.decodeMode = $14589e7572d0431f$var$DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */ EntityDecoder.prototype.startEntity = function(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = $14589e7572d0431f$var$EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n };\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ EntityDecoder.prototype.write = function(str, offset) {\n switch(this.state){\n case $14589e7572d0431f$var$EntityDecoderState.EntityStart:\n if (str.charCodeAt(offset) === $14589e7572d0431f$var$CharCodes.NUM) {\n this.state = $14589e7572d0431f$var$EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = $14589e7572d0431f$var$EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n case $14589e7572d0431f$var$EntityDecoderState.NumericStart:\n return this.stateNumericStart(str, offset);\n case $14589e7572d0431f$var$EntityDecoderState.NumericDecimal:\n return this.stateNumericDecimal(str, offset);\n case $14589e7572d0431f$var$EntityDecoderState.NumericHex:\n return this.stateNumericHex(str, offset);\n case $14589e7572d0431f$var$EntityDecoderState.NamedEntity:\n return this.stateNamedEntity(str, offset);\n }\n };\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ EntityDecoder.prototype.stateNumericStart = function(str, offset) {\n if (offset >= str.length) return -1;\n if ((str.charCodeAt(offset) | $14589e7572d0431f$var$TO_LOWER_BIT) === $14589e7572d0431f$var$CharCodes.LOWER_X) {\n this.state = $14589e7572d0431f$var$EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = $14589e7572d0431f$var$EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n };\n EntityDecoder.prototype.addToNumericResult = function(str, start, end, base) {\n if (start !== end) {\n var digitCount = end - start;\n this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n };\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ EntityDecoder.prototype.stateNumericHex = function(str, offset) {\n var startIdx = offset;\n while(offset < str.length){\n var char = str.charCodeAt(offset);\n if ($14589e7572d0431f$var$isNumber(char) || $14589e7572d0431f$var$isHexadecimalCharacter(char)) offset += 1;\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n };\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ EntityDecoder.prototype.stateNumericDecimal = function(str, offset) {\n var startIdx = offset;\n while(offset < str.length){\n var char = str.charCodeAt(offset);\n if ($14589e7572d0431f$var$isNumber(char)) offset += 1;\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n };\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */ EntityDecoder.prototype.emitNumericEntity = function(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === $14589e7572d0431f$var$CharCodes.SEMI) this.consumed += 1;\n else if (this.decodeMode === $14589e7572d0431f$var$DecodingMode.Strict) return 0;\n this.emitCodePoint((0, $14589e7572d0431f$var$decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== $14589e7572d0431f$var$CharCodes.SEMI) this.errors.missingSemicolonAfterCharacterReference();\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n };\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ EntityDecoder.prototype.stateNamedEntity = function(str, offset) {\n var decodeTree = this.decodeTree;\n var current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n var valueLength = (current & $14589e7572d0431f$var$BinTrieFlags.VALUE_LENGTH) >> 14;\n for(; offset < str.length; offset++, this.excess++){\n var char = str.charCodeAt(offset);\n this.treeIndex = $14589e7572d0431f$var$determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) return this.result === 0 || // If we are parsing an attribute\n this.decodeMode === $14589e7572d0431f$var$DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 || // And there should be no invalid characters.\n $14589e7572d0431f$var$isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();\n current = decodeTree[this.treeIndex];\n valueLength = (current & $14589e7572d0431f$var$BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === $14589e7572d0431f$var$CharCodes.SEMI) return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== $14589e7572d0431f$var$DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n };\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */ EntityDecoder.prototype.emitNotTerminatedNamedEntity = function() {\n var _a;\n var _b = this, result = _b.result, decodeTree = _b.decodeTree;\n var valueLength = (decodeTree[result] & $14589e7572d0431f$var$BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 || _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n };\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */ EntityDecoder.prototype.emitNamedEntityData = function(result, valueLength, consumed) {\n var decodeTree = this.decodeTree;\n this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~$14589e7572d0431f$var$BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed);\n if (valueLength === 3) // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n return consumed;\n };\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */ EntityDecoder.prototype.end = function() {\n var _a;\n switch(this.state){\n case $14589e7572d0431f$var$EntityDecoderState.NamedEntity:\n // Emit a named entity if we have one.\n return this.result !== 0 && (this.decodeMode !== $14589e7572d0431f$var$DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;\n // Otherwise, emit a numeric entity if we have one.\n case $14589e7572d0431f$var$EntityDecoderState.NumericDecimal:\n return this.emitNumericEntity(0, 2);\n case $14589e7572d0431f$var$EntityDecoderState.NumericHex:\n return this.emitNumericEntity(0, 3);\n case $14589e7572d0431f$var$EntityDecoderState.NumericStart:\n (_a = this.errors) === null || _a === void 0 || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n case $14589e7572d0431f$var$EntityDecoderState.EntityStart:\n // Return 0 if we have no entity.\n return 0;\n }\n };\n return EntityDecoder;\n}();\nmodule.exports.EntityDecoder = $14589e7572d0431f$var$EntityDecoder;\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */ function $14589e7572d0431f$var$getDecoder(decodeTree) {\n var ret = \"\";\n var decoder = new $14589e7572d0431f$var$EntityDecoder(decodeTree, function(str) {\n return ret += (0, $14589e7572d0431f$var$decode_codepoint_js_1.fromCodePoint)(str);\n });\n return function decodeWithTrie(str, decodeMode) {\n var lastIndex = 0;\n var offset = 0;\n while((offset = str.indexOf(\"&\", offset)) >= 0){\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n var len = decoder.write(str, // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n var result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */ function $14589e7572d0431f$var$determineBranch(decodeTree, current, nodeIdx, char) {\n var branchCount = (current & $14589e7572d0431f$var$BinTrieFlags.BRANCH_LENGTH) >> 7;\n var jumpOffset = current & $14589e7572d0431f$var$BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n var value = char - jumpOffset;\n return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n var lo = nodeIdx;\n var hi = lo + branchCount - 1;\n while(lo <= hi){\n var mid = lo + hi >>> 1;\n var midVal = decodeTree[mid];\n if (midVal < char) lo = mid + 1;\n else if (midVal > char) hi = mid - 1;\n else return decodeTree[mid + branchCount];\n }\n return -1;\n}\nmodule.exports.determineBranch = $14589e7572d0431f$var$determineBranch;\nvar $14589e7572d0431f$var$htmlDecoder = $14589e7572d0431f$var$getDecoder($14589e7572d0431f$var$decode_data_html_js_1.default);\nvar $14589e7572d0431f$var$xmlDecoder = $14589e7572d0431f$var$getDecoder($14589e7572d0431f$var$decode_data_xml_js_1.default);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */ function $14589e7572d0431f$var$decodeHTML(str, mode) {\n if (mode === void 0) mode = $14589e7572d0431f$var$DecodingMode.Legacy;\n return $14589e7572d0431f$var$htmlDecoder(str, mode);\n}\nmodule.exports.decodeHTML = $14589e7572d0431f$var$decodeHTML;\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */ function $14589e7572d0431f$var$decodeHTMLAttribute(str) {\n return $14589e7572d0431f$var$htmlDecoder(str, $14589e7572d0431f$var$DecodingMode.Attribute);\n}\nmodule.exports.decodeHTMLAttribute = $14589e7572d0431f$var$decodeHTMLAttribute;\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */ function $14589e7572d0431f$var$decodeHTMLStrict(str) {\n return $14589e7572d0431f$var$htmlDecoder(str, $14589e7572d0431f$var$DecodingMode.Strict);\n}\nmodule.exports.decodeHTMLStrict = $14589e7572d0431f$var$decodeHTMLStrict;\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */ function $14589e7572d0431f$var$decodeXML(str) {\n return $14589e7572d0431f$var$xmlDecoder(str, $14589e7572d0431f$var$DecodingMode.Strict);\n}\nmodule.exports.decodeXML = $14589e7572d0431f$var$decodeXML;\n\n});\nparcelRegister(\"5sG9R\", function(module, exports) {\n\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.default = new Uint16Array(// prettier-ignore\n'\\u1D41<\\xd5\\u0131\\u028A\\u049D\\u057B\\u05D0\\u0675\\u06DE\\u07A2\\u07D6\\u080F\\u0A4A\\u0A91\\u0DA1\\u0E6D\\u0F09\\u0F26\\u10CA\\u1228\\u12E1\\u1415\\u149D\\u14C3\\u14DF\\u1525\\0\\0\\0\\0\\0\\0\\u156B\\u16CD\\u198D\\u1C12\\u1DDD\\u1F7E\\u2060\\u21B0\\u228D\\u23C0\\u23FB\\u2442\\u2824\\u2912\\u2D08\\u2E48\\u2FCE\\u3016\\u32BA\\u3639\\u37AC\\u38FE\\u3A28\\u3A71\\u3AE0\\u3B2E\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803B\\xc6\\u40C6P\\u803B&\\u4026cute\\u803B\\xc1\\u40C1reve;\\u4102\\u0100iyx}rc\\u803B\\xc2\\u40C2;\\u4410r;\\uC000\\ud835\\udd04rave\\u803B\\xc0\\u40C0pha;\\u4391acr;\\u4100d;\\u6A53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uC000\\ud835\\udd38plyFunction;\\u6061ing\\u803B\\xc5\\u40C5\\u0100cs\\xbe\\xc3r;\\uC000\\ud835\\udc9cign;\\u6254ilde\\u803B\\xc3\\u40C3ml\\u803B\\xc4\\u40C4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011C\\u0122\\u0127\\u012A\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6AE7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010B\\u0114ause;\\u6235noullis;\\u612Ca;\\u4392r;\\uC000\\ud835\\udd05pf;\\uC000\\ud835\\udd39eve;\\u42D8c\\xf2\\u0113mpeq;\\u624E\\u0700HOacdefhilorsu\\u014D\\u0151\\u0156\\u0180\\u019E\\u01A2\\u01B5\\u01B7\\u01BA\\u01DC\\u0215\\u0273\\u0278\\u027Ecy;\\u4427PY\\u803B\\xa9\\u40A9\\u0180cpy\\u015D\\u0162\\u017Aute;\\u4106\\u0100;i\\u0167\\u0168\\u62D2talDifferentialD;\\u6145leys;\\u612D\\u0200aeio\\u0189\\u018E\\u0194\\u0198ron;\\u410Cdil\\u803B\\xc7\\u40C7rc;\\u4108nint;\\u6230ot;\\u410A\\u0100dn\\u01A7\\u01ADilla;\\u40B8terDot;\\u40B7\\xf2\\u017Fi;\\u43A7rcle\\u0200DMPT\\u01C7\\u01CB\\u01D1\\u01D6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01E2\\u01F8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020FoubleQuote;\\u601Duote;\\u6019\\u0200lnpu\\u021E\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6A74\\u0180git\\u022F\\u0236\\u023Aruent;\\u6261nt;\\u622FourIntegral;\\u622E\\u0100fr\\u024C\\u024E;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6A2Fcr;\\uC000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62D3ap;\\u624D\\u0580DJSZacefios\\u02A0\\u02AC\\u02B0\\u02B4\\u02B8\\u02CB\\u02D7\\u02E1\\u02E6\\u0333\\u048D\\u0100;o\\u0179\\u02A5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440F\\u0180grs\\u02BF\\u02C4\\u02C7ger;\\u6021r;\\u61A1hv;\\u6AE4\\u0100ay\\u02D0\\u02D5ron;\\u410E;\\u4414l\\u0100;t\\u02DD\\u02DE\\u6207a;\\u4394r;\\uC000\\ud835\\udd07\\u0100af\\u02EB\\u0327\\u0100cm\\u02F0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031Ccute;\\u40B4o\\u0174\\u030B\\u030D;\\u42D9bleAcute;\\u42DDrave;\\u4060ilde;\\u42DCond;\\u62C4ferentialD;\\u6146\\u0470\\u033D\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uC000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034D\\u40A8ot;\\u60DCqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03CF\\u03E2\\u03F8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037B\\xbb\\u0349nArrow;\\u61D3\\u0100eo\\u0387\\u03A4ft\\u0180ART\\u0390\\u0396\\u03A1rrow;\\u61D0ightArrow;\\u61D4e\\xe5\\u02CAng\\u0100LR\\u03AB\\u03C4eft\\u0100AR\\u03B3\\u03B9rrow;\\u67F8ightArrow;\\u67FAightArrow;\\u67F9ight\\u0100AT\\u03D8\\u03DErrow;\\u61D2ee;\\u62A8p\\u0241\\u03E9\\0\\0\\u03EFrrow;\\u61D1ownArrow;\\u61D5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042A\\u0430\\u045E\\u047F\\u037Crrow\\u0180;BU\\u041D\\u041E\\u0422\\u6193ar;\\u6913pArrow;\\u61F5reve;\\u4311eft\\u02D2\\u043A\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695Eector\\u0100;B\\u0459\\u045A\\u61BDar;\\u6956ight\\u01D4\\u0467\\0\\u0471eeVector;\\u695Fector\\u0100;B\\u047A\\u047B\\u61C1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62A4rrow;\\u61A7\\u0100ct\\u0492\\u0497r;\\uC000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04BD\\u04C0\\u04C4\\u04CB\\u04DE\\u04E2\\u04E7\\u04EE\\u04F5\\u0521\\u052F\\u0536\\u0552\\u055D\\u0560\\u0565G;\\u414AH\\u803B\\xd0\\u40D0cute\\u803B\\xc9\\u40C9\\u0180aiy\\u04D2\\u04D7\\u04DCron;\\u411Arc\\u803B\\xca\\u40CA;\\u442Dot;\\u4116r;\\uC000\\ud835\\udd08rave\\u803B\\xc8\\u40C8ement;\\u6208\\u0100ap\\u04FA\\u04FEcr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65FBerySmallSquare;\\u65AB\\u0100gp\\u0526\\u052Aon;\\u4118f;\\uC000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053C\\u0549l\\u0100;T\\u0542\\u0543\\u6A75ilde;\\u6242librium;\\u61CC\\u0100ci\\u0557\\u055Ar;\\u6130m;\\u6A73a;\\u4397ml\\u803B\\xcb\\u40CB\\u0100ip\\u056A\\u056Fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058D\\u05B2\\u05CCy;\\u4424r;\\uC000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05A3mallSquare;\\u65FCerySmallSquare;\\u65AA\\u0370\\u05BA\\0\\u05BF\\0\\0\\u05C4f;\\uC000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05CB\\u0600JTabcdfgorst\\u05E8\\u05EC\\u05EF\\u05FA\\u0600\\u0612\\u0616\\u061B\\u061D\\u0623\\u066C\\u0672cy;\\u4403\\u803B>\\u403Emma\\u0100;d\\u05F7\\u05F8\\u4393;\\u43DCreve;\\u411E\\u0180eiy\\u0607\\u060C\\u0610dil;\\u4122rc;\\u411C;\\u4413ot;\\u4120r;\\uC000\\ud835\\udd0a;\\u62D9pf;\\uC000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064E\\u0656\\u065B\\u0666qual\\u0100;L\\u063E\\u063F\\u6265ess;\\u62DBullEqual;\\u6267reater;\\u6AA2ess;\\u6277lantEqual;\\u6A7Eilde;\\u6273cr;\\uC000\\ud835\\udca2;\\u626B\\u0400Aacfiosu\\u0685\\u068B\\u0696\\u069B\\u069E\\u06AA\\u06BE\\u06CARDcy;\\u442A\\u0100ct\\u0690\\u0694ek;\\u42C7;\\u405Eirc;\\u4124r;\\u610ClbertSpace;\\u610B\\u01F0\\u06AF\\0\\u06B2f;\\u610DizontalLine;\\u6500\\u0100ct\\u06C3\\u06C5\\xf2\\u06A9rok;\\u4126mp\\u0144\\u06D0\\u06D8ownHum\\xf0\\u012Fqual;\\u624F\\u0700EJOacdfgmnostu\\u06FA\\u06FE\\u0703\\u0707\\u070E\\u071A\\u071E\\u0721\\u0728\\u0744\\u0778\\u078B\\u078F\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803B\\xcd\\u40CD\\u0100iy\\u0713\\u0718rc\\u803B\\xce\\u40CE;\\u4418ot;\\u4130r;\\u6111rave\\u803B\\xcc\\u40CC\\u0180;ap\\u0720\\u072F\\u073F\\u0100cg\\u0734\\u0737r;\\u412AinaryI;\\u6148lie\\xf3\\u03DD\\u01F4\\u0749\\0\\u0762\\u0100;e\\u074D\\u074E\\u622C\\u0100gr\\u0753\\u0758ral;\\u622Bsection;\\u62C2isible\\u0100CT\\u076C\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077F\\u0783\\u0788on;\\u412Ef;\\uC000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01EB\\u079A\\0\\u079Ecy;\\u4406l\\u803B\\xcf\\u40CF\\u0280cfosu\\u07AC\\u07B7\\u07BC\\u07C2\\u07D0\\u0100iy\\u07B1\\u07B5rc;\\u4134;\\u4419r;\\uC000\\ud835\\udd0dpf;\\uC000\\ud835\\udd41\\u01E3\\u07C7\\0\\u07CCr;\\uC000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07E4\\u07E8\\u07EC\\u07F1\\u07FD\\u0802\\u0808cy;\\u4425cy;\\u440Cppa;\\u439A\\u0100ey\\u07F6\\u07FBdil;\\u4136;\\u441Ar;\\uC000\\ud835\\udd0epf;\\uC000\\ud835\\udd42cr;\\uC000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082C\\u0850\\u0863\\u09B3\\u09B8\\u09C7\\u09CD\\u0A37\\u0A47cy;\\u4409\\u803B<\\u403C\\u0280cmnpr\\u0837\\u083C\\u0841\\u0844\\u084Dute;\\u4139bda;\\u439Bg;\\u67EAlacetrf;\\u6112r;\\u619E\\u0180aey\\u0857\\u085C\\u0861ron;\\u413Ddil;\\u413B;\\u441B\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087E\\u08A9\\u08B1\\u08E0\\u08E6\\u08FC\\u092F\\u095B\\u0390\\u096A\\u0100nr\\u0883\\u088FgleBracket;\\u67E8row\\u0180;BR\\u0899\\u089A\\u089E\\u6190ar;\\u61E4ightArrow;\\u61C6eiling;\\u6308o\\u01F5\\u08B7\\0\\u08C3bleBracket;\\u67E6n\\u01D4\\u08C8\\0\\u08D2eeVector;\\u6961ector\\u0100;B\\u08DB\\u08DC\\u61C3ar;\\u6959loor;\\u630Aight\\u0100AV\\u08EF\\u08F5rrow;\\u6194ector;\\u694E\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090A\\u0910\\u62A3rrow;\\u61A4ector;\\u695Aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62B2ar;\\u69CFqual;\\u62B4p\\u0180DTV\\u0937\\u0942\\u094CownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61BFar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61BCar;\\u6952ight\\xe1\\u039Cs\\u0300EFGLST\\u097E\\u098B\\u0995\\u099D\\u09A2\\u09ADqualGreater;\\u62DAullEqual;\\u6266reater;\\u6276ess;\\u6AA1lantEqual;\\u6A7Dilde;\\u6272r;\\uC000\\ud835\\udd0f\\u0100;e\\u09BD\\u09BE\\u62D8ftarrow;\\u61DAidot;\\u413F\\u0180npw\\u09D4\\u0A16\\u0A1Bg\\u0200LRlr\\u09DE\\u09F7\\u0A02\\u0A10eft\\u0100AR\\u09E6\\u09ECrrow;\\u67F5ightArrow;\\u67F7ightArrow;\\u67F6eft\\u0100ar\\u03B3\\u0A0Aight\\xe1\\u03BFight\\xe1\\u03CAf;\\uC000\\ud835\\udd43er\\u0100LR\\u0A22\\u0A2CeftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0A3E\\u0A40\\u0A42\\xf2\\u084C;\\u61B0rok;\\u4141;\\u626A\\u0400acefiosu\\u0A5A\\u0A5D\\u0A60\\u0A77\\u0A7C\\u0A85\\u0A8B\\u0A8Ep;\\u6905y;\\u441C\\u0100dl\\u0A65\\u0A6FiumSpace;\\u605Flintrf;\\u6133r;\\uC000\\ud835\\udd10nusPlus;\\u6213pf;\\uC000\\ud835\\udd44c\\xf2\\u0A76;\\u439C\\u0480Jacefostu\\u0AA3\\u0AA7\\u0AAD\\u0AC0\\u0B14\\u0B19\\u0D91\\u0D97\\u0D9Ecy;\\u440Acute;\\u4143\\u0180aey\\u0AB4\\u0AB9\\u0ABEron;\\u4147dil;\\u4145;\\u441D\\u0180gsw\\u0AC7\\u0AF0\\u0B0Eative\\u0180MTV\\u0AD3\\u0ADF\\u0AE8ediumSpace;\\u600Bhi\\u0100cn\\u0AE6\\u0AD8\\xeb\\u0AD9eryThi\\xee\\u0AD9ted\\u0100GL\\u0AF8\\u0B06reaterGreate\\xf2\\u0673essLes\\xf3\\u0A48Line;\\u400Ar;\\uC000\\ud835\\udd11\\u0200Bnpt\\u0B22\\u0B28\\u0B37\\u0B3Areak;\\u6060BreakingSpace;\\u40A0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0B55\\u0B56\\u0B6A\\u0B7C\\u0BA1\\u0BEB\\u0C04\\u0C5E\\u0C84\\u0CA6\\u0CD8\\u0D61\\u0D85\\u6AEC\\u0100ou\\u0B5B\\u0B64ngruent;\\u6262pCap;\\u626DoubleVerticalBar;\\u6226\\u0180lqx\\u0B83\\u0B8A\\u0B9Bement;\\u6209ual\\u0100;T\\u0B92\\u0B93\\u6260ilde;\\uC000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0BB6\\u0BB7\\u0BBD\\u0BC9\\u0BD3\\u0BD8\\u0BE5\\u626Fqual;\\u6271ullEqual;\\uC000\\u2267\\u0338reater;\\uC000\\u226B\\u0338ess;\\u6279lantEqual;\\uC000\\u2A7E\\u0338ilde;\\u6275ump\\u0144\\u0BF2\\u0BFDownHump;\\uC000\\u224E\\u0338qual;\\uC000\\u224F\\u0338e\\u0100fs\\u0C0A\\u0C27tTriangle\\u0180;BE\\u0C1A\\u0C1B\\u0C21\\u62EAar;\\uC000\\u29CF\\u0338qual;\\u62ECs\\u0300;EGLST\\u0C35\\u0C36\\u0C3C\\u0C44\\u0C4B\\u0C58\\u626Equal;\\u6270reater;\\u6278ess;\\uC000\\u226A\\u0338lantEqual;\\uC000\\u2A7D\\u0338ilde;\\u6274ested\\u0100GL\\u0C68\\u0C79reaterGreater;\\uC000\\u2AA2\\u0338essLess;\\uC000\\u2AA1\\u0338recedes\\u0180;ES\\u0C92\\u0C93\\u0C9B\\u6280qual;\\uC000\\u2AAF\\u0338lantEqual;\\u62E0\\u0100ei\\u0CAB\\u0CB9verseElement;\\u620CghtTriangle\\u0180;BE\\u0CCB\\u0CCC\\u0CD2\\u62EBar;\\uC000\\u29D0\\u0338qual;\\u62ED\\u0100qu\\u0CDD\\u0D0CuareSu\\u0100bp\\u0CE8\\u0CF9set\\u0100;E\\u0CF0\\u0CF3\\uC000\\u228F\\u0338qual;\\u62E2erset\\u0100;E\\u0D03\\u0D06\\uC000\\u2290\\u0338qual;\\u62E3\\u0180bcp\\u0D13\\u0D24\\u0D4Eset\\u0100;E\\u0D1B\\u0D1E\\uC000\\u2282\\u20D2qual;\\u6288ceeds\\u0200;EST\\u0D32\\u0D33\\u0D3B\\u0D46\\u6281qual;\\uC000\\u2AB0\\u0338lantEqual;\\u62E1ilde;\\uC000\\u227F\\u0338erset\\u0100;E\\u0D58\\u0D5B\\uC000\\u2283\\u20D2qual;\\u6289ilde\\u0200;EFT\\u0D6E\\u0D6F\\u0D75\\u0D7F\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uC000\\ud835\\udca9ilde\\u803B\\xd1\\u40D1;\\u439D\\u0700Eacdfgmoprstuv\\u0DBD\\u0DC2\\u0DC9\\u0DD5\\u0DDB\\u0DE0\\u0DE7\\u0DFC\\u0E02\\u0E20\\u0E22\\u0E32\\u0E3F\\u0E44lig;\\u4152cute\\u803B\\xd3\\u40D3\\u0100iy\\u0DCE\\u0DD3rc\\u803B\\xd4\\u40D4;\\u441Eblac;\\u4150r;\\uC000\\ud835\\udd12rave\\u803B\\xd2\\u40D2\\u0180aei\\u0DEE\\u0DF2\\u0DF6cr;\\u414Cga;\\u43A9cron;\\u439Fpf;\\uC000\\ud835\\udd46enCurly\\u0100DQ\\u0E0E\\u0E1AoubleQuote;\\u601Cuote;\\u6018;\\u6A54\\u0100cl\\u0E27\\u0E2Cr;\\uC000\\ud835\\udcaaash\\u803B\\xd8\\u40D8i\\u016C\\u0E37\\u0E3Cde\\u803B\\xd5\\u40D5es;\\u6A37ml\\u803B\\xd6\\u40D6er\\u0100BP\\u0E4B\\u0E60\\u0100ar\\u0E50\\u0E53r;\\u603Eac\\u0100ek\\u0E5A\\u0E5C;\\u63DEet;\\u63B4arenthesis;\\u63DC\\u0480acfhilors\\u0E7F\\u0E87\\u0E8A\\u0E8F\\u0E92\\u0E94\\u0E9D\\u0EB0\\u0EFCrtialD;\\u6202y;\\u441Fr;\\uC000\\ud835\\udd13i;\\u43A6;\\u43A0usMinus;\\u40B1\\u0100ip\\u0EA2\\u0EADncareplan\\xe5\\u069Df;\\u6119\\u0200;eio\\u0EB9\\u0EBA\\u0EE0\\u0EE4\\u6ABBcedes\\u0200;EST\\u0EC8\\u0EC9\\u0ECF\\u0EDA\\u627Aqual;\\u6AAFlantEqual;\\u627Cilde;\\u627Eme;\\u6033\\u0100dp\\u0EE9\\u0EEEuct;\\u620Fortion\\u0100;a\\u0225\\u0EF9l;\\u621D\\u0100ci\\u0F01\\u0F06r;\\uC000\\ud835\\udcab;\\u43A8\\u0200Ufos\\u0F11\\u0F16\\u0F1B\\u0F1FOT\\u803B\"\\u4022r;\\uC000\\ud835\\udd14pf;\\u611Acr;\\uC000\\ud835\\udcac\\u0600BEacefhiorsu\\u0F3E\\u0F43\\u0F47\\u0F60\\u0F73\\u0FA7\\u0FAA\\u0FAD\\u1096\\u10A9\\u10B4\\u10BEarr;\\u6910G\\u803B\\xae\\u40AE\\u0180cnr\\u0F4E\\u0F53\\u0F56ute;\\u4154g;\\u67EBr\\u0100;t\\u0F5C\\u0F5D\\u61A0l;\\u6916\\u0180aey\\u0F67\\u0F6C\\u0F71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0F78\\u0F79\\u611Cerse\\u0100EU\\u0F82\\u0F99\\u0100lq\\u0F87\\u0F8Eement;\\u620Builibrium;\\u61CBpEquilibrium;\\u696Fr\\xbb\\u0F79o;\\u43A1ght\\u0400ACDFTUVa\\u0FC1\\u0FEB\\u0FF3\\u1022\\u1028\\u105B\\u1087\\u03D8\\u0100nr\\u0FC6\\u0FD2gleBracket;\\u67E9row\\u0180;BL\\u0FDC\\u0FDD\\u0FE1\\u6192ar;\\u61E5eftArrow;\\u61C4eiling;\\u6309o\\u01F5\\u0FF9\\0\\u1005bleBracket;\\u67E7n\\u01D4\\u100A\\0\\u1014eeVector;\\u695Dector\\u0100;B\\u101D\\u101E\\u61C2ar;\\u6955loor;\\u630B\\u0100er\\u102D\\u1043e\\u0180;AV\\u1035\\u1036\\u103C\\u62A2rrow;\\u61A6ector;\\u695Biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62B3ar;\\u69D0qual;\\u62B5p\\u0180DTV\\u1063\\u106E\\u1078ownVector;\\u694FeeVector;\\u695Cector\\u0100;B\\u1082\\u1083\\u61BEar;\\u6954ector\\u0100;B\\u1091\\u1092\\u61C0ar;\\u6953\\u0100pu\\u109B\\u109Ef;\\u611DndImplies;\\u6970ightarrow;\\u61DB\\u0100ch\\u10B9\\u10BCr;\\u611B;\\u61B1leDelayed;\\u69F4\\u0680HOacfhimoqstu\\u10E4\\u10F1\\u10F7\\u10FD\\u1119\\u111E\\u1151\\u1156\\u1161\\u1167\\u11B5\\u11BB\\u11BF\\u0100Cc\\u10E9\\u10EEHcy;\\u4429y;\\u4428FTcy;\\u442Ccute;\\u415A\\u0280;aeiy\\u1108\\u1109\\u110E\\u1113\\u1117\\u6ABCron;\\u4160dil;\\u415Erc;\\u415C;\\u4421r;\\uC000\\ud835\\udd16ort\\u0200DLRU\\u112A\\u1134\\u113E\\u1149ownArrow\\xbb\\u041EeftArrow\\xbb\\u089AightArrow\\xbb\\u0FDDpArrow;\\u6191gma;\\u43A3allCircle;\\u6218pf;\\uC000\\ud835\\udd4a\\u0272\\u116D\\0\\0\\u1170t;\\u621Aare\\u0200;ISU\\u117B\\u117C\\u1189\\u11AF\\u65A1ntersection;\\u6293u\\u0100bp\\u118F\\u119Eset\\u0100;E\\u1197\\u1198\\u628Fqual;\\u6291erset\\u0100;E\\u11A8\\u11A9\\u6290qual;\\u6292nion;\\u6294cr;\\uC000\\ud835\\udcaear;\\u62C6\\u0200bcmp\\u11C8\\u11DB\\u1209\\u120B\\u0100;s\\u11CD\\u11CE\\u62D0et\\u0100;E\\u11CD\\u11D5qual;\\u6286\\u0100ch\\u11E0\\u1205eeds\\u0200;EST\\u11ED\\u11EE\\u11F4\\u11FF\\u627Bqual;\\u6AB0lantEqual;\\u627Dilde;\\u627FTh\\xe1\\u0F8C;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62D1rset\\u0100;E\\u121C\\u121D\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123E\\u1244\\u1249\\u1255\\u125E\\u1271\\u1276\\u129F\\u12C2\\u12C8\\u12D1ORN\\u803B\\xde\\u40DEADE;\\u6122\\u0100Hc\\u124E\\u1252cy;\\u440By;\\u4426\\u0100bu\\u125A\\u125C;\\u4009;\\u43A4\\u0180aey\\u1265\\u126A\\u126Fron;\\u4164dil;\\u4162;\\u4422r;\\uC000\\ud835\\udd17\\u0100ei\\u127B\\u1289\\u01F2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128E\\u1298kSpace;\\uC000\\u205F\\u200ASpace;\\u6009lde\\u0200;EFT\\u12AB\\u12AC\\u12B2\\u12BC\\u623Cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uC000\\ud835\\udd4bipleDot;\\u60DB\\u0100ct\\u12D6\\u12DBr;\\uC000\\ud835\\udcafrok;\\u4166\\u0AE1\\u12F7\\u130E\\u131A\\u1326\\0\\u132C\\u1331\\0\\0\\0\\0\\0\\u1338\\u133D\\u1377\\u1385\\0\\u13FF\\u1404\\u140A\\u1410\\u0100cr\\u12FB\\u1301ute\\u803B\\xda\\u40DAr\\u0100;o\\u1307\\u1308\\u619Fcir;\\u6949r\\u01E3\\u1313\\0\\u1316y;\\u440Eve;\\u416C\\u0100iy\\u131E\\u1323rc\\u803B\\xdb\\u40DB;\\u4423blac;\\u4170r;\\uC000\\ud835\\udd18rave\\u803B\\xd9\\u40D9acr;\\u416A\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135D\\u0100ar\\u134D\\u1350r;\\u405Fac\\u0100ek\\u1357\\u1359;\\u63DFet;\\u63B5arenthesis;\\u63DDon\\u0100;P\\u1370\\u1371\\u62C3lus;\\u628E\\u0100gp\\u137B\\u137Fon;\\u4172f;\\uC000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13AE\\u13B8\\u13C4\\u03E8\\u13D2\\u13D7\\u13F3rrow\\u0180;BD\\u1150\\u13A0\\u13A4ar;\\u6912ownArrow;\\u61C5ownArrow;\\u6195quilibrium;\\u696Eee\\u0100;A\\u13CB\\u13CC\\u62A5rrow;\\u61A5own\\xe1\\u03F3er\\u0100LR\\u13DE\\u13E8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13F9\\u13FA\\u43D2on;\\u43A5ing;\\u416Ecr;\\uC000\\ud835\\udcb0ilde;\\u4168ml\\u803B\\xdc\\u40DC\\u0480Dbcdefosv\\u1427\\u142C\\u1430\\u1433\\u143E\\u1485\\u148A\\u1490\\u1496ash;\\u62ABar;\\u6AEBy;\\u4412ash\\u0100;l\\u143B\\u143C\\u62A9;\\u6AE6\\u0100er\\u1443\\u1445;\\u62C1\\u0180bty\\u144C\\u1450\\u147Aar;\\u6016\\u0100;i\\u144F\\u1455cal\\u0200BLST\\u1461\\u1465\\u146A\\u1474ar;\\u6223ine;\\u407Ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600Ar;\\uC000\\ud835\\udd19pf;\\uC000\\ud835\\udd4dcr;\\uC000\\ud835\\udcb1dash;\\u62AA\\u0280cefos\\u14A7\\u14AC\\u14B1\\u14B6\\u14BCirc;\\u4174dge;\\u62C0r;\\uC000\\ud835\\udd1apf;\\uC000\\ud835\\udd4ecr;\\uC000\\ud835\\udcb2\\u0200fios\\u14CB\\u14D0\\u14D2\\u14D8r;\\uC000\\ud835\\udd1b;\\u439Epf;\\uC000\\ud835\\udd4fcr;\\uC000\\ud835\\udcb3\\u0480AIUacfosu\\u14F1\\u14F5\\u14F9\\u14FD\\u1504\\u150F\\u1514\\u151A\\u1520cy;\\u442Fcy;\\u4407cy;\\u442Ecute\\u803B\\xdd\\u40DD\\u0100iy\\u1509\\u150Drc;\\u4176;\\u442Br;\\uC000\\ud835\\udd1cpf;\\uC000\\ud835\\udd50cr;\\uC000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153F\\u154B\\u154F\\u155D\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417D;\\u4417ot;\\u417B\\u01F2\\u1554\\0\\u155BoWidt\\xe8\\u0AD9a;\\u4396r;\\u6128pf;\\u6124cr;\\uC000\\ud835\\udcb5\\u0BE1\\u1583\\u158A\\u1590\\0\\u15B0\\u15B6\\u15BF\\0\\0\\0\\0\\u15C6\\u15DB\\u15EB\\u165F\\u166D\\0\\u1695\\u169B\\u16B2\\u16B9\\0\\u16BEcute\\u803B\\xe1\\u40E1reve;\\u4103\\u0300;Ediuy\\u159C\\u159D\\u15A1\\u15A3\\u15A8\\u15AD\\u623E;\\uC000\\u223E\\u0333;\\u623Frc\\u803B\\xe2\\u40E2te\\u80BB\\xb4\\u0306;\\u4430lig\\u803B\\xe6\\u40E6\\u0100;r\\xb2\\u15BA;\\uC000\\ud835\\udd1erave\\u803B\\xe0\\u40E0\\u0100ep\\u15CA\\u15D6\\u0100fp\\u15CF\\u15D4sym;\\u6135\\xe8\\u15D3ha;\\u43B1\\u0100ap\\u15DFc\\u0100cl\\u15E4\\u15E7r;\\u4101g;\\u6A3F\\u0264\\u15F0\\0\\0\\u160A\\u0280;adsv\\u15FA\\u15FB\\u15FF\\u1601\\u1607\\u6227nd;\\u6A55;\\u6A5Clope;\\u6A58;\\u6A5A\\u0380;elmrsz\\u1618\\u1619\\u161B\\u161E\\u163F\\u164F\\u1659\\u6220;\\u69A4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163A\\u163C\\u163E;\\u69A8;\\u69A9;\\u69AA;\\u69AB;\\u69AC;\\u69AD;\\u69AE;\\u69AFt\\u0100;v\\u1645\\u1646\\u621Fb\\u0100;d\\u164C\\u164D\\u62BE;\\u699D\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637C\\u0100gp\\u1663\\u1667on;\\u4105f;\\uC000\\ud835\\udd52\\u0380;Eaeiop\\u12C1\\u167B\\u167D\\u1682\\u1684\\u1687\\u168A;\\u6A70cir;\\u6A6F;\\u624Ad;\\u624Bs;\\u4027rox\\u0100;e\\u12C1\\u1692\\xf1\\u1683ing\\u803B\\xe5\\u40E5\\u0180cty\\u16A1\\u16A6\\u16A8r;\\uC000\\ud835\\udcb6;\\u402Amp\\u0100;e\\u12C1\\u16AF\\xf1\\u0288ilde\\u803B\\xe3\\u40E3ml\\u803B\\xe4\\u40E4\\u0100ci\\u16C2\\u16C8onin\\xf4\\u0272nt;\\u6A11\\u0800Nabcdefiklnoprsu\\u16ED\\u16F1\\u1730\\u173C\\u1743\\u1748\\u1778\\u177D\\u17E0\\u17E6\\u1839\\u1850\\u170D\\u193D\\u1948\\u1970ot;\\u6AED\\u0100cr\\u16F6\\u171Ek\\u0200ceps\\u1700\\u1705\\u170D\\u1713ong;\\u624Cpsilon;\\u43F6rime;\\u6035im\\u0100;e\\u171A\\u171B\\u623Dq;\\u62CD\\u0176\\u1722\\u1726ee;\\u62BDed\\u0100;g\\u172C\\u172D\\u6305e\\xbb\\u172Drk\\u0100;t\\u135C\\u1737brk;\\u63B6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601E\\u0280cmprt\\u1753\\u175B\\u1761\\u1764\\u1768aus\\u0100;e\\u010A\\u0109ptyv;\\u69B0s\\xe9\\u170Cno\\xf5\\u0113\\u0180ahw\\u176F\\u1771\\u1773;\\u43B2;\\u6136een;\\u626Cr;\\uC000\\ud835\\udd1fg\\u0380costuvw\\u178D\\u179D\\u17B3\\u17C1\\u17D5\\u17DB\\u17DE\\u0180aiu\\u1794\\u1796\\u179A\\xf0\\u0760rc;\\u65EFp\\xbb\\u1371\\u0180dpt\\u17A4\\u17A8\\u17ADot;\\u6A00lus;\\u6A01imes;\\u6A02\\u0271\\u17B9\\0\\0\\u17BEcup;\\u6A06ar;\\u6605riangle\\u0100du\\u17CD\\u17D2own;\\u65BDp;\\u65B3plus;\\u6A04e\\xe5\\u1444\\xe5\\u14ADarow;\\u690D\\u0180ako\\u17ED\\u1826\\u1835\\u0100cn\\u17F2\\u1823k\\u0180lst\\u17FA\\u05AB\\u1802ozenge;\\u69EBriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181D\\u65B4own;\\u65BEeft;\\u65C2ight;\\u65B8k;\\u6423\\u01B1\\u182B\\0\\u1833\\u01B2\\u182F\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183E\\u184D\\u0100;q\\u1843\\u1846\\uC000=\\u20E5uiv;\\uC000\\u2261\\u20E5t;\\u6310\\u0200ptwx\\u1859\\u185E\\u1867\\u186Cf;\\uC000\\ud835\\udd53\\u0100;t\\u13CB\\u1863om\\xbb\\u13CCtie;\\u62C8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18AA\\u18BB\\u18D7\\u18DB\\u18EC\\u18FF\\u1905\\u190A\\u1910\\u1921\\u0200LRlr\\u188E\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18A1\\u18A2\\u18A4\\u18A6\\u18A8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18B3\\u18B5\\u18B7\\u18B9;\\u655D;\\u655A;\\u655C;\\u6559\\u0380;HLRhlr\\u18CA\\u18CB\\u18CD\\u18CF\\u18D1\\u18D3\\u18D5\\u6551;\\u656C;\\u6563;\\u6560;\\u656B;\\u6562;\\u655Fox;\\u69C9\\u0200LRlr\\u18E4\\u18E6\\u18E8\\u18EA;\\u6555;\\u6552;\\u6510;\\u650C\\u0280;DUdu\\u06BD\\u18F7\\u18F9\\u18FB\\u18FD;\\u6565;\\u6568;\\u652C;\\u6534inus;\\u629Flus;\\u629Eimes;\\u62A0\\u0200LRlr\\u1919\\u191B\\u191D\\u191F;\\u655B;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193B\\u6502;\\u656A;\\u6561;\\u655E;\\u653C;\\u6524;\\u651C\\u0100ev\\u0123\\u1942bar\\u803B\\xa6\\u40A6\\u0200ceio\\u1951\\u1956\\u195A\\u1960r;\\uC000\\ud835\\udcb7mi;\\u604Fm\\u0100;e\\u171A\\u171Cl\\u0180;bh\\u1968\\u1969\\u196B\\u405C;\\u69C5sub;\\u67C8\\u016C\\u1974\\u197El\\u0100;e\\u1979\\u197A\\u6022t\\xbb\\u197Ap\\u0180;Ee\\u012F\\u1985\\u1987;\\u6AAE\\u0100;q\\u06DC\\u06DB\\u0CE1\\u19A7\\0\\u19E8\\u1A11\\u1A15\\u1A32\\0\\u1A37\\u1A50\\0\\0\\u1AB4\\0\\0\\u1AC1\\0\\0\\u1B21\\u1B2E\\u1B4D\\u1B52\\0\\u1BFD\\0\\u1C0C\\u0180cpr\\u19AD\\u19B2\\u19DDute;\\u4107\\u0300;abcds\\u19BF\\u19C0\\u19C4\\u19CA\\u19D5\\u19D9\\u6229nd;\\u6A44rcup;\\u6A49\\u0100au\\u19CF\\u19D2p;\\u6A4Bp;\\u6A47ot;\\u6A40;\\uC000\\u2229\\uFE00\\u0100eo\\u19E2\\u19E5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19F0\\u19FB\\u1A01\\u1A05\\u01F0\\u19F5\\0\\u19F8s;\\u6A4Don;\\u410Ddil\\u803B\\xe7\\u40E7rc;\\u4109ps\\u0100;s\\u1A0C\\u1A0D\\u6A4Cm;\\u6A50ot;\\u410B\\u0180dmn\\u1A1B\\u1A20\\u1A26il\\u80BB\\xb8\\u01ADptyv;\\u69B2t\\u8100\\xa2;e\\u1A2D\\u1A2E\\u40A2r\\xe4\\u01B2r;\\uC000\\ud835\\udd20\\u0180cei\\u1A3D\\u1A40\\u1A4Dy;\\u4447ck\\u0100;m\\u1A47\\u1A48\\u6713ark\\xbb\\u1A48;\\u43C7r\\u0380;Ecefms\\u1A5F\\u1A60\\u1A62\\u1A6B\\u1AA4\\u1AAA\\u1AAE\\u65CB;\\u69C3\\u0180;el\\u1A69\\u1A6A\\u1A6D\\u42C6q;\\u6257e\\u0261\\u1A74\\0\\0\\u1A88rrow\\u0100lr\\u1A7C\\u1A81eft;\\u61BAight;\\u61BB\\u0280RSacd\\u1A92\\u1A94\\u1A96\\u1A9A\\u1A9F\\xbb\\u0F47;\\u64C8st;\\u629Birc;\\u629Aash;\\u629Dnint;\\u6A10id;\\u6AEFcir;\\u69C2ubs\\u0100;u\\u1ABB\\u1ABC\\u6663it\\xbb\\u1ABC\\u02EC\\u1AC7\\u1AD4\\u1AFA\\0\\u1B0Aon\\u0100;e\\u1ACD\\u1ACE\\u403A\\u0100;q\\xc7\\xc6\\u026D\\u1AD9\\0\\0\\u1AE2a\\u0100;t\\u1ADE\\u1ADF\\u402C;\\u4040\\u0180;fl\\u1AE8\\u1AE9\\u1AEB\\u6201\\xee\\u1160e\\u0100mx\\u1AF1\\u1AF6ent\\xbb\\u1AE9e\\xf3\\u024D\\u01E7\\u1AFE\\0\\u1B07\\u0100;d\\u12BB\\u1B02ot;\\u6A6Dn\\xf4\\u0246\\u0180fry\\u1B10\\u1B14\\u1B17;\\uC000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1B1Dr;\\u6117\\u0100ao\\u1B25\\u1B29rr;\\u61B5ss;\\u6717\\u0100cu\\u1B32\\u1B37r;\\uC000\\ud835\\udcb8\\u0100bp\\u1B3C\\u1B44\\u0100;e\\u1B41\\u1B42\\u6ACF;\\u6AD1\\u0100;e\\u1B49\\u1B4A\\u6AD0;\\u6AD2dot;\\u62EF\\u0380delprvw\\u1B60\\u1B6C\\u1B77\\u1B82\\u1BAC\\u1BD4\\u1BF9arr\\u0100lr\\u1B68\\u1B6A;\\u6938;\\u6935\\u0270\\u1B72\\0\\0\\u1B75r;\\u62DEc;\\u62DFarr\\u0100;p\\u1B7F\\u1B80\\u61B6;\\u693D\\u0300;bcdos\\u1B8F\\u1B90\\u1B96\\u1BA1\\u1BA5\\u1BA8\\u622Arcap;\\u6A48\\u0100au\\u1B9B\\u1B9Ep;\\u6A46p;\\u6A4Aot;\\u628Dr;\\u6A45;\\uC000\\u222A\\uFE00\\u0200alrv\\u1BB5\\u1BBF\\u1BDE\\u1BE3rr\\u0100;m\\u1BBC\\u1BBD\\u61B7;\\u693Cy\\u0180evw\\u1BC7\\u1BD4\\u1BD8q\\u0270\\u1BCE\\0\\0\\u1BD2re\\xe3\\u1B73u\\xe3\\u1B75ee;\\u62CEedge;\\u62CFen\\u803B\\xa4\\u40A4earrow\\u0100lr\\u1BEE\\u1BF3eft\\xbb\\u1B80ight\\xbb\\u1BBDe\\xe4\\u1BDD\\u0100ci\\u1C01\\u1C07onin\\xf4\\u01F7nt;\\u6231lcty;\\u632D\\u0980AHabcdefhijlorstuwz\\u1C38\\u1C3B\\u1C3F\\u1C5D\\u1C69\\u1C75\\u1C8A\\u1C9E\\u1CAC\\u1CB7\\u1CFB\\u1CFF\\u1D0D\\u1D7B\\u1D91\\u1DAB\\u1DBB\\u1DC6\\u1DCDr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1C48\\u1C4D\\u1C52\\u1C54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1C5A\\u1C5B\\u6010\\xbb\\u090A\\u016B\\u1C61\\u1C67arow;\\u690Fa\\xe3\\u0315\\u0100ay\\u1C6E\\u1C73ron;\\u410F;\\u4434\\u0180;ao\\u0332\\u1C7C\\u1C84\\u0100gr\\u02BF\\u1C81r;\\u61CAtseq;\\u6A77\\u0180glm\\u1C91\\u1C94\\u1C98\\u803B\\xb0\\u40B0ta;\\u43B4ptyv;\\u69B1\\u0100ir\\u1CA3\\u1CA8sht;\\u697F;\\uC000\\ud835\\udd21ar\\u0100lr\\u1CB3\\u1CB5\\xbb\\u08DC\\xbb\\u101E\\u0280aegsv\\u1CC2\\u0378\\u1CD6\\u1CDC\\u1CE0m\\u0180;os\\u0326\\u1CCA\\u1CD4nd\\u0100;s\\u0326\\u1CD1uit;\\u6666amma;\\u43DDin;\\u62F2\\u0180;io\\u1CE7\\u1CE8\\u1CF8\\u40F7de\\u8100\\xf7;o\\u1CE7\\u1CF0ntimes;\\u62C7n\\xf8\\u1CF7cy;\\u4452c\\u026F\\u1D06\\0\\0\\u1D0Arn;\\u631Eop;\\u630D\\u0280lptuw\\u1D18\\u1D1D\\u1D22\\u1D49\\u1D55lar;\\u4024f;\\uC000\\ud835\\udd55\\u0280;emps\\u030B\\u1D2D\\u1D37\\u1D3D\\u1D42q\\u0100;d\\u0352\\u1D33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62A1blebarwedg\\xe5\\xfan\\u0180adh\\u112E\\u1D5D\\u1D67ownarrow\\xf3\\u1C83arpoon\\u0100lr\\u1D72\\u1D76ef\\xf4\\u1CB4igh\\xf4\\u1CB6\\u0162\\u1D7F\\u1D85karo\\xf7\\u0F42\\u026F\\u1D8A\\0\\0\\u1D8Ern;\\u631Fop;\\u630C\\u0180cot\\u1D98\\u1DA3\\u1DA6\\u0100ry\\u1D9D\\u1DA1;\\uC000\\ud835\\udcb9;\\u4455l;\\u69F6rok;\\u4111\\u0100dr\\u1DB0\\u1DB4ot;\\u62F1i\\u0100;f\\u1DBA\\u1816\\u65BF\\u0100ah\\u1DC0\\u1DC3r\\xf2\\u0429a\\xf2\\u0FA6angle;\\u69A6\\u0100ci\\u1DD2\\u1DD5y;\\u445Fgrarr;\\u67FF\\u0900Dacdefglmnopqrstux\\u1E01\\u1E09\\u1E19\\u1E38\\u0578\\u1E3C\\u1E49\\u1E61\\u1E7E\\u1EA5\\u1EAF\\u1EBD\\u1EE1\\u1F2A\\u1F37\\u1F44\\u1F4E\\u1F5A\\u0100Do\\u1E06\\u1D34o\\xf4\\u1C89\\u0100cs\\u1E0E\\u1E14ute\\u803B\\xe9\\u40E9ter;\\u6A6E\\u0200aioy\\u1E22\\u1E27\\u1E31\\u1E36ron;\\u411Br\\u0100;c\\u1E2D\\u1E2E\\u6256\\u803B\\xea\\u40EAlon;\\u6255;\\u444Dot;\\u4117\\u0100Dr\\u1E41\\u1E45ot;\\u6252;\\uC000\\ud835\\udd22\\u0180;rs\\u1E50\\u1E51\\u1E57\\u6A9Aave\\u803B\\xe8\\u40E8\\u0100;d\\u1E5C\\u1E5D\\u6A96ot;\\u6A98\\u0200;ils\\u1E6A\\u1E6B\\u1E72\\u1E74\\u6A99nters;\\u63E7;\\u6113\\u0100;d\\u1E79\\u1E7A\\u6A95ot;\\u6A97\\u0180aps\\u1E85\\u1E89\\u1E97cr;\\u4113ty\\u0180;sv\\u1E92\\u1E93\\u1E95\\u6205et\\xbb\\u1E93p\\u01001;\\u1E9D\\u1EA4\\u0133\\u1EA1\\u1EA3;\\u6004;\\u6005\\u6003\\u0100gs\\u1EAA\\u1EAC;\\u414Bp;\\u6002\\u0100gp\\u1EB4\\u1EB8on;\\u4119f;\\uC000\\ud835\\udd56\\u0180als\\u1EC4\\u1ECE\\u1ED2r\\u0100;s\\u1ECA\\u1ECB\\u62D5l;\\u69E3us;\\u6A71i\\u0180;lv\\u1EDA\\u1EDB\\u1EDF\\u43B5on\\xbb\\u1EDB;\\u43F5\\u0200csuv\\u1EEA\\u1EF3\\u1F0B\\u1F23\\u0100io\\u1EEF\\u1E31rc\\xbb\\u1E2E\\u0269\\u1EF9\\0\\0\\u1EFB\\xed\\u0548ant\\u0100gl\\u1F02\\u1F06tr\\xbb\\u1E5Dess\\xbb\\u1E7A\\u0180aei\\u1F12\\u1F16\\u1F1Als;\\u403Dst;\\u625Fv\\u0100;D\\u0235\\u1F20D;\\u6A78parsl;\\u69E5\\u0100Da\\u1F2F\\u1F33ot;\\u6253rr;\\u6971\\u0180cdi\\u1F3E\\u1F41\\u1EF8r;\\u612Fo\\xf4\\u0352\\u0100ah\\u1F49\\u1F4B;\\u43B7\\u803B\\xf0\\u40F0\\u0100mr\\u1F53\\u1F57l\\u803B\\xeb\\u40EBo;\\u60AC\\u0180cip\\u1F61\\u1F64\\u1F67l;\\u4021s\\xf4\\u056E\\u0100eo\\u1F6C\\u1F74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09E1\\u1F92\\0\\u1F9E\\0\\u1FA1\\u1FA7\\0\\0\\u1FC6\\u1FCC\\0\\u1FD3\\0\\u1FE6\\u1FEA\\u2000\\0\\u2008\\u205Allingdotse\\xf1\\u1E44y;\\u4444male;\\u6640\\u0180ilr\\u1FAD\\u1FB3\\u1FC1lig;\\u8000\\uFB03\\u0269\\u1FB9\\0\\0\\u1FBDg;\\u8000\\uFB00ig;\\u8000\\uFB04;\\uC000\\ud835\\udd23lig;\\u8000\\uFB01lig;\\uC000fj\\u0180alt\\u1FD9\\u1FDC\\u1FE1t;\\u666Dig;\\u8000\\uFB02ns;\\u65B1of;\\u4192\\u01F0\\u1FEE\\0\\u1FF3f;\\uC000\\ud835\\udd57\\u0100ak\\u05BF\\u1FF7\\u0100;v\\u1FFC\\u1FFD\\u62D4;\\u6AD9artint;\\u6A0D\\u0100ao\\u200C\\u2055\\u0100cs\\u2011\\u2052\\u03B1\\u201A\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03B2\\u2022\\u2025\\u2027\\u202A\\u202C\\0\\u202E\\u803B\\xbd\\u40BD;\\u6153\\u803B\\xbc\\u40BC;\\u6155;\\u6159;\\u615B\\u01B3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02B4\\u203E\\u2041\\0\\0\\u2043\\u803B\\xbe\\u40BE;\\u6157;\\u615C5;\\u6158\\u01B6\\u204C\\0\\u204E;\\u615A;\\u615D8;\\u615El;\\u6044wn;\\u6322cr;\\uC000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209F\\u20A5\\u20B0\\u20B4\\u20F0\\u20F5\\u20FA\\u20FF\\u2103\\u2112\\u2138\\u0317\\u213E\\u2152\\u219E\\u0100;l\\u064D\\u2087;\\u6A8C\\u0180cmp\\u2090\\u2095\\u209Dute;\\u41F5ma\\u0100;d\\u209C\\u1CDA\\u43B3;\\u6A86reve;\\u411F\\u0100iy\\u20AA\\u20AErc;\\u411D;\\u4433ot;\\u4121\\u0200;lqs\\u063E\\u0642\\u20BD\\u20C9\\u0180;qs\\u063E\\u064C\\u20C4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20D2\\u20D5\\u20E5c;\\u6AA9ot\\u0100;o\\u20DC\\u20DD\\u6A80\\u0100;l\\u20E2\\u20E3\\u6A82;\\u6A84\\u0100;e\\u20EA\\u20ED\\uC000\\u22DB\\uFE00s;\\u6A94r;\\uC000\\ud835\\udd24\\u0100;g\\u0673\\u061Bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065A\\u210C\\u210E\\u2110;\\u6A92;\\u6AA5;\\u6AA4\\u0200Eaes\\u211B\\u211D\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6A8Arox\\xbb\\u2124\\u0100;q\\u212E\\u212F\\u6A88\\u0100;q\\u212E\\u211Bim;\\u62E7pf;\\uC000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610Am\\u0180;el\\u066B\\u214E\\u2150;\\u6A8E;\\u6A90\\u8300>;cdlqr\\u05EE\\u2160\\u216A\\u216E\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6AA7r;\\u6A7Aot;\\u62D7Par;\\u6995uest;\\u6A7C\\u0280adels\\u2184\\u216A\\u2190\\u0656\\u219B\\u01F0\\u2189\\0\\u218Epro\\xf8\\u209Er;\\u6978q\\u0100lq\\u063F\\u2196les\\xf3\\u2088i\\xed\\u066B\\u0100en\\u21A3\\u21ADrtneqq;\\uC000\\u2269\\uFE00\\xc5\\u21AA\\u0500Aabcefkosy\\u21C4\\u21C7\\u21F1\\u21F5\\u21FA\\u2218\\u221D\\u222F\\u2268\\u227Dr\\xf2\\u03A0\\u0200ilmr\\u21D0\\u21D4\\u21D7\\u21DBrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06A9\\u0100dr\\u21E0\\u21E4cy;\\u444A\\u0180;cw\\u08F4\\u21EB\\u21EFir;\\u6948;\\u61ADar;\\u610Firc;\\u4125\\u0180alr\\u2201\\u220E\\u2213rts\\u0100;u\\u2209\\u220A\\u6665it\\xbb\\u220Alip;\\u6026con;\\u62B9r;\\uC000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223A\\u223E\\u2243\\u225E\\u2263rr;\\u61FFtht;\\u623Bk\\u0100lr\\u2249\\u2253eftarrow;\\u61A9ightarrow;\\u61AAf;\\uC000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226F\\u2274\\u2278r;\\uC000\\ud835\\udcbdas\\xe8\\u21F4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1C5B\\u0AE1\\u22A3\\0\\u22AA\\0\\u22B8\\u22C5\\u22CE\\0\\u22D5\\u22F3\\0\\0\\u22F8\\u2322\\u2367\\u2362\\u237F\\0\\u2386\\u23AA\\u23B4cute\\u803B\\xed\\u40ED\\u0180;iy\\u0771\\u22B0\\u22B5rc\\u803B\\xee\\u40EE;\\u4438\\u0100cx\\u22BC\\u22BFy;\\u4435cl\\u803B\\xa1\\u40A1\\u0100fr\\u039F\\u22C9;\\uC000\\ud835\\udd26rave\\u803B\\xec\\u40EC\\u0200;ino\\u073E\\u22DD\\u22E9\\u22EE\\u0100in\\u22E2\\u22E6nt;\\u6A0Ct;\\u622Dfin;\\u69DCta;\\u6129lig;\\u4133\\u0180aop\\u22FE\\u231A\\u231D\\u0180cgt\\u2305\\u2308\\u2317r;\\u412B\\u0180elp\\u071F\\u230F\\u2313in\\xe5\\u078Ear\\xf4\\u0720h;\\u4131f;\\u62B7ed;\\u41B5\\u0280;cfot\\u04F4\\u232C\\u2331\\u233D\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621Eie;\\u69DDdo\\xf4\\u2319\\u0280;celp\\u0757\\u234C\\u2350\\u235B\\u2361al;\\u62BA\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234Darhk;\\u6A17rod;\\u6A3C\\u0200cgpt\\u236F\\u2372\\u2376\\u237By;\\u4451on;\\u412Ff;\\uC000\\ud835\\udd5aa;\\u43B9uest\\u803B\\xbf\\u40BF\\u0100ci\\u238A\\u238Fr;\\uC000\\ud835\\udcben\\u0280;Edsv\\u04F4\\u239B\\u239D\\u23A1\\u04F3;\\u62F9ot;\\u62F5\\u0100;v\\u23A6\\u23A7\\u62F4;\\u62F3\\u0100;i\\u0777\\u23AElde;\\u4129\\u01EB\\u23B8\\0\\u23BCcy;\\u4456l\\u803B\\xef\\u40EF\\u0300cfmosu\\u23CC\\u23D7\\u23DC\\u23E1\\u23E7\\u23F5\\u0100iy\\u23D1\\u23D5rc;\\u4135;\\u4439r;\\uC000\\ud835\\udd27ath;\\u4237pf;\\uC000\\ud835\\udd5b\\u01E3\\u23EC\\0\\u23F1r;\\uC000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240B\\u2416\\u2422\\u2427\\u242D\\u2431\\u2435\\u243Bppa\\u0100;v\\u2413\\u2414\\u43BA;\\u43F0\\u0100ey\\u241B\\u2420dil;\\u4137;\\u443Ar;\\uC000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445Cpf;\\uC000\\ud835\\udd5ccr;\\uC000\\ud835\\udcc0\\u0B80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248D\\u2491\\u250E\\u253D\\u255A\\u2580\\u264E\\u265E\\u2665\\u2679\\u267D\\u269A\\u26B2\\u26D8\\u275D\\u2768\\u278B\\u27C0\\u2801\\u2812\\u0180art\\u2477\\u247A\\u247Cr\\xf2\\u09C6\\xf2\\u0395ail;\\u691Barr;\\u690E\\u0100;g\\u0994\\u248B;\\u6A8Bar;\\u6962\\u0963\\u24A5\\0\\u24AA\\0\\u24B1\\0\\0\\0\\0\\0\\u24B5\\u24BA\\0\\u24C6\\u24C8\\u24CD\\0\\u24F9ute;\\u413Amptyv;\\u69B4ra\\xee\\u084Cbda;\\u43BBg\\u0180;dl\\u088E\\u24C1\\u24C3;\\u6991\\xe5\\u088E;\\u6A85uo\\u803B\\xab\\u40ABr\\u0400;bfhlpst\\u0899\\u24DE\\u24E6\\u24E9\\u24EB\\u24EE\\u24F1\\u24F5\\u0100;f\\u089D\\u24E3s;\\u691Fs;\\u691D\\xeb\\u2252p;\\u61ABl;\\u6939im;\\u6973l;\\u61A2\\u0180;ae\\u24FF\\u2500\\u2504\\u6AABil;\\u6919\\u0100;s\\u2509\\u250A\\u6AAD;\\uC000\\u2AAD\\uFE00\\u0180abr\\u2515\\u2519\\u251Drr;\\u690Crk;\\u6772\\u0100ak\\u2522\\u252Cc\\u0100ek\\u2528\\u252A;\\u407B;\\u405B\\u0100es\\u2531\\u2533;\\u698Bl\\u0100du\\u2539\\u253B;\\u698F;\\u698D\\u0200aeuy\\u2546\\u254B\\u2556\\u2558ron;\\u413E\\u0100di\\u2550\\u2554il;\\u413C\\xec\\u08B0\\xe2\\u2529;\\u443B\\u0200cqrs\\u2563\\u2566\\u256D\\u257Da;\\u6936uo\\u0100;r\\u0E19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694Bh;\\u61B2\\u0280;fgqs\\u258B\\u258C\\u0989\\u25F3\\u25FF\\u6264t\\u0280ahlrt\\u2598\\u25A4\\u25B7\\u25C2\\u25E8rrow\\u0100;t\\u0899\\u25A1a\\xe9\\u24F6arpoon\\u0100du\\u25AF\\u25B4own\\xbb\\u045Ap\\xbb\\u0966eftarrows;\\u61C7ight\\u0180ahs\\u25CD\\u25D6\\u25DErrow\\u0100;s\\u08F4\\u08A7arpoon\\xf3\\u0F98quigarro\\xf7\\u21F0hreetimes;\\u62CB\\u0180;qs\\u258B\\u0993\\u25FAlan\\xf4\\u09AC\\u0280;cdgs\\u09AC\\u260A\\u260D\\u261D\\u2628c;\\u6AA8ot\\u0100;o\\u2614\\u2615\\u6A7F\\u0100;r\\u261A\\u261B\\u6A81;\\u6A83\\u0100;e\\u2622\\u2625\\uC000\\u22DA\\uFE00s;\\u6A93\\u0280adegs\\u2633\\u2639\\u263D\\u2649\\u264Bppro\\xf8\\u24C6ot;\\u62D6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248C\\xf4\\u099Bi\\xed\\u09B2\\u0180ilr\\u2655\\u08E1\\u265Asht;\\u697C;\\uC000\\ud835\\udd29\\u0100;E\\u099C\\u2663;\\u6A91\\u0161\\u2669\\u2676r\\u0100du\\u25B2\\u266E\\u0100;l\\u0965\\u2673;\\u696Alk;\\u6584cy;\\u4459\\u0280;acht\\u0A48\\u2688\\u268B\\u2691\\u2696r\\xf2\\u25C1orne\\xf2\\u1D08ard;\\u696Bri;\\u65FA\\u0100io\\u269F\\u26A4dot;\\u4140ust\\u0100;a\\u26AC\\u26AD\\u63B0che\\xbb\\u26AD\\u0200Eaes\\u26BB\\u26BD\\u26C9\\u26D4;\\u6268p\\u0100;p\\u26C3\\u26C4\\u6A89rox\\xbb\\u26C4\\u0100;q\\u26CE\\u26CF\\u6A87\\u0100;q\\u26CE\\u26BBim;\\u62E6\\u0400abnoptwz\\u26E9\\u26F4\\u26F7\\u271A\\u272F\\u2741\\u2747\\u2750\\u0100nr\\u26EE\\u26F1g;\\u67ECr;\\u61FDr\\xeb\\u08C1g\\u0180lmr\\u26FF\\u270D\\u2714eft\\u0100ar\\u09E6\\u2707ight\\xe1\\u09F2apsto;\\u67FCight\\xe1\\u09FDparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24EDight;\\u61AC\\u0180afl\\u2736\\u2739\\u273Dr;\\u6985;\\uC000\\ud835\\udd5dus;\\u6A2Dimes;\\u6A34\\u0161\\u274B\\u274Fst;\\u6217\\xe1\\u134E\\u0180;ef\\u2757\\u2758\\u1800\\u65CAnge\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277C\\u2785\\u2787r\\xf2\\u08A8orne\\xf2\\u1D8Car\\u0100;d\\u0F98\\u2783;\\u696D;\\u600Eri;\\u62BF\\u0300achiqt\\u2798\\u279D\\u0A40\\u27A2\\u27AE\\u27BBquo;\\u6039r;\\uC000\\ud835\\udcc1m\\u0180;eg\\u09B2\\u27AA\\u27AC;\\u6A8D;\\u6A8F\\u0100bu\\u252A\\u27B3o\\u0100;r\\u0E1F\\u27B9;\\u601Arok;\\u4142\\u8400<;cdhilqr\\u082B\\u27D2\\u2639\\u27DC\\u27E0\\u27E5\\u27EA\\u27F0\\u0100ci\\u27D7\\u27D9;\\u6AA6r;\\u6A79re\\xe5\\u25F2mes;\\u62C9arr;\\u6976uest;\\u6A7B\\u0100Pi\\u27F5\\u27F9ar;\\u6996\\u0180;ef\\u2800\\u092D\\u181B\\u65C3r\\u0100du\\u2807\\u280Dshar;\\u694Ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uC000\\u2268\\uFE00\\xc5\\u281E\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288E\\u2893\\u28A0\\u28A5\\u28A8\\u28DA\\u28E2\\u28E4\\u0A83\\u28F3\\u2902Dot;\\u623A\\u0200clpr\\u284E\\u2852\\u2863\\u287Dr\\u803B\\xaf\\u40AF\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285E\\u285F\\u6720se\\xbb\\u285F\\u0100;s\\u103B\\u2868to\\u0200;dlu\\u103B\\u2873\\u2877\\u287Bow\\xee\\u048Cef\\xf4\\u090F\\xf0\\u13D1ker;\\u65AE\\u0100oy\\u2887\\u288Cmma;\\u6A29;\\u443Cash;\\u6014asuredangle\\xbb\\u1626r;\\uC000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28AF\\u28B4\\u28C9ro\\u803B\\xb5\\u40B5\\u0200;acd\\u1464\\u28BD\\u28C0\\u28C4s\\xf4\\u16A7ir;\\u6AF0ot\\u80BB\\xb7\\u01B5us\\u0180;bd\\u28D2\\u1903\\u28D3\\u6212\\u0100;u\\u1D3C\\u28D8;\\u6A2A\\u0163\\u28DE\\u28E1p;\\u6ADB\\xf2\\u2212\\xf0\\u0A81\\u0100dp\\u28E9\\u28EEels;\\u62A7f;\\uC000\\ud835\\udd5e\\u0100ct\\u28F8\\u28FDr;\\uC000\\ud835\\udcc2pos\\xbb\\u159D\\u0180;lm\\u2909\\u290A\\u290D\\u43BCtimap;\\u62B8\\u0C00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297E\\u2989\\u2998\\u29DA\\u29E9\\u2A15\\u2A1A\\u2A58\\u2A5D\\u2A83\\u2A95\\u2AA4\\u2AA8\\u2B04\\u2B07\\u2B44\\u2B7F\\u2BAE\\u2C34\\u2C67\\u2C7C\\u2CE9\\u0100gt\\u2947\\u294B;\\uC000\\u22D9\\u0338\\u0100;v\\u2950\\u0BCF\\uC000\\u226B\\u20D2\\u0180elt\\u295A\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61CDightarrow;\\u61CE;\\uC000\\u22D8\\u0338\\u0100;v\\u297B\\u0C47\\uC000\\u226A\\u20D2ightarrow;\\u61CF\\u0100Dd\\u298E\\u2993ash;\\u62AFash;\\u62AE\\u0280bcnpt\\u29A3\\u29A7\\u29AC\\u29B1\\u29CCla\\xbb\\u02DEute;\\u4144g;\\uC000\\u2220\\u20D2\\u0280;Eiop\\u0D84\\u29BC\\u29C0\\u29C5\\u29C8;\\uC000\\u2A70\\u0338d;\\uC000\\u224B\\u0338s;\\u4149ro\\xf8\\u0D84ur\\u0100;a\\u29D3\\u29D4\\u666El\\u0100;s\\u29D3\\u0B38\\u01F3\\u29DF\\0\\u29E3p\\u80BB\\xa0\\u0B37mp\\u0100;e\\u0BF9\\u0C00\\u0280aeouy\\u29F4\\u29FE\\u2A03\\u2A10\\u2A13\\u01F0\\u29F9\\0\\u29FB;\\u6A43on;\\u4148dil;\\u4146ng\\u0100;d\\u0D7E\\u2A0Aot;\\uC000\\u2A6D\\u0338p;\\u6A42;\\u443Dash;\\u6013\\u0380;Aadqsx\\u0B92\\u2A29\\u2A2D\\u2A3B\\u2A41\\u2A45\\u2A50rr;\\u61D7r\\u0100hr\\u2A33\\u2A36k;\\u6924\\u0100;o\\u13F2\\u13F0ot;\\uC000\\u2250\\u0338ui\\xf6\\u0B63\\u0100ei\\u2A4A\\u2A4Ear;\\u6928\\xed\\u0B98ist\\u0100;s\\u0BA0\\u0B9Fr;\\uC000\\ud835\\udd2b\\u0200Eest\\u0BC5\\u2A66\\u2A79\\u2A7C\\u0180;qs\\u0BBC\\u2A6D\\u0BE1\\u0180;qs\\u0BBC\\u0BC5\\u2A74lan\\xf4\\u0BE2i\\xed\\u0BEA\\u0100;r\\u0BB6\\u2A81\\xbb\\u0BB7\\u0180Aap\\u2A8A\\u2A8D\\u2A91r\\xf2\\u2971rr;\\u61AEar;\\u6AF2\\u0180;sv\\u0F8D\\u2A9C\\u0F8C\\u0100;d\\u2AA1\\u2AA2\\u62FC;\\u62FAcy;\\u445A\\u0380AEadest\\u2AB7\\u2ABA\\u2ABE\\u2AC2\\u2AC5\\u2AF6\\u2AF9r\\xf2\\u2966;\\uC000\\u2266\\u0338rr;\\u619Ar;\\u6025\\u0200;fqs\\u0C3B\\u2ACE\\u2AE3\\u2AEFt\\u0100ar\\u2AD4\\u2AD9rro\\xf7\\u2AC1ightarro\\xf7\\u2A90\\u0180;qs\\u0C3B\\u2ABA\\u2AEAlan\\xf4\\u0C55\\u0100;s\\u0C55\\u2AF4\\xbb\\u0C36i\\xed\\u0C5D\\u0100;r\\u0C35\\u2AFEi\\u0100;e\\u0C1A\\u0C25i\\xe4\\u0D90\\u0100pt\\u2B0C\\u2B11f;\\uC000\\ud835\\udd5f\\u8180\\xac;in\\u2B19\\u2B1A\\u2B36\\u40ACn\\u0200;Edv\\u0B89\\u2B24\\u2B28\\u2B2E;\\uC000\\u22F9\\u0338ot;\\uC000\\u22F5\\u0338\\u01E1\\u0B89\\u2B33\\u2B35;\\u62F7;\\u62F6i\\u0100;v\\u0CB8\\u2B3C\\u01E1\\u0CB8\\u2B41\\u2B43;\\u62FE;\\u62FD\\u0180aor\\u2B4B\\u2B63\\u2B69r\\u0200;ast\\u0B7B\\u2B55\\u2B5A\\u2B5Flle\\xec\\u0B7Bl;\\uC000\\u2AFD\\u20E5;\\uC000\\u2202\\u0338lint;\\u6A14\\u0180;ce\\u0C92\\u2B70\\u2B73u\\xe5\\u0CA5\\u0100;c\\u0C98\\u2B78\\u0100;e\\u0C92\\u2B7D\\xf1\\u0C98\\u0200Aait\\u2B88\\u2B8B\\u2B9D\\u2BA7r\\xf2\\u2988rr\\u0180;cw\\u2B94\\u2B95\\u2B99\\u619B;\\uC000\\u2933\\u0338;\\uC000\\u219D\\u0338ghtarrow\\xbb\\u2B95ri\\u0100;e\\u0CCB\\u0CD6\\u0380chimpqu\\u2BBD\\u2BCD\\u2BD9\\u2B04\\u0B78\\u2BE4\\u2BEF\\u0200;cer\\u0D32\\u2BC6\\u0D37\\u2BC9u\\xe5\\u0D45;\\uC000\\ud835\\udcc3ort\\u026D\\u2B05\\0\\0\\u2BD6ar\\xe1\\u2B56m\\u0100;e\\u0D6E\\u2BDF\\u0100;q\\u0D74\\u0D73su\\u0100bp\\u2BEB\\u2BED\\xe5\\u0CF8\\xe5\\u0D0B\\u0180bcp\\u2BF6\\u2C11\\u2C19\\u0200;Ees\\u2BFF\\u2C00\\u0D22\\u2C04\\u6284;\\uC000\\u2AC5\\u0338et\\u0100;e\\u0D1B\\u2C0Bq\\u0100;q\\u0D23\\u2C00c\\u0100;e\\u0D32\\u2C17\\xf1\\u0D38\\u0200;Ees\\u2C22\\u2C23\\u0D5F\\u2C27\\u6285;\\uC000\\u2AC6\\u0338et\\u0100;e\\u0D58\\u2C2Eq\\u0100;q\\u0D60\\u2C23\\u0200gilr\\u2C3D\\u2C3F\\u2C45\\u2C47\\xec\\u0BD7lde\\u803B\\xf1\\u40F1\\xe7\\u0C43iangle\\u0100lr\\u2C52\\u2C5Ceft\\u0100;e\\u0C1A\\u2C5A\\xf1\\u0C26ight\\u0100;e\\u0CCB\\u2C65\\xf1\\u0CD7\\u0100;m\\u2C6C\\u2C6D\\u43BD\\u0180;es\\u2C74\\u2C75\\u2C79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2C8F\\u2C94\\u2C99\\u2C9E\\u2CA3\\u2CB0\\u2CB6\\u2CD3\\u2CE3ash;\\u62ADarr;\\u6904p;\\uC000\\u224D\\u20D2ash;\\u62AC\\u0100et\\u2CA8\\u2CAC;\\uC000\\u2265\\u20D2;\\uC000>\\u20D2nfin;\\u69DE\\u0180Aet\\u2CBD\\u2CC1\\u2CC5rr;\\u6902;\\uC000\\u2264\\u20D2\\u0100;r\\u2CCA\\u2CCD\\uC000<\\u20D2ie;\\uC000\\u22B4\\u20D2\\u0100At\\u2CD8\\u2CDCrr;\\u6903rie;\\uC000\\u22B5\\u20D2im;\\uC000\\u223C\\u20D2\\u0180Aan\\u2CF0\\u2CF4\\u2D02rr;\\u61D6r\\u0100hr\\u2CFA\\u2CFDk;\\u6923\\u0100;o\\u13E7\\u13E5ear;\\u6927\\u1253\\u1A95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2D2D\\0\\u2D38\\u2D48\\u2D60\\u2D65\\u2D72\\u2D84\\u1B07\\0\\0\\u2D8D\\u2DAB\\0\\u2DC8\\u2DCE\\0\\u2DDC\\u2E19\\u2E2B\\u2E3E\\u2E43\\u0100cs\\u2D31\\u1A97ute\\u803B\\xf3\\u40F3\\u0100iy\\u2D3C\\u2D45r\\u0100;c\\u1A9E\\u2D42\\u803B\\xf4\\u40F4;\\u443E\\u0280abios\\u1AA0\\u2D52\\u2D57\\u01C8\\u2D5Alac;\\u4151v;\\u6A38old;\\u69BClig;\\u4153\\u0100cr\\u2D69\\u2D6Dir;\\u69BF;\\uC000\\ud835\\udd2c\\u036F\\u2D79\\0\\0\\u2D7C\\0\\u2D82n;\\u42DBave\\u803B\\xf2\\u40F2;\\u69C1\\u0100bm\\u2D88\\u0DF4ar;\\u69B5\\u0200acit\\u2D95\\u2D98\\u2DA5\\u2DA8r\\xf2\\u1A80\\u0100ir\\u2D9D\\u2DA0r;\\u69BEoss;\\u69BBn\\xe5\\u0E52;\\u69C0\\u0180aei\\u2DB1\\u2DB5\\u2DB9cr;\\u414Dga;\\u43C9\\u0180cdn\\u2DC0\\u2DC5\\u01CDron;\\u43BF;\\u69B6pf;\\uC000\\ud835\\udd60\\u0180ael\\u2DD4\\u2DD7\\u01D2r;\\u69B7rp;\\u69B9\\u0380;adiosv\\u2DEA\\u2DEB\\u2DEE\\u2E08\\u2E0D\\u2E10\\u2E16\\u6228r\\xf2\\u1A86\\u0200;efm\\u2DF7\\u2DF8\\u2E02\\u2E05\\u6A5Dr\\u0100;o\\u2DFE\\u2DFF\\u6134f\\xbb\\u2DFF\\u803B\\xaa\\u40AA\\u803B\\xba\\u40BAgof;\\u62B6r;\\u6A56lope;\\u6A57;\\u6A5B\\u0180clo\\u2E1F\\u2E21\\u2E27\\xf2\\u2E01ash\\u803B\\xf8\\u40F8l;\\u6298i\\u016C\\u2E2F\\u2E34de\\u803B\\xf5\\u40F5es\\u0100;a\\u01DB\\u2E3As;\\u6A36ml\\u803B\\xf6\\u40F6bar;\\u633D\\u0AE1\\u2E5E\\0\\u2E7D\\0\\u2E80\\u2E9D\\0\\u2EA2\\u2EB9\\0\\0\\u2ECB\\u0E9C\\0\\u2F13\\0\\0\\u2F2B\\u2FBC\\0\\u2FC8r\\u0200;ast\\u0403\\u2E67\\u2E72\\u0E85\\u8100\\xb6;l\\u2E6D\\u2E6E\\u40B6le\\xec\\u0403\\u0269\\u2E78\\0\\0\\u2E7Bm;\\u6AF3;\\u6AFDy;\\u443Fr\\u0280cimpt\\u2E8B\\u2E8F\\u2E93\\u1865\\u2E97nt;\\u4025od;\\u402Eil;\\u6030enk;\\u6031r;\\uC000\\ud835\\udd2d\\u0180imo\\u2EA8\\u2EB0\\u2EB4\\u0100;v\\u2EAD\\u2EAE\\u43C6;\\u43D5ma\\xf4\\u0A76ne;\\u660E\\u0180;tv\\u2EBF\\u2EC0\\u2EC8\\u43C0chfork\\xbb\\u1FFD;\\u43D6\\u0100au\\u2ECF\\u2EDFn\\u0100ck\\u2ED5\\u2EDDk\\u0100;h\\u21F4\\u2EDB;\\u610E\\xf6\\u21F4s\\u0480;abcdemst\\u2EF3\\u2EF4\\u1908\\u2EF9\\u2EFD\\u2F04\\u2F06\\u2F0A\\u2F0E\\u402Bcir;\\u6A23ir;\\u6A22\\u0100ou\\u1D40\\u2F02;\\u6A25;\\u6A72n\\u80BB\\xb1\\u0E9Dim;\\u6A26wo;\\u6A27\\u0180ipu\\u2F19\\u2F20\\u2F25ntint;\\u6A15f;\\uC000\\ud835\\udd61nd\\u803B\\xa3\\u40A3\\u0500;Eaceinosu\\u0EC8\\u2F3F\\u2F41\\u2F44\\u2F47\\u2F81\\u2F89\\u2F92\\u2F7E\\u2FB6;\\u6AB3p;\\u6AB7u\\xe5\\u0ED9\\u0100;c\\u0ECE\\u2F4C\\u0300;acens\\u0EC8\\u2F59\\u2F5F\\u2F66\\u2F68\\u2F7Eppro\\xf8\\u2F43urlye\\xf1\\u0ED9\\xf1\\u0ECE\\u0180aes\\u2F6F\\u2F76\\u2F7Approx;\\u6AB9qq;\\u6AB5im;\\u62E8i\\xed\\u0EDFme\\u0100;s\\u2F88\\u0EAE\\u6032\\u0180Eas\\u2F78\\u2F90\\u2F7A\\xf0\\u2F75\\u0180dfp\\u0EEC\\u2F99\\u2FAF\\u0180als\\u2FA0\\u2FA5\\u2FAAlar;\\u632Eine;\\u6312urf;\\u6313\\u0100;t\\u0EFB\\u2FB4\\xef\\u0EFBrel;\\u62B0\\u0100ci\\u2FC0\\u2FC5r;\\uC000\\ud835\\udcc5;\\u43C8ncsp;\\u6008\\u0300fiopsu\\u2FDA\\u22E2\\u2FDF\\u2FE5\\u2FEB\\u2FF1r;\\uC000\\ud835\\udd2epf;\\uC000\\ud835\\udd62rime;\\u6057cr;\\uC000\\ud835\\udcc6\\u0180aeo\\u2FF8\\u3009\\u3013t\\u0100ei\\u2FFE\\u3005rnion\\xf3\\u06B0nt;\\u6A16st\\u0100;e\\u3010\\u3011\\u403F\\xf1\\u1F19\\xf4\\u0F14\\u0A80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30E0\\u310E\\u312B\\u3147\\u3162\\u3172\\u318E\\u3206\\u3215\\u3224\\u3229\\u3258\\u326E\\u3272\\u3290\\u32B0\\u32B7\\u0180art\\u3047\\u304A\\u304Cr\\xf2\\u10B3\\xf2\\u03DDail;\\u691Car\\xf2\\u1C65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307F\\u308F\\u3094\\u30CC\\u0100eu\\u306D\\u3071;\\uC000\\u223D\\u0331te;\\u4155i\\xe3\\u116Emptyv;\\u69B3g\\u0200;del\\u0FD1\\u3089\\u308B\\u308D;\\u6992;\\u69A5\\xe5\\u0FD1uo\\u803B\\xbb\\u40BBr\\u0580;abcfhlpstw\\u0FDC\\u30AC\\u30AF\\u30B7\\u30B9\\u30BC\\u30BE\\u30C0\\u30C3\\u30C7\\u30CAp;\\u6975\\u0100;f\\u0FE0\\u30B4s;\\u6920;\\u6933s;\\u691E\\xeb\\u225D\\xf0\\u272El;\\u6945im;\\u6974l;\\u61A3;\\u619D\\u0100ai\\u30D1\\u30D5il;\\u691Ao\\u0100;n\\u30DB\\u30DC\\u6236al\\xf3\\u0F1E\\u0180abr\\u30E7\\u30EA\\u30EEr\\xf2\\u17E5rk;\\u6773\\u0100ak\\u30F3\\u30FDc\\u0100ek\\u30F9\\u30FB;\\u407D;\\u405D\\u0100es\\u3102\\u3104;\\u698Cl\\u0100du\\u310A\\u310C;\\u698E;\\u6990\\u0200aeuy\\u3117\\u311C\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0FF2\\xe2\\u30FA;\\u4440\\u0200clqs\\u3134\\u3137\\u313D\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020E\\u020Dh;\\u61B3\\u0180acg\\u314E\\u315F\\u0F44l\\u0200;ips\\u0F78\\u3158\\u315B\\u109Cn\\xe5\\u10BBar\\xf4\\u0FA9t;\\u65AD\\u0180ilr\\u3169\\u1023\\u316Esht;\\u697D;\\uC000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317D\\u317F\\xbb\\u047B\\u0100;l\\u1091\\u3184;\\u696C\\u0100;v\\u318B\\u318C\\u43C1;\\u43F1\\u0180gns\\u3195\\u31F9\\u31FCht\\u0300ahlrst\\u31A4\\u31B0\\u31C2\\u31D8\\u31E4\\u31EErrow\\u0100;t\\u0FDC\\u31ADa\\xe9\\u30C8arpoon\\u0100du\\u31BB\\u31BFow\\xee\\u317Ep\\xbb\\u1092eft\\u0100ah\\u31CA\\u31D0rrow\\xf3\\u0FEAarpoon\\xf3\\u0551ightarrows;\\u61C9quigarro\\xf7\\u30CBhreetimes;\\u62CCg;\\u42DAingdotse\\xf1\\u1F32\\u0180ahm\\u320D\\u3210\\u3213r\\xf2\\u0FEAa\\xf2\\u0551;\\u600Foust\\u0100;a\\u321E\\u321F\\u63B1che\\xbb\\u321Fmid;\\u6AEE\\u0200abpt\\u3232\\u323D\\u3240\\u3252\\u0100nr\\u3237\\u323Ag;\\u67EDr;\\u61FEr\\xeb\\u1003\\u0180afl\\u3247\\u324A\\u324Er;\\u6986;\\uC000\\ud835\\udd63us;\\u6A2Eimes;\\u6A35\\u0100ap\\u325D\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6A12ar\\xf2\\u31E3\\u0200achq\\u327B\\u3280\\u10BC\\u3285quo;\\u603Ar;\\uC000\\ud835\\udcc7\\u0100bu\\u30FB\\u328Ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329B\\u32A0re\\xe5\\u31F8mes;\\u62CAi\\u0200;efl\\u32AA\\u1059\\u1821\\u32AB\\u65B9tri;\\u69CEluhar;\\u6968;\\u611E\\u0D61\\u32D5\\u32DB\\u32DF\\u332C\\u3338\\u3371\\0\\u337A\\u33A4\\0\\0\\u33EC\\u33F0\\0\\u3428\\u3448\\u345A\\u34AD\\u34B1\\u34CA\\u34F1\\0\\u3616\\0\\0\\u3633cute;\\u415Bqu\\xef\\u27BA\\u0500;Eaceinpsy\\u11ED\\u32F3\\u32F5\\u32FF\\u3302\\u330B\\u330F\\u331F\\u3326\\u3329;\\u6AB4\\u01F0\\u32FA\\0\\u32FC;\\u6AB8on;\\u4161u\\xe5\\u11FE\\u0100;d\\u11F3\\u3307il;\\u415Frc;\\u415D\\u0180Eas\\u3316\\u3318\\u331B;\\u6AB6p;\\u6ABAim;\\u62E9olint;\\u6A13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1D47\\u3335\\u62C5;\\u6A66\\u0380Aacmstx\\u3346\\u334A\\u3357\\u335B\\u335E\\u3363\\u336Drr;\\u61D8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0A36\\u0A34t\\u803B\\xa7\\u40A7i;\\u403Bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uC000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33A0rp;\\u666F\\u0100hy\\u338B\\u338Fcy;\\u4449;\\u4448rt\\u026D\\u3399\\0\\0\\u339Ci\\xe4\\u1464ara\\xec\\u2E6F\\u803B\\xad\\u40AD\\u0100gm\\u33A8\\u33B4ma\\u0180;fv\\u33B1\\u33B2\\u33B2\\u43C3;\\u43C2\\u0400;deglnpr\\u12AB\\u33C5\\u33C9\\u33CE\\u33D6\\u33DE\\u33E1\\u33E6ot;\\u6A6A\\u0100;q\\u12B1\\u12B0\\u0100;E\\u33D3\\u33D4\\u6A9E;\\u6AA0\\u0100;E\\u33DB\\u33DC\\u6A9D;\\u6A9Fe;\\u6246lus;\\u6A24arr;\\u6972ar\\xf2\\u113D\\u0200aeit\\u33F8\\u3408\\u340F\\u3417\\u0100ls\\u33FD\\u3404lsetm\\xe9\\u336Ahp;\\u6A33parsl;\\u69E4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341C\\u341D\\u6AAA\\u0100;s\\u3422\\u3423\\u6AAC;\\uC000\\u2AAC\\uFE00\\u0180flp\\u342E\\u3433\\u3442tcy;\\u444C\\u0100;b\\u3438\\u3439\\u402F\\u0100;a\\u343E\\u343F\\u69C4r;\\u633Ff;\\uC000\\ud835\\udd64a\\u0100dr\\u344D\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349F\\u0100au\\u3465\\u346Fp\\u0100;s\\u1188\\u346B;\\uC000\\u2293\\uFE00p\\u0100;s\\u11B4\\u3475;\\uC000\\u2294\\uFE00u\\u0100bp\\u347F\\u348F\\u0180;es\\u1197\\u119C\\u3486et\\u0100;e\\u1197\\u348D\\xf1\\u119D\\u0180;es\\u11A8\\u11AD\\u3496et\\u0100;e\\u11A8\\u349D\\xf1\\u11AE\\u0180;af\\u117B\\u34A6\\u05B0r\\u0165\\u34AB\\u05B1\\xbb\\u117Car\\xf2\\u1148\\u0200cemt\\u34B9\\u34BE\\u34C2\\u34C5r;\\uC000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11BE\\u0100ar\\u34CE\\u34D5r\\u0100;f\\u34D4\\u17BF\\u6606\\u0100an\\u34DA\\u34EDight\\u0100ep\\u34E3\\u34EApsilo\\xee\\u1EE0h\\xe9\\u2EAFs\\xbb\\u2852\\u0280bcmnp\\u34FB\\u355E\\u1209\\u358B\\u358E\\u0480;Edemnprs\\u350E\\u350F\\u3511\\u3515\\u351E\\u3523\\u352C\\u3531\\u3536\\u6282;\\u6AC5ot;\\u6ABD\\u0100;d\\u11DA\\u351Aot;\\u6AC3ult;\\u6AC1\\u0100Ee\\u3528\\u352A;\\u6ACB;\\u628Alus;\\u6ABFarr;\\u6979\\u0180eiu\\u353D\\u3552\\u3555t\\u0180;en\\u350E\\u3545\\u354Bq\\u0100;q\\u11DA\\u350Feq\\u0100;q\\u352B\\u3528m;\\u6AC7\\u0100bp\\u355A\\u355C;\\u6AD5;\\u6AD3c\\u0300;acens\\u11ED\\u356C\\u3572\\u3579\\u357B\\u3326ppro\\xf8\\u32FAurlye\\xf1\\u11FE\\xf1\\u11F3\\u0180aes\\u3582\\u3588\\u331Bppro\\xf8\\u331Aq\\xf1\\u3317g;\\u666A\\u0680123;Edehlmnps\\u35A9\\u35AC\\u35AF\\u121C\\u35B2\\u35B4\\u35C0\\u35C9\\u35D5\\u35DA\\u35DF\\u35E8\\u35ED\\u803B\\xb9\\u40B9\\u803B\\xb2\\u40B2\\u803B\\xb3\\u40B3;\\u6AC6\\u0100os\\u35B9\\u35BCt;\\u6ABEub;\\u6AD8\\u0100;d\\u1222\\u35C5ot;\\u6AC4s\\u0100ou\\u35CF\\u35D2l;\\u67C9b;\\u6AD7arr;\\u697Bult;\\u6AC2\\u0100Ee\\u35E4\\u35E6;\\u6ACC;\\u628Blus;\\u6AC0\\u0180eiu\\u35F4\\u3609\\u360Ct\\u0180;en\\u121C\\u35FC\\u3602q\\u0100;q\\u1222\\u35B2eq\\u0100;q\\u35E7\\u35E4m;\\u6AC8\\u0100bp\\u3611\\u3613;\\u6AD4;\\u6AD6\\u0180Aan\\u361C\\u3620\\u362Drr;\\u61D9r\\u0100hr\\u3626\\u3628\\xeb\\u222E\\u0100;o\\u0A2B\\u0A29war;\\u692Alig\\u803B\\xdf\\u40DF\\u0BE1\\u3651\\u365D\\u3660\\u12CE\\u3673\\u3679\\0\\u367E\\u36C2\\0\\0\\0\\0\\0\\u36DB\\u3703\\0\\u3709\\u376C\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365Bget;\\u6316;\\u43C4r\\xeb\\u0E5F\\u0180aey\\u3666\\u366B\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uC000\\ud835\\udd31\\u0200eiko\\u3686\\u369D\\u36B5\\u36BC\\u01F2\\u368B\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369B\\u43B8ym;\\u43D1\\u0100cn\\u36A2\\u36B2k\\u0100as\\u36A8\\u36AEppro\\xf8\\u12C1im\\xbb\\u12ACs\\xf0\\u129E\\u0100as\\u36BA\\u36AE\\xf0\\u12C1rn\\u803B\\xfe\\u40FE\\u01EC\\u031F\\u36C6\\u22E7es\\u8180\\xd7;bd\\u36CF\\u36D0\\u36D8\\u40D7\\u0100;a\\u190F\\u36D5r;\\u6A31;\\u6A30\\u0180eps\\u36E1\\u36E3\\u3700\\xe1\\u2A4D\\u0200;bcf\\u0486\\u36EC\\u36F0\\u36F4ot;\\u6336ir;\\u6AF1\\u0100;o\\u36F9\\u36FC\\uC000\\ud835\\udd65rk;\\u6ADA\\xe1\\u3362rime;\\u6034\\u0180aip\\u370F\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374D\\u3740\\u3751\\u3757\\u375C\\u375Fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65B5own\\xbb\\u1DBBeft\\u0100;e\\u2800\\u373E\\xf1\\u092E;\\u625Cight\\u0100;e\\u32AA\\u374B\\xf1\\u105Aot;\\u65ECinus;\\u6A3Alus;\\u6A39b;\\u69CDime;\\u6A3Bezium;\\u63E2\\u0180cht\\u3772\\u377D\\u3781\\u0100ry\\u3777\\u377B;\\uC000\\ud835\\udcc9;\\u4446cy;\\u445Brok;\\u4167\\u0100io\\u378B\\u378Ex\\xf4\\u1777head\\u0100lr\\u3797\\u37A0eftarro\\xf7\\u084Fightarrow\\xbb\\u0F5D\\u0900AHabcdfghlmoprstuw\\u37D0\\u37D3\\u37D7\\u37E4\\u37F0\\u37FC\\u380E\\u381C\\u3823\\u3834\\u3851\\u385D\\u386B\\u38A9\\u38CC\\u38D2\\u38EA\\u38F6r\\xf2\\u03EDar;\\u6963\\u0100cr\\u37DC\\u37E2ute\\u803B\\xfa\\u40FA\\xf2\\u1150r\\u01E3\\u37EA\\0\\u37EDy;\\u445Eve;\\u416D\\u0100iy\\u37F5\\u37FArc\\u803B\\xfb\\u40FB;\\u4443\\u0180abh\\u3803\\u3806\\u380Br\\xf2\\u13ADlac;\\u4171a\\xf2\\u13C3\\u0100ir\\u3813\\u3818sht;\\u697E;\\uC000\\ud835\\udd32rave\\u803B\\xf9\\u40F9\\u0161\\u3827\\u3831r\\u0100lr\\u382C\\u382E\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384D\\u026F\\u383F\\0\\0\\u384Arn\\u0100;e\\u3845\\u3846\\u631Cr\\xbb\\u3846op;\\u630Fri;\\u65F8\\u0100al\\u3856\\u385Acr;\\u416B\\u80BB\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uC000\\ud835\\udd66\\u0300adhlsu\\u114B\\u3878\\u387D\\u1372\\u3891\\u38A0own\\xe1\\u13B3arpoon\\u0100lr\\u3888\\u388Cef\\xf4\\u382Digh\\xf4\\u382Fi\\u0180;hl\\u3899\\u389A\\u389C\\u43C5\\xbb\\u13FAon\\xbb\\u389Aparrows;\\u61C8\\u0180cit\\u38B0\\u38C4\\u38C8\\u026F\\u38B6\\0\\0\\u38C1rn\\u0100;e\\u38BC\\u38BD\\u631Dr\\xbb\\u38BDop;\\u630Eng;\\u416Fri;\\u65F9cr;\\uC000\\ud835\\udcca\\u0180dir\\u38D9\\u38DD\\u38E2ot;\\u62F0lde;\\u4169i\\u0100;f\\u3730\\u38E8\\xbb\\u1813\\u0100am\\u38EF\\u38F2r\\xf2\\u38A8l\\u803B\\xfc\\u40FCangle;\\u69A7\\u0780ABDacdeflnoprsz\\u391C\\u391F\\u3929\\u392D\\u39B5\\u39B8\\u39BD\\u39DF\\u39E4\\u39E8\\u39F3\\u39F9\\u39FD\\u3A01\\u3A20r\\xf2\\u03F7ar\\u0100;v\\u3926\\u3927\\u6AE8;\\u6AE9as\\xe8\\u03E1\\u0100nr\\u3932\\u3937grt;\\u699C\\u0380eknprst\\u34E3\\u3946\\u394B\\u3952\\u395D\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1E96\\u0180hir\\u34EB\\u2EC8\\u3959op\\xf4\\u2FB5\\u0100;h\\u13B7\\u3962\\xef\\u318D\\u0100iu\\u3969\\u396Dgm\\xe1\\u33B3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397D\\u3980\\uC000\\u228A\\uFE00;\\uC000\\u2ACB\\uFE00setneq\\u0100;q\\u398F\\u3992\\uC000\\u228B\\uFE00;\\uC000\\u2ACC\\uFE00\\u0100hr\\u399B\\u399Fet\\xe1\\u369Ciangle\\u0100lr\\u39AA\\u39AFeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39C4\\u39D2\\u39D7\\u0180;be\\u2DEA\\u39CB\\u39CFar;\\u62BBq;\\u625Alip;\\u62EE\\u0100bt\\u39DC\\u1468a\\xf2\\u1469r;\\uC000\\ud835\\udd33tr\\xe9\\u39AEsu\\u0100bp\\u39EF\\u39F1\\xbb\\u0D1C\\xbb\\u0D59pf;\\uC000\\ud835\\udd67ro\\xf0\\u0EFBtr\\xe9\\u39B4\\u0100cu\\u3A06\\u3A0Br;\\uC000\\ud835\\udccb\\u0100bp\\u3A10\\u3A18n\\u0100Ee\\u3980\\u3A16\\xbb\\u397En\\u0100Ee\\u3992\\u3A1E\\xbb\\u3990igzag;\\u699A\\u0380cefoprs\\u3A36\\u3A3B\\u3A56\\u3A5B\\u3A54\\u3A61\\u3A6Airc;\\u4175\\u0100di\\u3A40\\u3A51\\u0100bg\\u3A45\\u3A49ar;\\u6A5Fe\\u0100;q\\u15FA\\u3A4F;\\u6259erp;\\u6118r;\\uC000\\ud835\\udd34pf;\\uC000\\ud835\\udd68\\u0100;e\\u1479\\u3A66at\\xe8\\u1479cr;\\uC000\\ud835\\udccc\\u0AE3\\u178E\\u3A87\\0\\u3A8B\\0\\u3A90\\u3A9B\\0\\0\\u3A9D\\u3AA8\\u3AAB\\u3AAF\\0\\0\\u3AC3\\u3ACE\\0\\u3AD8\\u17DC\\u17DFtr\\xe9\\u17D1r;\\uC000\\ud835\\udd35\\u0100Aa\\u3A94\\u3A97r\\xf2\\u03C3r\\xf2\\u09F6;\\u43BE\\u0100Aa\\u3AA1\\u3AA4r\\xf2\\u03B8r\\xf2\\u09EBa\\xf0\\u2713is;\\u62FB\\u0180dpt\\u17A4\\u3AB5\\u3ABE\\u0100fl\\u3ABA\\u17A9;\\uC000\\ud835\\udd69im\\xe5\\u17B2\\u0100Aa\\u3AC7\\u3ACAr\\xf2\\u03CEr\\xf2\\u0A01\\u0100cq\\u3AD2\\u17B8r;\\uC000\\ud835\\udccd\\u0100pt\\u17D6\\u3ADCr\\xe9\\u17D4\\u0400acefiosu\\u3AF0\\u3AFD\\u3B08\\u3B0C\\u3B11\\u3B15\\u3B1B\\u3B21c\\u0100uy\\u3AF6\\u3AFBte\\u803B\\xfd\\u40FD;\\u444F\\u0100iy\\u3B02\\u3B06rc;\\u4177;\\u444Bn\\u803B\\xa5\\u40A5r;\\uC000\\ud835\\udd36cy;\\u4457pf;\\uC000\\ud835\\udd6acr;\\uC000\\ud835\\udcce\\u0100cm\\u3B26\\u3B29y;\\u444El\\u803B\\xff\\u40FF\\u0500acdefhiosw\\u3B42\\u3B48\\u3B54\\u3B58\\u3B64\\u3B69\\u3B6D\\u3B74\\u3B7A\\u3B80cute;\\u417A\\u0100ay\\u3B4D\\u3B52ron;\\u417E;\\u4437ot;\\u417C\\u0100et\\u3B5D\\u3B61tr\\xe6\\u155Fa;\\u43B6r;\\uC000\\ud835\\udd37cy;\\u4436grarr;\\u61DDpf;\\uC000\\ud835\\udd6bcr;\\uC000\\ud835\\udccf\\u0100jn\\u3B85\\u3B87;\\u600Dj;\\u600C'.split(\"\").map(function(c) {\n return c.charCodeAt(0);\n}));\n\n});\n\nparcelRegister(\"cziBi\", function(module, exports) {\n\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.default = new Uint16Array(// prettier-ignore\n\"\\u0200aglq\t\\x15\\x18\\x1b\\u026D\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403Et;\\u403Cuot;\\u4022\".split(\"\").map(function(c) {\n return c.charCodeAt(0);\n}));\n\n});\n\nparcelRegister(\"6DwAw\", function(module, exports) {\n\"use strict\";\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar $4d4fa9e4a7c3cec6$var$_a;\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.replaceCodePoint = module.exports.fromCodePoint = void 0;\nvar $4d4fa9e4a7c3cec6$var$decodeMap = new Map([\n [\n 0,\n 65533\n ],\n // C1 Unicode control character reference replacements\n [\n 128,\n 8364\n ],\n [\n 130,\n 8218\n ],\n [\n 131,\n 402\n ],\n [\n 132,\n 8222\n ],\n [\n 133,\n 8230\n ],\n [\n 134,\n 8224\n ],\n [\n 135,\n 8225\n ],\n [\n 136,\n 710\n ],\n [\n 137,\n 8240\n ],\n [\n 138,\n 352\n ],\n [\n 139,\n 8249\n ],\n [\n 140,\n 338\n ],\n [\n 142,\n 381\n ],\n [\n 145,\n 8216\n ],\n [\n 146,\n 8217\n ],\n [\n 147,\n 8220\n ],\n [\n 148,\n 8221\n ],\n [\n 149,\n 8226\n ],\n [\n 150,\n 8211\n ],\n [\n 151,\n 8212\n ],\n [\n 152,\n 732\n ],\n [\n 153,\n 8482\n ],\n [\n 154,\n 353\n ],\n [\n 155,\n 8250\n ],\n [\n 156,\n 339\n ],\n [\n 158,\n 382\n ],\n [\n 159,\n 376\n ]\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */ module.exports.fromCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n($4d4fa9e4a7c3cec6$var$_a = String.fromCodePoint) !== null && $4d4fa9e4a7c3cec6$var$_a !== void 0 ? $4d4fa9e4a7c3cec6$var$_a : function(codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(codePoint >>> 10 & 0x3ff | 0xd800);\n codePoint = 0xdc00 | codePoint & 0x3ff;\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */ function $4d4fa9e4a7c3cec6$var$replaceCodePoint(codePoint) {\n var _a;\n if (codePoint >= 0xd800 && codePoint <= 0xdfff || codePoint > 0x10ffff) return 0xfffd;\n return (_a = $4d4fa9e4a7c3cec6$var$decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nmodule.exports.replaceCodePoint = $4d4fa9e4a7c3cec6$var$replaceCodePoint;\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */ function $4d4fa9e4a7c3cec6$var$decodeCodePoint(codePoint) {\n return (0, module.exports.fromCodePoint)($4d4fa9e4a7c3cec6$var$replaceCodePoint(codePoint));\n}\nmodule.exports.default = $4d4fa9e4a7c3cec6$var$decodeCodePoint;\n\n});\n\n\n\n\nparcelRegister(\"kyMdm\", function(module, exports) {\n$parcel$export(module.exports, \"CDATA\", () => (parcelRequire(\"lftuc\")).CDATA);\n$parcel$export(module.exports, \"Comment\", () => (parcelRequire(\"lftuc\")).Comment);\n$parcel$export(module.exports, \"Document\", () => (parcelRequire(\"lftuc\")).Document);\n$parcel$export(module.exports, \"Element\", () => (parcelRequire(\"lftuc\")).Element);\n$parcel$export(module.exports, \"hasChildren\", () => (parcelRequire(\"lftuc\")).hasChildren);\n$parcel$export(module.exports, \"isCDATA\", () => (parcelRequire(\"lftuc\")).isCDATA);\n$parcel$export(module.exports, \"isComment\", () => (parcelRequire(\"lftuc\")).isComment);\n$parcel$export(module.exports, \"isTag\", () => (parcelRequire(\"lftuc\")).isTag);\n$parcel$export(module.exports, \"isText\", () => (parcelRequire(\"lftuc\")).isText);\n$parcel$export(module.exports, \"ProcessingInstruction\", () => (parcelRequire(\"lftuc\")).ProcessingInstruction);\n$parcel$export(module.exports, \"Text\", () => (parcelRequire(\"lftuc\")).Text);\n\n$parcel$export(module.exports, \"DomHandler\", () => $ef7c620119bd03f2$export$ff8ccbac9225de62);\n\nvar $1RLFx = parcelRequire(\"1RLFx\");\n\nvar $lftuc = parcelRequire(\"lftuc\");\n// Default options\nconst $ef7c620119bd03f2$var$defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false\n};\nclass $ef7c620119bd03f2$export$ff8ccbac9225de62 {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */ constructor(callback, options, elementCB){\n /** The elements of the DOM */ this.dom = [];\n /** The root element for the DOM */ this.root = new (0, $lftuc.Document)(this.dom);\n /** Indicated whether parsing has been completed. */ this.done = false;\n /** Stack of open tags. */ this.tagStack = [\n this.root\n ];\n /** A data node that is still being written to. */ this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */ this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = $ef7c620119bd03f2$var$defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : $ef7c620119bd03f2$var$defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new (0, $lftuc.Document)(this.dom);\n this.done = false;\n this.tagStack = [\n this.root\n ];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done) return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) elem.endIndex = this.parser.endIndex;\n if (this.elementCB) this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? (0, $1RLFx.ElementType).Tag : undefined;\n const element = new (0, $lftuc.Element)(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode: lastNode } = this;\n if (lastNode && lastNode.type === (0, $1RLFx.ElementType).Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) lastNode.endIndex = this.parser.endIndex;\n } else {\n const node = new (0, $lftuc.Text)(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === (0, $1RLFx.ElementType).Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new (0, $lftuc.Comment)(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new (0, $lftuc.Text)(\"\");\n const node = new (0, $lftuc.CDATA)([\n text\n ]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new (0, $lftuc.ProcessingInstruction)(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") this.callback(error, this.dom);\n else if (error) throw error;\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) node.startIndex = this.parser.startIndex;\n if (this.options.withEndIndices) node.endIndex = this.parser.endIndex;\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nvar $ef7c620119bd03f2$export$2e2bcd8739ae039 = $ef7c620119bd03f2$export$ff8ccbac9225de62;\n\n});\nparcelRegister(\"lftuc\", function(module, exports) {\n\n$parcel$export(module.exports, \"Text\", () => $f781defdc25f69c3$export$5f1af8db9871e1d6);\n$parcel$export(module.exports, \"Comment\", () => $f781defdc25f69c3$export$4d299b491347818a);\n$parcel$export(module.exports, \"ProcessingInstruction\", () => $f781defdc25f69c3$export$9269dce19ee35e96);\n$parcel$export(module.exports, \"CDATA\", () => $f781defdc25f69c3$export$1f8b8f7e5c763232);\n$parcel$export(module.exports, \"Document\", () => $f781defdc25f69c3$export$b34a105447964f9f);\n$parcel$export(module.exports, \"Element\", () => $f781defdc25f69c3$export$db77ccec0bb4ccac);\n$parcel$export(module.exports, \"isTag\", () => $f781defdc25f69c3$export$3bf645f08efe3292);\n$parcel$export(module.exports, \"isCDATA\", () => $f781defdc25f69c3$export$c2d65aed98d39b56);\n$parcel$export(module.exports, \"isText\", () => $f781defdc25f69c3$export$1879817ac5c922b7);\n$parcel$export(module.exports, \"isComment\", () => $f781defdc25f69c3$export$3ab01370f5e64ac8);\n$parcel$export(module.exports, \"hasChildren\", () => $f781defdc25f69c3$export$bd5ff50f0e53d41c);\n\nvar $1RLFx = parcelRequire(\"1RLFx\");\nclass $f781defdc25f69c3$export$85c928794f8d04d4 {\n constructor(){\n /** Parent of the node */ this.parent = null;\n /** Previous sibling */ this.prev = null;\n /** Next sibling */ this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */ this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */ this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */ cloneNode(recursive = false) {\n return $f781defdc25f69c3$export$ae8e35ea29ddac22(this, recursive);\n }\n}\nclass $f781defdc25f69c3$export$c3569d91cd44d357 extends $f781defdc25f69c3$export$85c928794f8d04d4 {\n /**\n * @param data The content of the data node\n */ constructor(data){\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\nclass $f781defdc25f69c3$export$5f1af8db9871e1d6 extends $f781defdc25f69c3$export$c3569d91cd44d357 {\n constructor(){\n super(...arguments);\n this.type = (0, $1RLFx.ElementType).Text;\n }\n get nodeType() {\n return 3;\n }\n}\nclass $f781defdc25f69c3$export$4d299b491347818a extends $f781defdc25f69c3$export$c3569d91cd44d357 {\n constructor(){\n super(...arguments);\n this.type = (0, $1RLFx.ElementType).Comment;\n }\n get nodeType() {\n return 8;\n }\n}\nclass $f781defdc25f69c3$export$9269dce19ee35e96 extends $f781defdc25f69c3$export$c3569d91cd44d357 {\n constructor(name, data){\n super(data);\n this.name = name;\n this.type = (0, $1RLFx.ElementType).Directive;\n }\n get nodeType() {\n return 1;\n }\n}\nclass $f781defdc25f69c3$export$62be934f90997196 extends $f781defdc25f69c3$export$85c928794f8d04d4 {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */ constructor(children){\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */ get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */ get lastChild() {\n return this.children.length > 0 ? this.children[this.children.length - 1] : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nclass $f781defdc25f69c3$export$1f8b8f7e5c763232 extends $f781defdc25f69c3$export$62be934f90997196 {\n constructor(){\n super(...arguments);\n this.type = (0, $1RLFx.ElementType).CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\nclass $f781defdc25f69c3$export$b34a105447964f9f extends $f781defdc25f69c3$export$62be934f90997196 {\n constructor(){\n super(...arguments);\n this.type = (0, $1RLFx.ElementType).Root;\n }\n get nodeType() {\n return 9;\n }\n}\nclass $f781defdc25f69c3$export$db77ccec0bb4ccac extends $f781defdc25f69c3$export$62be934f90997196 {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */ constructor(name, attribs, children = [], type = name === \"script\" ? (0, $1RLFx.ElementType).Script : name === \"style\" ? (0, $1RLFx.ElementType).Style : (0, $1RLFx.ElementType).Tag){\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name)=>{\n var _a, _b;\n return {\n name: name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name]\n };\n });\n }\n}\nfunction $f781defdc25f69c3$export$3bf645f08efe3292(node) {\n return (0, $1RLFx.isTag)(node);\n}\nfunction $f781defdc25f69c3$export$c2d65aed98d39b56(node) {\n return node.type === (0, $1RLFx.ElementType).CDATA;\n}\nfunction $f781defdc25f69c3$export$1879817ac5c922b7(node) {\n return node.type === (0, $1RLFx.ElementType).Text;\n}\nfunction $f781defdc25f69c3$export$3ab01370f5e64ac8(node) {\n return node.type === (0, $1RLFx.ElementType).Comment;\n}\nfunction $f781defdc25f69c3$export$4b5d79f26e0e3ad5(node) {\n return node.type === (0, $1RLFx.ElementType).Directive;\n}\nfunction $f781defdc25f69c3$export$62858bae88b53fd0(node) {\n return node.type === (0, $1RLFx.ElementType).Root;\n}\nfunction $f781defdc25f69c3$export$bd5ff50f0e53d41c(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nfunction $f781defdc25f69c3$export$ae8e35ea29ddac22(node, recursive = false) {\n let result;\n if ($f781defdc25f69c3$export$1879817ac5c922b7(node)) result = new $f781defdc25f69c3$export$5f1af8db9871e1d6(node.data);\n else if ($f781defdc25f69c3$export$3ab01370f5e64ac8(node)) result = new $f781defdc25f69c3$export$4d299b491347818a(node.data);\n else if ($f781defdc25f69c3$export$3bf645f08efe3292(node)) {\n const children = recursive ? $f781defdc25f69c3$var$cloneChildren(node.children) : [];\n const clone = new $f781defdc25f69c3$export$db77ccec0bb4ccac(node.name, {\n ...node.attribs\n }, children);\n children.forEach((child)=>child.parent = clone);\n if (node.namespace != null) clone.namespace = node.namespace;\n if (node[\"x-attribsNamespace\"]) clone[\"x-attribsNamespace\"] = {\n ...node[\"x-attribsNamespace\"]\n };\n if (node[\"x-attribsPrefix\"]) clone[\"x-attribsPrefix\"] = {\n ...node[\"x-attribsPrefix\"]\n };\n result = clone;\n } else if ($f781defdc25f69c3$export$c2d65aed98d39b56(node)) {\n const children = recursive ? $f781defdc25f69c3$var$cloneChildren(node.children) : [];\n const clone = new $f781defdc25f69c3$export$1f8b8f7e5c763232(children);\n children.forEach((child)=>child.parent = clone);\n result = clone;\n } else if ($f781defdc25f69c3$export$62858bae88b53fd0(node)) {\n const children = recursive ? $f781defdc25f69c3$var$cloneChildren(node.children) : [];\n const clone = new $f781defdc25f69c3$export$b34a105447964f9f(children);\n children.forEach((child)=>child.parent = clone);\n if (node[\"x-mode\"]) clone[\"x-mode\"] = node[\"x-mode\"];\n result = clone;\n } else if ($f781defdc25f69c3$export$4b5d79f26e0e3ad5(node)) {\n const instruction = new $f781defdc25f69c3$export$9269dce19ee35e96(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n } else throw new Error(`Not implemented yet: ${node.type}`);\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) result.sourceCodeLocation = node.sourceCodeLocation;\n return result;\n}\nfunction $f781defdc25f69c3$var$cloneChildren(childs) {\n const children = childs.map((child)=>$f781defdc25f69c3$export$ae8e35ea29ddac22(child, true));\n for(let i = 1; i < children.length; i++){\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n\n});\n\n\nparcelRegister(\"eNMmU\", function(module, exports) {\n$parcel$export(module.exports, \"getFeed\", () => (parcelRequire(\"9YZre\")).getFeed);\nparcelRequire(\"1LvIR\");\nparcelRequire(\"63Sud\");\nparcelRequire(\"fVc2z\");\nparcelRequire(\"jAAIj\");\nparcelRequire(\"7zAkY\");\nparcelRequire(\"dIjgl\");\nparcelRequire(\"9YZre\");\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\n\n});\nparcelRegister(\"1LvIR\", function(module, exports) {\n\n$parcel$export(module.exports, \"textContent\", () => $1492c9a788fb16e1$export$e0e0794250e9118f);\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\n\nvar $avuoa = parcelRequire(\"avuoa\");\n\nvar $1RLFx = parcelRequire(\"1RLFx\");\nfunction $1492c9a788fb16e1$export$39484b727cc2f324(node, options) {\n return (0, $avuoa.default)(node, options);\n}\nfunction $1492c9a788fb16e1$export$7ed15b4d2218408(node, options) {\n return (0, $lftuc.hasChildren)(node) ? node.children.map((node)=>$1492c9a788fb16e1$export$39484b727cc2f324(node, options)).join(\"\") : \"\";\n}\nfunction $1492c9a788fb16e1$export$c72d34660a162238(node) {\n if (Array.isArray(node)) return node.map($1492c9a788fb16e1$export$c72d34660a162238).join(\"\");\n if ((0, $lftuc.isTag)(node)) return node.name === \"br\" ? \"\\n\" : $1492c9a788fb16e1$export$c72d34660a162238(node.children);\n if ((0, $lftuc.isCDATA)(node)) return $1492c9a788fb16e1$export$c72d34660a162238(node.children);\n if ((0, $lftuc.isText)(node)) return node.data;\n return \"\";\n}\nfunction $1492c9a788fb16e1$export$e0e0794250e9118f(node) {\n if (Array.isArray(node)) return node.map($1492c9a788fb16e1$export$e0e0794250e9118f).join(\"\");\n if ((0, $lftuc.hasChildren)(node) && !(0, $lftuc.isComment)(node)) return $1492c9a788fb16e1$export$e0e0794250e9118f(node.children);\n if ((0, $lftuc.isText)(node)) return node.data;\n return \"\";\n}\nfunction $1492c9a788fb16e1$export$5864bc2a45f1eb81(node) {\n if (Array.isArray(node)) return node.map($1492c9a788fb16e1$export$5864bc2a45f1eb81).join(\"\");\n if ((0, $lftuc.hasChildren)(node) && (node.type === (0, $1RLFx.ElementType).Tag || (0, $lftuc.isCDATA)(node))) return $1492c9a788fb16e1$export$5864bc2a45f1eb81(node.children);\n if ((0, $lftuc.isText)(node)) return node.data;\n return \"\";\n}\n\n});\nparcelRegister(\"avuoa\", function(module, exports) {\n\n$parcel$export(module.exports, \"render\", () => $7a645f35b51bdf0b$export$b3890eb0ae9dca99);\n$parcel$export(module.exports, \"default\", () => $7a645f35b51bdf0b$export$2e2bcd8739ae039);\n/*\n * Module dependencies\n */ \nvar $1RLFx = parcelRequire(\"1RLFx\");\nparcelRequire(\"cAp4G\");\nvar $i7QF4 = parcelRequire(\"i7QF4\");\n\nvar $5CdvS = parcelRequire(\"5CdvS\");\nconst $7a645f35b51bdf0b$var$unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\"\n]);\nfunction $7a645f35b51bdf0b$var$replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */ function $7a645f35b51bdf0b$var$formatAttributes(attributes, opts) {\n var _a;\n if (!attributes) return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false ? $7a645f35b51bdf0b$var$replaceQuotes : opts.xmlMode || opts.encodeEntities !== \"utf8\" ? (0, $i7QF4.encodeXML) : (0, $i7QF4.escapeAttribute);\n return Object.keys(attributes).map((key)=>{\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") /* Fix up mixed-case attribute names */ key = (_b = (0, $5CdvS.attributeNames).get(key)) !== null && _b !== void 0 ? _b : key;\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") return key;\n return `${key}=\"${encode(value)}\"`;\n }).join(\" \");\n}\n/**\n * Self-enclosing tags\n */ const $7a645f35b51bdf0b$var$singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\"\n]);\nfunction $7a645f35b51bdf0b$export$b3890eb0ae9dca99(node, options = {}) {\n const nodes = \"length\" in node ? node : [\n node\n ];\n let output = \"\";\n for(let i = 0; i < nodes.length; i++)output += $7a645f35b51bdf0b$var$renderNode(nodes[i], options);\n return output;\n}\nvar $7a645f35b51bdf0b$export$2e2bcd8739ae039 = $7a645f35b51bdf0b$export$b3890eb0ae9dca99;\nfunction $7a645f35b51bdf0b$var$renderNode(node, options) {\n switch(node.type){\n case $1RLFx.Root:\n return $7a645f35b51bdf0b$export$b3890eb0ae9dca99(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case $1RLFx.Doctype:\n case $1RLFx.Directive:\n return $7a645f35b51bdf0b$var$renderDirective(node);\n case $1RLFx.Comment:\n return $7a645f35b51bdf0b$var$renderComment(node);\n case $1RLFx.CDATA:\n return $7a645f35b51bdf0b$var$renderCdata(node);\n case $1RLFx.Script:\n case $1RLFx.Style:\n case $1RLFx.Tag:\n return $7a645f35b51bdf0b$var$renderTag(node, options);\n case $1RLFx.Text:\n return $7a645f35b51bdf0b$var$renderText(node, options);\n }\n}\nconst $7a645f35b51bdf0b$var$foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\"\n]);\nconst $7a645f35b51bdf0b$var$foreignElements = new Set([\n \"svg\",\n \"math\"\n]);\nfunction $7a645f35b51bdf0b$var$renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */ elem.name = (_a = (0, $5CdvS.elementNames).get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */ if (elem.parent && $7a645f35b51bdf0b$var$foreignModeIntegrationPoints.has(elem.parent.name)) opts = {\n ...opts,\n xmlMode: false\n };\n }\n if (!opts.xmlMode && $7a645f35b51bdf0b$var$foreignElements.has(elem.name)) opts = {\n ...opts,\n xmlMode: \"foreign\"\n };\n let tag = `<${elem.name}`;\n const attribs = $7a645f35b51bdf0b$var$formatAttributes(elem.attribs, opts);\n if (attribs) tag += ` ${attribs}`;\n if (elem.children.length === 0 && (opts.xmlMode ? opts.selfClosingTags !== false : opts.selfClosingTags && $7a645f35b51bdf0b$var$singleTag.has(elem.name))) {\n if (!opts.xmlMode) tag += \" \";\n tag += \"/>\";\n } else {\n tag += \">\";\n if (elem.children.length > 0) tag += $7a645f35b51bdf0b$export$b3890eb0ae9dca99(elem.children, opts);\n if (opts.xmlMode || !$7a645f35b51bdf0b$var$singleTag.has(elem.name)) tag += `${elem.name}>`;\n }\n return tag;\n}\nfunction $7a645f35b51bdf0b$var$renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction $7a645f35b51bdf0b$var$renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false && !(!opts.xmlMode && elem.parent && $7a645f35b51bdf0b$var$unencodedElements.has(elem.parent.name))) data = opts.xmlMode || opts.encodeEntities !== \"utf8\" ? (0, $i7QF4.encodeXML)(data) : (0, $i7QF4.escapeText)(data);\n return data;\n}\nfunction $7a645f35b51bdf0b$var$renderCdata(elem) {\n return ``;\n}\nfunction $7a645f35b51bdf0b$var$renderComment(elem) {\n return ``;\n}\n\n});\nparcelRegister(\"cAp4G\", function(module, exports) {\n\n$parcel$export(module.exports, \"encodeXML\", () => (parcelRequire(\"i7QF4\")).encodeXML);\n$parcel$export(module.exports, \"escapeAttribute\", () => (parcelRequire(\"i7QF4\")).escapeAttribute);\n$parcel$export(module.exports, \"escapeText\", () => (parcelRequire(\"i7QF4\")).escapeText);\n\nvar $2vZnL = parcelRequire(\"2vZnL\");\n\nvar $6QxPZ = parcelRequire(\"6QxPZ\");\n\nvar $i7QF4 = parcelRequire(\"i7QF4\");\nvar $929c4c22a3253652$export$b8c86583d9718b50;\n(function(EntityLevel) {\n /** Support only XML entities. */ EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */ EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})($929c4c22a3253652$export$b8c86583d9718b50 || ($929c4c22a3253652$export$b8c86583d9718b50 = {}));\nvar $929c4c22a3253652$export$1851b20d614eb756;\n(function(EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */ EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */ EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */ EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */ EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */ EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})($929c4c22a3253652$export$1851b20d614eb756 || ($929c4c22a3253652$export$1851b20d614eb756 = {}));\nfunction $929c4c22a3253652$export$2f872c0f2117be69(data, options = $929c4c22a3253652$export$b8c86583d9718b50.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === $929c4c22a3253652$export$b8c86583d9718b50.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return (0, $2vZnL.decodeHTML)(data, mode);\n }\n return (0, $2vZnL.decodeXML)(data);\n}\nfunction $929c4c22a3253652$export$c94669f4c7d36be4(data, options = $929c4c22a3253652$export$b8c86583d9718b50.XML) {\n var _a;\n const opts = typeof options === \"number\" ? {\n level: options\n } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : opts.mode = (0, $2vZnL.DecodingMode).Strict;\n return $929c4c22a3253652$export$2f872c0f2117be69(data, opts);\n}\nfunction $929c4c22a3253652$export$c564cdbbe6da493(data, options = $929c4c22a3253652$export$b8c86583d9718b50.XML) {\n const opts = typeof options === \"number\" ? {\n level: options\n } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.UTF8) return (0, $i7QF4.escapeUTF8)(data);\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.Attribute) return (0, $i7QF4.escapeAttribute)(data);\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.Text) return (0, $i7QF4.escapeText)(data);\n if (opts.level === $929c4c22a3253652$export$b8c86583d9718b50.HTML) {\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.ASCII) return (0, $6QxPZ.encodeNonAsciiHTML)(data);\n return (0, $6QxPZ.encodeHTML)(data);\n }\n // ASCII and Extensive are equivalent\n return (0, $i7QF4.encodeXML)(data);\n}\n\n});\nparcelRegister(\"2vZnL\", function(module, exports) {\n\n$parcel$export(module.exports, \"DecodingMode\", () => $1d4e17494442e5eb$export$8c8f129ce60f53c);\n$parcel$export(module.exports, \"decodeHTML\", () => $1d4e17494442e5eb$export$f045cb747ce77a19);\n$parcel$export(module.exports, \"decodeXML\", () => $1d4e17494442e5eb$export$88e3b9643a8bd06e);\n\nvar $iedzx = parcelRequire(\"iedzx\");\n\nvar $cjXy9 = parcelRequire(\"cjXy9\");\n\nvar $1mqh8 = parcelRequire(\"1mqh8\");\nvar $1d4e17494442e5eb$var$CharCodes;\n(function(CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})($1d4e17494442e5eb$var$CharCodes || ($1d4e17494442e5eb$var$CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */ const $1d4e17494442e5eb$var$TO_LOWER_BIT = 32;\nvar $1d4e17494442e5eb$export$6a4325c613e0faec;\n(function(BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})($1d4e17494442e5eb$export$6a4325c613e0faec || ($1d4e17494442e5eb$export$6a4325c613e0faec = {}));\nfunction $1d4e17494442e5eb$var$isNumber(code) {\n return code >= $1d4e17494442e5eb$var$CharCodes.ZERO && code <= $1d4e17494442e5eb$var$CharCodes.NINE;\n}\nfunction $1d4e17494442e5eb$var$isHexadecimalCharacter(code) {\n return code >= $1d4e17494442e5eb$var$CharCodes.UPPER_A && code <= $1d4e17494442e5eb$var$CharCodes.UPPER_F || code >= $1d4e17494442e5eb$var$CharCodes.LOWER_A && code <= $1d4e17494442e5eb$var$CharCodes.LOWER_F;\n}\nfunction $1d4e17494442e5eb$var$isAsciiAlphaNumeric(code) {\n return code >= $1d4e17494442e5eb$var$CharCodes.UPPER_A && code <= $1d4e17494442e5eb$var$CharCodes.UPPER_Z || code >= $1d4e17494442e5eb$var$CharCodes.LOWER_A && code <= $1d4e17494442e5eb$var$CharCodes.LOWER_Z || $1d4e17494442e5eb$var$isNumber(code);\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */ function $1d4e17494442e5eb$var$isEntityInAttributeInvalidEnd(code) {\n return code === $1d4e17494442e5eb$var$CharCodes.EQUALS || $1d4e17494442e5eb$var$isAsciiAlphaNumeric(code);\n}\nvar $1d4e17494442e5eb$var$EntityDecoderState;\n(function(EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})($1d4e17494442e5eb$var$EntityDecoderState || ($1d4e17494442e5eb$var$EntityDecoderState = {}));\nvar $1d4e17494442e5eb$export$8c8f129ce60f53c;\n(function(DecodingMode) {\n /** Entities in text nodes that can end with any character. */ DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */ DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */ DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})($1d4e17494442e5eb$export$8c8f129ce60f53c || ($1d4e17494442e5eb$export$8c8f129ce60f53c = {}));\nclass $1d4e17494442e5eb$export$15263a93ff7ec8ba {\n constructor(/** The tree used to decode entities. */ decodeTree, /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */ emitCodePoint, /** An object that is used to produce errors. */ errors){\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */ this.state = $1d4e17494442e5eb$var$EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */ this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */ this.result = 0;\n /** The current index in the decode tree. */ this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */ this.excess = 1;\n /** The mode in which the decoder is operating. */ this.decodeMode = $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict;\n }\n /** Resets the instance to make it reusable. */ startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ write(str, offset) {\n switch(this.state){\n case $1d4e17494442e5eb$var$EntityDecoderState.EntityStart:\n if (str.charCodeAt(offset) === $1d4e17494442e5eb$var$CharCodes.NUM) {\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericStart:\n return this.stateNumericStart(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericDecimal:\n return this.stateNumericDecimal(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericHex:\n return this.stateNumericHex(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NamedEntity:\n return this.stateNamedEntity(str, offset);\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNumericStart(str, offset) {\n if (offset >= str.length) return -1;\n if ((str.charCodeAt(offset) | $1d4e17494442e5eb$var$TO_LOWER_BIT) === $1d4e17494442e5eb$var$CharCodes.LOWER_X) {\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNumericHex(str, offset) {\n const startIdx = offset;\n while(offset < str.length){\n const char = str.charCodeAt(offset);\n if ($1d4e17494442e5eb$var$isNumber(char) || $1d4e17494442e5eb$var$isHexadecimalCharacter(char)) offset += 1;\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while(offset < str.length){\n const char = str.charCodeAt(offset);\n if ($1d4e17494442e5eb$var$isNumber(char)) offset += 1;\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */ emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === $1d4e17494442e5eb$var$CharCodes.SEMI) this.consumed += 1;\n else if (this.decodeMode === $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict) return 0;\n this.emitCodePoint((0, $1mqh8.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== $1d4e17494442e5eb$var$CharCodes.SEMI) this.errors.missingSemicolonAfterCharacterReference();\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNamedEntity(str, offset) {\n const { decodeTree: decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & $1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH) >> 14;\n for(; offset < str.length; offset++, this.excess++){\n const char = str.charCodeAt(offset);\n this.treeIndex = $1d4e17494442e5eb$export$44c08d99945e6276(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) return this.result === 0 || // If we are parsing an attribute\n this.decodeMode === $1d4e17494442e5eb$export$8c8f129ce60f53c.Attribute && // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 || // And there should be no invalid characters.\n $1d4e17494442e5eb$var$isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();\n current = decodeTree[this.treeIndex];\n valueLength = (current & $1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === $1d4e17494442e5eb$var$CharCodes.SEMI) return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */ emitNotTerminatedNamedEntity() {\n var _a;\n const { result: result, decodeTree: decodeTree } = this;\n const valueLength = (decodeTree[result] & $1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 || _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */ emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree: decodeTree } = this;\n this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~$1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH : decodeTree[result + 1], consumed);\n if (valueLength === 3) // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */ end() {\n var _a;\n switch(this.state){\n case $1d4e17494442e5eb$var$EntityDecoderState.NamedEntity:\n // Emit a named entity if we have one.\n return this.result !== 0 && (this.decodeMode !== $1d4e17494442e5eb$export$8c8f129ce60f53c.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;\n // Otherwise, emit a numeric entity if we have one.\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericDecimal:\n return this.emitNumericEntity(0, 2);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericHex:\n return this.emitNumericEntity(0, 3);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericStart:\n (_a = this.errors) === null || _a === void 0 || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n case $1d4e17494442e5eb$var$EntityDecoderState.EntityStart:\n // Return 0 if we have no entity.\n return 0;\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */ function $1d4e17494442e5eb$var$getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new $1d4e17494442e5eb$export$15263a93ff7ec8ba(decodeTree, (str)=>ret += (0, $1mqh8.fromCodePoint)(str));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while((offset = str.indexOf(\"&\", offset)) >= 0){\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\nfunction $1d4e17494442e5eb$export$44c08d99945e6276(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & $1d4e17494442e5eb$export$6a4325c613e0faec.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & $1d4e17494442e5eb$export$6a4325c613e0faec.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while(lo <= hi){\n const mid = lo + hi >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) lo = mid + 1;\n else if (midVal > char) hi = mid - 1;\n else return decodeTree[mid + branchCount];\n }\n return -1;\n}\nconst $1d4e17494442e5eb$var$htmlDecoder = $1d4e17494442e5eb$var$getDecoder((0, $iedzx.default));\nconst $1d4e17494442e5eb$var$xmlDecoder = $1d4e17494442e5eb$var$getDecoder((0, $cjXy9.default));\nfunction $1d4e17494442e5eb$export$f045cb747ce77a19(str, mode = $1d4e17494442e5eb$export$8c8f129ce60f53c.Legacy) {\n return $1d4e17494442e5eb$var$htmlDecoder(str, mode);\n}\nfunction $1d4e17494442e5eb$export$49f5e8089adb006a(str) {\n return $1d4e17494442e5eb$var$htmlDecoder(str, $1d4e17494442e5eb$export$8c8f129ce60f53c.Attribute);\n}\nfunction $1d4e17494442e5eb$export$da52f4371b3f37de(str) {\n return $1d4e17494442e5eb$var$htmlDecoder(str, $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict);\n}\nfunction $1d4e17494442e5eb$export$88e3b9643a8bd06e(str) {\n return $1d4e17494442e5eb$var$xmlDecoder(str, $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict);\n}\n\n});\nparcelRegister(\"iedzx\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $d4540ff683f7394b$export$2e2bcd8739ae039);\n// Generated using scripts/write-decode-map.ts\nvar $d4540ff683f7394b$export$2e2bcd8739ae039 = new Uint16Array(// prettier-ignore\n'\\u1D41<\\xd5\\u0131\\u028A\\u049D\\u057B\\u05D0\\u0675\\u06DE\\u07A2\\u07D6\\u080F\\u0A4A\\u0A91\\u0DA1\\u0E6D\\u0F09\\u0F26\\u10CA\\u1228\\u12E1\\u1415\\u149D\\u14C3\\u14DF\\u1525\\0\\0\\0\\0\\0\\0\\u156B\\u16CD\\u198D\\u1C12\\u1DDD\\u1F7E\\u2060\\u21B0\\u228D\\u23C0\\u23FB\\u2442\\u2824\\u2912\\u2D08\\u2E48\\u2FCE\\u3016\\u32BA\\u3639\\u37AC\\u38FE\\u3A28\\u3A71\\u3AE0\\u3B2E\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803B\\xc6\\u40C6P\\u803B&\\u4026cute\\u803B\\xc1\\u40C1reve;\\u4102\\u0100iyx}rc\\u803B\\xc2\\u40C2;\\u4410r;\\uC000\\ud835\\udd04rave\\u803B\\xc0\\u40C0pha;\\u4391acr;\\u4100d;\\u6A53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uC000\\ud835\\udd38plyFunction;\\u6061ing\\u803B\\xc5\\u40C5\\u0100cs\\xbe\\xc3r;\\uC000\\ud835\\udc9cign;\\u6254ilde\\u803B\\xc3\\u40C3ml\\u803B\\xc4\\u40C4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011C\\u0122\\u0127\\u012A\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6AE7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010B\\u0114ause;\\u6235noullis;\\u612Ca;\\u4392r;\\uC000\\ud835\\udd05pf;\\uC000\\ud835\\udd39eve;\\u42D8c\\xf2\\u0113mpeq;\\u624E\\u0700HOacdefhilorsu\\u014D\\u0151\\u0156\\u0180\\u019E\\u01A2\\u01B5\\u01B7\\u01BA\\u01DC\\u0215\\u0273\\u0278\\u027Ecy;\\u4427PY\\u803B\\xa9\\u40A9\\u0180cpy\\u015D\\u0162\\u017Aute;\\u4106\\u0100;i\\u0167\\u0168\\u62D2talDifferentialD;\\u6145leys;\\u612D\\u0200aeio\\u0189\\u018E\\u0194\\u0198ron;\\u410Cdil\\u803B\\xc7\\u40C7rc;\\u4108nint;\\u6230ot;\\u410A\\u0100dn\\u01A7\\u01ADilla;\\u40B8terDot;\\u40B7\\xf2\\u017Fi;\\u43A7rcle\\u0200DMPT\\u01C7\\u01CB\\u01D1\\u01D6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01E2\\u01F8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020FoubleQuote;\\u601Duote;\\u6019\\u0200lnpu\\u021E\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6A74\\u0180git\\u022F\\u0236\\u023Aruent;\\u6261nt;\\u622FourIntegral;\\u622E\\u0100fr\\u024C\\u024E;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6A2Fcr;\\uC000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62D3ap;\\u624D\\u0580DJSZacefios\\u02A0\\u02AC\\u02B0\\u02B4\\u02B8\\u02CB\\u02D7\\u02E1\\u02E6\\u0333\\u048D\\u0100;o\\u0179\\u02A5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440F\\u0180grs\\u02BF\\u02C4\\u02C7ger;\\u6021r;\\u61A1hv;\\u6AE4\\u0100ay\\u02D0\\u02D5ron;\\u410E;\\u4414l\\u0100;t\\u02DD\\u02DE\\u6207a;\\u4394r;\\uC000\\ud835\\udd07\\u0100af\\u02EB\\u0327\\u0100cm\\u02F0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031Ccute;\\u40B4o\\u0174\\u030B\\u030D;\\u42D9bleAcute;\\u42DDrave;\\u4060ilde;\\u42DCond;\\u62C4ferentialD;\\u6146\\u0470\\u033D\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uC000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034D\\u40A8ot;\\u60DCqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03CF\\u03E2\\u03F8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037B\\xbb\\u0349nArrow;\\u61D3\\u0100eo\\u0387\\u03A4ft\\u0180ART\\u0390\\u0396\\u03A1rrow;\\u61D0ightArrow;\\u61D4e\\xe5\\u02CAng\\u0100LR\\u03AB\\u03C4eft\\u0100AR\\u03B3\\u03B9rrow;\\u67F8ightArrow;\\u67FAightArrow;\\u67F9ight\\u0100AT\\u03D8\\u03DErrow;\\u61D2ee;\\u62A8p\\u0241\\u03E9\\0\\0\\u03EFrrow;\\u61D1ownArrow;\\u61D5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042A\\u0430\\u045E\\u047F\\u037Crrow\\u0180;BU\\u041D\\u041E\\u0422\\u6193ar;\\u6913pArrow;\\u61F5reve;\\u4311eft\\u02D2\\u043A\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695Eector\\u0100;B\\u0459\\u045A\\u61BDar;\\u6956ight\\u01D4\\u0467\\0\\u0471eeVector;\\u695Fector\\u0100;B\\u047A\\u047B\\u61C1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62A4rrow;\\u61A7\\u0100ct\\u0492\\u0497r;\\uC000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04BD\\u04C0\\u04C4\\u04CB\\u04DE\\u04E2\\u04E7\\u04EE\\u04F5\\u0521\\u052F\\u0536\\u0552\\u055D\\u0560\\u0565G;\\u414AH\\u803B\\xd0\\u40D0cute\\u803B\\xc9\\u40C9\\u0180aiy\\u04D2\\u04D7\\u04DCron;\\u411Arc\\u803B\\xca\\u40CA;\\u442Dot;\\u4116r;\\uC000\\ud835\\udd08rave\\u803B\\xc8\\u40C8ement;\\u6208\\u0100ap\\u04FA\\u04FEcr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65FBerySmallSquare;\\u65AB\\u0100gp\\u0526\\u052Aon;\\u4118f;\\uC000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053C\\u0549l\\u0100;T\\u0542\\u0543\\u6A75ilde;\\u6242librium;\\u61CC\\u0100ci\\u0557\\u055Ar;\\u6130m;\\u6A73a;\\u4397ml\\u803B\\xcb\\u40CB\\u0100ip\\u056A\\u056Fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058D\\u05B2\\u05CCy;\\u4424r;\\uC000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05A3mallSquare;\\u65FCerySmallSquare;\\u65AA\\u0370\\u05BA\\0\\u05BF\\0\\0\\u05C4f;\\uC000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05CB\\u0600JTabcdfgorst\\u05E8\\u05EC\\u05EF\\u05FA\\u0600\\u0612\\u0616\\u061B\\u061D\\u0623\\u066C\\u0672cy;\\u4403\\u803B>\\u403Emma\\u0100;d\\u05F7\\u05F8\\u4393;\\u43DCreve;\\u411E\\u0180eiy\\u0607\\u060C\\u0610dil;\\u4122rc;\\u411C;\\u4413ot;\\u4120r;\\uC000\\ud835\\udd0a;\\u62D9pf;\\uC000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064E\\u0656\\u065B\\u0666qual\\u0100;L\\u063E\\u063F\\u6265ess;\\u62DBullEqual;\\u6267reater;\\u6AA2ess;\\u6277lantEqual;\\u6A7Eilde;\\u6273cr;\\uC000\\ud835\\udca2;\\u626B\\u0400Aacfiosu\\u0685\\u068B\\u0696\\u069B\\u069E\\u06AA\\u06BE\\u06CARDcy;\\u442A\\u0100ct\\u0690\\u0694ek;\\u42C7;\\u405Eirc;\\u4124r;\\u610ClbertSpace;\\u610B\\u01F0\\u06AF\\0\\u06B2f;\\u610DizontalLine;\\u6500\\u0100ct\\u06C3\\u06C5\\xf2\\u06A9rok;\\u4126mp\\u0144\\u06D0\\u06D8ownHum\\xf0\\u012Fqual;\\u624F\\u0700EJOacdfgmnostu\\u06FA\\u06FE\\u0703\\u0707\\u070E\\u071A\\u071E\\u0721\\u0728\\u0744\\u0778\\u078B\\u078F\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803B\\xcd\\u40CD\\u0100iy\\u0713\\u0718rc\\u803B\\xce\\u40CE;\\u4418ot;\\u4130r;\\u6111rave\\u803B\\xcc\\u40CC\\u0180;ap\\u0720\\u072F\\u073F\\u0100cg\\u0734\\u0737r;\\u412AinaryI;\\u6148lie\\xf3\\u03DD\\u01F4\\u0749\\0\\u0762\\u0100;e\\u074D\\u074E\\u622C\\u0100gr\\u0753\\u0758ral;\\u622Bsection;\\u62C2isible\\u0100CT\\u076C\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077F\\u0783\\u0788on;\\u412Ef;\\uC000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01EB\\u079A\\0\\u079Ecy;\\u4406l\\u803B\\xcf\\u40CF\\u0280cfosu\\u07AC\\u07B7\\u07BC\\u07C2\\u07D0\\u0100iy\\u07B1\\u07B5rc;\\u4134;\\u4419r;\\uC000\\ud835\\udd0dpf;\\uC000\\ud835\\udd41\\u01E3\\u07C7\\0\\u07CCr;\\uC000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07E4\\u07E8\\u07EC\\u07F1\\u07FD\\u0802\\u0808cy;\\u4425cy;\\u440Cppa;\\u439A\\u0100ey\\u07F6\\u07FBdil;\\u4136;\\u441Ar;\\uC000\\ud835\\udd0epf;\\uC000\\ud835\\udd42cr;\\uC000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082C\\u0850\\u0863\\u09B3\\u09B8\\u09C7\\u09CD\\u0A37\\u0A47cy;\\u4409\\u803B<\\u403C\\u0280cmnpr\\u0837\\u083C\\u0841\\u0844\\u084Dute;\\u4139bda;\\u439Bg;\\u67EAlacetrf;\\u6112r;\\u619E\\u0180aey\\u0857\\u085C\\u0861ron;\\u413Ddil;\\u413B;\\u441B\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087E\\u08A9\\u08B1\\u08E0\\u08E6\\u08FC\\u092F\\u095B\\u0390\\u096A\\u0100nr\\u0883\\u088FgleBracket;\\u67E8row\\u0180;BR\\u0899\\u089A\\u089E\\u6190ar;\\u61E4ightArrow;\\u61C6eiling;\\u6308o\\u01F5\\u08B7\\0\\u08C3bleBracket;\\u67E6n\\u01D4\\u08C8\\0\\u08D2eeVector;\\u6961ector\\u0100;B\\u08DB\\u08DC\\u61C3ar;\\u6959loor;\\u630Aight\\u0100AV\\u08EF\\u08F5rrow;\\u6194ector;\\u694E\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090A\\u0910\\u62A3rrow;\\u61A4ector;\\u695Aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62B2ar;\\u69CFqual;\\u62B4p\\u0180DTV\\u0937\\u0942\\u094CownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61BFar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61BCar;\\u6952ight\\xe1\\u039Cs\\u0300EFGLST\\u097E\\u098B\\u0995\\u099D\\u09A2\\u09ADqualGreater;\\u62DAullEqual;\\u6266reater;\\u6276ess;\\u6AA1lantEqual;\\u6A7Dilde;\\u6272r;\\uC000\\ud835\\udd0f\\u0100;e\\u09BD\\u09BE\\u62D8ftarrow;\\u61DAidot;\\u413F\\u0180npw\\u09D4\\u0A16\\u0A1Bg\\u0200LRlr\\u09DE\\u09F7\\u0A02\\u0A10eft\\u0100AR\\u09E6\\u09ECrrow;\\u67F5ightArrow;\\u67F7ightArrow;\\u67F6eft\\u0100ar\\u03B3\\u0A0Aight\\xe1\\u03BFight\\xe1\\u03CAf;\\uC000\\ud835\\udd43er\\u0100LR\\u0A22\\u0A2CeftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0A3E\\u0A40\\u0A42\\xf2\\u084C;\\u61B0rok;\\u4141;\\u626A\\u0400acefiosu\\u0A5A\\u0A5D\\u0A60\\u0A77\\u0A7C\\u0A85\\u0A8B\\u0A8Ep;\\u6905y;\\u441C\\u0100dl\\u0A65\\u0A6FiumSpace;\\u605Flintrf;\\u6133r;\\uC000\\ud835\\udd10nusPlus;\\u6213pf;\\uC000\\ud835\\udd44c\\xf2\\u0A76;\\u439C\\u0480Jacefostu\\u0AA3\\u0AA7\\u0AAD\\u0AC0\\u0B14\\u0B19\\u0D91\\u0D97\\u0D9Ecy;\\u440Acute;\\u4143\\u0180aey\\u0AB4\\u0AB9\\u0ABEron;\\u4147dil;\\u4145;\\u441D\\u0180gsw\\u0AC7\\u0AF0\\u0B0Eative\\u0180MTV\\u0AD3\\u0ADF\\u0AE8ediumSpace;\\u600Bhi\\u0100cn\\u0AE6\\u0AD8\\xeb\\u0AD9eryThi\\xee\\u0AD9ted\\u0100GL\\u0AF8\\u0B06reaterGreate\\xf2\\u0673essLes\\xf3\\u0A48Line;\\u400Ar;\\uC000\\ud835\\udd11\\u0200Bnpt\\u0B22\\u0B28\\u0B37\\u0B3Areak;\\u6060BreakingSpace;\\u40A0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0B55\\u0B56\\u0B6A\\u0B7C\\u0BA1\\u0BEB\\u0C04\\u0C5E\\u0C84\\u0CA6\\u0CD8\\u0D61\\u0D85\\u6AEC\\u0100ou\\u0B5B\\u0B64ngruent;\\u6262pCap;\\u626DoubleVerticalBar;\\u6226\\u0180lqx\\u0B83\\u0B8A\\u0B9Bement;\\u6209ual\\u0100;T\\u0B92\\u0B93\\u6260ilde;\\uC000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0BB6\\u0BB7\\u0BBD\\u0BC9\\u0BD3\\u0BD8\\u0BE5\\u626Fqual;\\u6271ullEqual;\\uC000\\u2267\\u0338reater;\\uC000\\u226B\\u0338ess;\\u6279lantEqual;\\uC000\\u2A7E\\u0338ilde;\\u6275ump\\u0144\\u0BF2\\u0BFDownHump;\\uC000\\u224E\\u0338qual;\\uC000\\u224F\\u0338e\\u0100fs\\u0C0A\\u0C27tTriangle\\u0180;BE\\u0C1A\\u0C1B\\u0C21\\u62EAar;\\uC000\\u29CF\\u0338qual;\\u62ECs\\u0300;EGLST\\u0C35\\u0C36\\u0C3C\\u0C44\\u0C4B\\u0C58\\u626Equal;\\u6270reater;\\u6278ess;\\uC000\\u226A\\u0338lantEqual;\\uC000\\u2A7D\\u0338ilde;\\u6274ested\\u0100GL\\u0C68\\u0C79reaterGreater;\\uC000\\u2AA2\\u0338essLess;\\uC000\\u2AA1\\u0338recedes\\u0180;ES\\u0C92\\u0C93\\u0C9B\\u6280qual;\\uC000\\u2AAF\\u0338lantEqual;\\u62E0\\u0100ei\\u0CAB\\u0CB9verseElement;\\u620CghtTriangle\\u0180;BE\\u0CCB\\u0CCC\\u0CD2\\u62EBar;\\uC000\\u29D0\\u0338qual;\\u62ED\\u0100qu\\u0CDD\\u0D0CuareSu\\u0100bp\\u0CE8\\u0CF9set\\u0100;E\\u0CF0\\u0CF3\\uC000\\u228F\\u0338qual;\\u62E2erset\\u0100;E\\u0D03\\u0D06\\uC000\\u2290\\u0338qual;\\u62E3\\u0180bcp\\u0D13\\u0D24\\u0D4Eset\\u0100;E\\u0D1B\\u0D1E\\uC000\\u2282\\u20D2qual;\\u6288ceeds\\u0200;EST\\u0D32\\u0D33\\u0D3B\\u0D46\\u6281qual;\\uC000\\u2AB0\\u0338lantEqual;\\u62E1ilde;\\uC000\\u227F\\u0338erset\\u0100;E\\u0D58\\u0D5B\\uC000\\u2283\\u20D2qual;\\u6289ilde\\u0200;EFT\\u0D6E\\u0D6F\\u0D75\\u0D7F\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uC000\\ud835\\udca9ilde\\u803B\\xd1\\u40D1;\\u439D\\u0700Eacdfgmoprstuv\\u0DBD\\u0DC2\\u0DC9\\u0DD5\\u0DDB\\u0DE0\\u0DE7\\u0DFC\\u0E02\\u0E20\\u0E22\\u0E32\\u0E3F\\u0E44lig;\\u4152cute\\u803B\\xd3\\u40D3\\u0100iy\\u0DCE\\u0DD3rc\\u803B\\xd4\\u40D4;\\u441Eblac;\\u4150r;\\uC000\\ud835\\udd12rave\\u803B\\xd2\\u40D2\\u0180aei\\u0DEE\\u0DF2\\u0DF6cr;\\u414Cga;\\u43A9cron;\\u439Fpf;\\uC000\\ud835\\udd46enCurly\\u0100DQ\\u0E0E\\u0E1AoubleQuote;\\u601Cuote;\\u6018;\\u6A54\\u0100cl\\u0E27\\u0E2Cr;\\uC000\\ud835\\udcaaash\\u803B\\xd8\\u40D8i\\u016C\\u0E37\\u0E3Cde\\u803B\\xd5\\u40D5es;\\u6A37ml\\u803B\\xd6\\u40D6er\\u0100BP\\u0E4B\\u0E60\\u0100ar\\u0E50\\u0E53r;\\u603Eac\\u0100ek\\u0E5A\\u0E5C;\\u63DEet;\\u63B4arenthesis;\\u63DC\\u0480acfhilors\\u0E7F\\u0E87\\u0E8A\\u0E8F\\u0E92\\u0E94\\u0E9D\\u0EB0\\u0EFCrtialD;\\u6202y;\\u441Fr;\\uC000\\ud835\\udd13i;\\u43A6;\\u43A0usMinus;\\u40B1\\u0100ip\\u0EA2\\u0EADncareplan\\xe5\\u069Df;\\u6119\\u0200;eio\\u0EB9\\u0EBA\\u0EE0\\u0EE4\\u6ABBcedes\\u0200;EST\\u0EC8\\u0EC9\\u0ECF\\u0EDA\\u627Aqual;\\u6AAFlantEqual;\\u627Cilde;\\u627Eme;\\u6033\\u0100dp\\u0EE9\\u0EEEuct;\\u620Fortion\\u0100;a\\u0225\\u0EF9l;\\u621D\\u0100ci\\u0F01\\u0F06r;\\uC000\\ud835\\udcab;\\u43A8\\u0200Ufos\\u0F11\\u0F16\\u0F1B\\u0F1FOT\\u803B\"\\u4022r;\\uC000\\ud835\\udd14pf;\\u611Acr;\\uC000\\ud835\\udcac\\u0600BEacefhiorsu\\u0F3E\\u0F43\\u0F47\\u0F60\\u0F73\\u0FA7\\u0FAA\\u0FAD\\u1096\\u10A9\\u10B4\\u10BEarr;\\u6910G\\u803B\\xae\\u40AE\\u0180cnr\\u0F4E\\u0F53\\u0F56ute;\\u4154g;\\u67EBr\\u0100;t\\u0F5C\\u0F5D\\u61A0l;\\u6916\\u0180aey\\u0F67\\u0F6C\\u0F71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0F78\\u0F79\\u611Cerse\\u0100EU\\u0F82\\u0F99\\u0100lq\\u0F87\\u0F8Eement;\\u620Builibrium;\\u61CBpEquilibrium;\\u696Fr\\xbb\\u0F79o;\\u43A1ght\\u0400ACDFTUVa\\u0FC1\\u0FEB\\u0FF3\\u1022\\u1028\\u105B\\u1087\\u03D8\\u0100nr\\u0FC6\\u0FD2gleBracket;\\u67E9row\\u0180;BL\\u0FDC\\u0FDD\\u0FE1\\u6192ar;\\u61E5eftArrow;\\u61C4eiling;\\u6309o\\u01F5\\u0FF9\\0\\u1005bleBracket;\\u67E7n\\u01D4\\u100A\\0\\u1014eeVector;\\u695Dector\\u0100;B\\u101D\\u101E\\u61C2ar;\\u6955loor;\\u630B\\u0100er\\u102D\\u1043e\\u0180;AV\\u1035\\u1036\\u103C\\u62A2rrow;\\u61A6ector;\\u695Biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62B3ar;\\u69D0qual;\\u62B5p\\u0180DTV\\u1063\\u106E\\u1078ownVector;\\u694FeeVector;\\u695Cector\\u0100;B\\u1082\\u1083\\u61BEar;\\u6954ector\\u0100;B\\u1091\\u1092\\u61C0ar;\\u6953\\u0100pu\\u109B\\u109Ef;\\u611DndImplies;\\u6970ightarrow;\\u61DB\\u0100ch\\u10B9\\u10BCr;\\u611B;\\u61B1leDelayed;\\u69F4\\u0680HOacfhimoqstu\\u10E4\\u10F1\\u10F7\\u10FD\\u1119\\u111E\\u1151\\u1156\\u1161\\u1167\\u11B5\\u11BB\\u11BF\\u0100Cc\\u10E9\\u10EEHcy;\\u4429y;\\u4428FTcy;\\u442Ccute;\\u415A\\u0280;aeiy\\u1108\\u1109\\u110E\\u1113\\u1117\\u6ABCron;\\u4160dil;\\u415Erc;\\u415C;\\u4421r;\\uC000\\ud835\\udd16ort\\u0200DLRU\\u112A\\u1134\\u113E\\u1149ownArrow\\xbb\\u041EeftArrow\\xbb\\u089AightArrow\\xbb\\u0FDDpArrow;\\u6191gma;\\u43A3allCircle;\\u6218pf;\\uC000\\ud835\\udd4a\\u0272\\u116D\\0\\0\\u1170t;\\u621Aare\\u0200;ISU\\u117B\\u117C\\u1189\\u11AF\\u65A1ntersection;\\u6293u\\u0100bp\\u118F\\u119Eset\\u0100;E\\u1197\\u1198\\u628Fqual;\\u6291erset\\u0100;E\\u11A8\\u11A9\\u6290qual;\\u6292nion;\\u6294cr;\\uC000\\ud835\\udcaear;\\u62C6\\u0200bcmp\\u11C8\\u11DB\\u1209\\u120B\\u0100;s\\u11CD\\u11CE\\u62D0et\\u0100;E\\u11CD\\u11D5qual;\\u6286\\u0100ch\\u11E0\\u1205eeds\\u0200;EST\\u11ED\\u11EE\\u11F4\\u11FF\\u627Bqual;\\u6AB0lantEqual;\\u627Dilde;\\u627FTh\\xe1\\u0F8C;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62D1rset\\u0100;E\\u121C\\u121D\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123E\\u1244\\u1249\\u1255\\u125E\\u1271\\u1276\\u129F\\u12C2\\u12C8\\u12D1ORN\\u803B\\xde\\u40DEADE;\\u6122\\u0100Hc\\u124E\\u1252cy;\\u440By;\\u4426\\u0100bu\\u125A\\u125C;\\u4009;\\u43A4\\u0180aey\\u1265\\u126A\\u126Fron;\\u4164dil;\\u4162;\\u4422r;\\uC000\\ud835\\udd17\\u0100ei\\u127B\\u1289\\u01F2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128E\\u1298kSpace;\\uC000\\u205F\\u200ASpace;\\u6009lde\\u0200;EFT\\u12AB\\u12AC\\u12B2\\u12BC\\u623Cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uC000\\ud835\\udd4bipleDot;\\u60DB\\u0100ct\\u12D6\\u12DBr;\\uC000\\ud835\\udcafrok;\\u4166\\u0AE1\\u12F7\\u130E\\u131A\\u1326\\0\\u132C\\u1331\\0\\0\\0\\0\\0\\u1338\\u133D\\u1377\\u1385\\0\\u13FF\\u1404\\u140A\\u1410\\u0100cr\\u12FB\\u1301ute\\u803B\\xda\\u40DAr\\u0100;o\\u1307\\u1308\\u619Fcir;\\u6949r\\u01E3\\u1313\\0\\u1316y;\\u440Eve;\\u416C\\u0100iy\\u131E\\u1323rc\\u803B\\xdb\\u40DB;\\u4423blac;\\u4170r;\\uC000\\ud835\\udd18rave\\u803B\\xd9\\u40D9acr;\\u416A\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135D\\u0100ar\\u134D\\u1350r;\\u405Fac\\u0100ek\\u1357\\u1359;\\u63DFet;\\u63B5arenthesis;\\u63DDon\\u0100;P\\u1370\\u1371\\u62C3lus;\\u628E\\u0100gp\\u137B\\u137Fon;\\u4172f;\\uC000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13AE\\u13B8\\u13C4\\u03E8\\u13D2\\u13D7\\u13F3rrow\\u0180;BD\\u1150\\u13A0\\u13A4ar;\\u6912ownArrow;\\u61C5ownArrow;\\u6195quilibrium;\\u696Eee\\u0100;A\\u13CB\\u13CC\\u62A5rrow;\\u61A5own\\xe1\\u03F3er\\u0100LR\\u13DE\\u13E8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13F9\\u13FA\\u43D2on;\\u43A5ing;\\u416Ecr;\\uC000\\ud835\\udcb0ilde;\\u4168ml\\u803B\\xdc\\u40DC\\u0480Dbcdefosv\\u1427\\u142C\\u1430\\u1433\\u143E\\u1485\\u148A\\u1490\\u1496ash;\\u62ABar;\\u6AEBy;\\u4412ash\\u0100;l\\u143B\\u143C\\u62A9;\\u6AE6\\u0100er\\u1443\\u1445;\\u62C1\\u0180bty\\u144C\\u1450\\u147Aar;\\u6016\\u0100;i\\u144F\\u1455cal\\u0200BLST\\u1461\\u1465\\u146A\\u1474ar;\\u6223ine;\\u407Ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600Ar;\\uC000\\ud835\\udd19pf;\\uC000\\ud835\\udd4dcr;\\uC000\\ud835\\udcb1dash;\\u62AA\\u0280cefos\\u14A7\\u14AC\\u14B1\\u14B6\\u14BCirc;\\u4174dge;\\u62C0r;\\uC000\\ud835\\udd1apf;\\uC000\\ud835\\udd4ecr;\\uC000\\ud835\\udcb2\\u0200fios\\u14CB\\u14D0\\u14D2\\u14D8r;\\uC000\\ud835\\udd1b;\\u439Epf;\\uC000\\ud835\\udd4fcr;\\uC000\\ud835\\udcb3\\u0480AIUacfosu\\u14F1\\u14F5\\u14F9\\u14FD\\u1504\\u150F\\u1514\\u151A\\u1520cy;\\u442Fcy;\\u4407cy;\\u442Ecute\\u803B\\xdd\\u40DD\\u0100iy\\u1509\\u150Drc;\\u4176;\\u442Br;\\uC000\\ud835\\udd1cpf;\\uC000\\ud835\\udd50cr;\\uC000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153F\\u154B\\u154F\\u155D\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417D;\\u4417ot;\\u417B\\u01F2\\u1554\\0\\u155BoWidt\\xe8\\u0AD9a;\\u4396r;\\u6128pf;\\u6124cr;\\uC000\\ud835\\udcb5\\u0BE1\\u1583\\u158A\\u1590\\0\\u15B0\\u15B6\\u15BF\\0\\0\\0\\0\\u15C6\\u15DB\\u15EB\\u165F\\u166D\\0\\u1695\\u169B\\u16B2\\u16B9\\0\\u16BEcute\\u803B\\xe1\\u40E1reve;\\u4103\\u0300;Ediuy\\u159C\\u159D\\u15A1\\u15A3\\u15A8\\u15AD\\u623E;\\uC000\\u223E\\u0333;\\u623Frc\\u803B\\xe2\\u40E2te\\u80BB\\xb4\\u0306;\\u4430lig\\u803B\\xe6\\u40E6\\u0100;r\\xb2\\u15BA;\\uC000\\ud835\\udd1erave\\u803B\\xe0\\u40E0\\u0100ep\\u15CA\\u15D6\\u0100fp\\u15CF\\u15D4sym;\\u6135\\xe8\\u15D3ha;\\u43B1\\u0100ap\\u15DFc\\u0100cl\\u15E4\\u15E7r;\\u4101g;\\u6A3F\\u0264\\u15F0\\0\\0\\u160A\\u0280;adsv\\u15FA\\u15FB\\u15FF\\u1601\\u1607\\u6227nd;\\u6A55;\\u6A5Clope;\\u6A58;\\u6A5A\\u0380;elmrsz\\u1618\\u1619\\u161B\\u161E\\u163F\\u164F\\u1659\\u6220;\\u69A4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163A\\u163C\\u163E;\\u69A8;\\u69A9;\\u69AA;\\u69AB;\\u69AC;\\u69AD;\\u69AE;\\u69AFt\\u0100;v\\u1645\\u1646\\u621Fb\\u0100;d\\u164C\\u164D\\u62BE;\\u699D\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637C\\u0100gp\\u1663\\u1667on;\\u4105f;\\uC000\\ud835\\udd52\\u0380;Eaeiop\\u12C1\\u167B\\u167D\\u1682\\u1684\\u1687\\u168A;\\u6A70cir;\\u6A6F;\\u624Ad;\\u624Bs;\\u4027rox\\u0100;e\\u12C1\\u1692\\xf1\\u1683ing\\u803B\\xe5\\u40E5\\u0180cty\\u16A1\\u16A6\\u16A8r;\\uC000\\ud835\\udcb6;\\u402Amp\\u0100;e\\u12C1\\u16AF\\xf1\\u0288ilde\\u803B\\xe3\\u40E3ml\\u803B\\xe4\\u40E4\\u0100ci\\u16C2\\u16C8onin\\xf4\\u0272nt;\\u6A11\\u0800Nabcdefiklnoprsu\\u16ED\\u16F1\\u1730\\u173C\\u1743\\u1748\\u1778\\u177D\\u17E0\\u17E6\\u1839\\u1850\\u170D\\u193D\\u1948\\u1970ot;\\u6AED\\u0100cr\\u16F6\\u171Ek\\u0200ceps\\u1700\\u1705\\u170D\\u1713ong;\\u624Cpsilon;\\u43F6rime;\\u6035im\\u0100;e\\u171A\\u171B\\u623Dq;\\u62CD\\u0176\\u1722\\u1726ee;\\u62BDed\\u0100;g\\u172C\\u172D\\u6305e\\xbb\\u172Drk\\u0100;t\\u135C\\u1737brk;\\u63B6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601E\\u0280cmprt\\u1753\\u175B\\u1761\\u1764\\u1768aus\\u0100;e\\u010A\\u0109ptyv;\\u69B0s\\xe9\\u170Cno\\xf5\\u0113\\u0180ahw\\u176F\\u1771\\u1773;\\u43B2;\\u6136een;\\u626Cr;\\uC000\\ud835\\udd1fg\\u0380costuvw\\u178D\\u179D\\u17B3\\u17C1\\u17D5\\u17DB\\u17DE\\u0180aiu\\u1794\\u1796\\u179A\\xf0\\u0760rc;\\u65EFp\\xbb\\u1371\\u0180dpt\\u17A4\\u17A8\\u17ADot;\\u6A00lus;\\u6A01imes;\\u6A02\\u0271\\u17B9\\0\\0\\u17BEcup;\\u6A06ar;\\u6605riangle\\u0100du\\u17CD\\u17D2own;\\u65BDp;\\u65B3plus;\\u6A04e\\xe5\\u1444\\xe5\\u14ADarow;\\u690D\\u0180ako\\u17ED\\u1826\\u1835\\u0100cn\\u17F2\\u1823k\\u0180lst\\u17FA\\u05AB\\u1802ozenge;\\u69EBriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181D\\u65B4own;\\u65BEeft;\\u65C2ight;\\u65B8k;\\u6423\\u01B1\\u182B\\0\\u1833\\u01B2\\u182F\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183E\\u184D\\u0100;q\\u1843\\u1846\\uC000=\\u20E5uiv;\\uC000\\u2261\\u20E5t;\\u6310\\u0200ptwx\\u1859\\u185E\\u1867\\u186Cf;\\uC000\\ud835\\udd53\\u0100;t\\u13CB\\u1863om\\xbb\\u13CCtie;\\u62C8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18AA\\u18BB\\u18D7\\u18DB\\u18EC\\u18FF\\u1905\\u190A\\u1910\\u1921\\u0200LRlr\\u188E\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18A1\\u18A2\\u18A4\\u18A6\\u18A8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18B3\\u18B5\\u18B7\\u18B9;\\u655D;\\u655A;\\u655C;\\u6559\\u0380;HLRhlr\\u18CA\\u18CB\\u18CD\\u18CF\\u18D1\\u18D3\\u18D5\\u6551;\\u656C;\\u6563;\\u6560;\\u656B;\\u6562;\\u655Fox;\\u69C9\\u0200LRlr\\u18E4\\u18E6\\u18E8\\u18EA;\\u6555;\\u6552;\\u6510;\\u650C\\u0280;DUdu\\u06BD\\u18F7\\u18F9\\u18FB\\u18FD;\\u6565;\\u6568;\\u652C;\\u6534inus;\\u629Flus;\\u629Eimes;\\u62A0\\u0200LRlr\\u1919\\u191B\\u191D\\u191F;\\u655B;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193B\\u6502;\\u656A;\\u6561;\\u655E;\\u653C;\\u6524;\\u651C\\u0100ev\\u0123\\u1942bar\\u803B\\xa6\\u40A6\\u0200ceio\\u1951\\u1956\\u195A\\u1960r;\\uC000\\ud835\\udcb7mi;\\u604Fm\\u0100;e\\u171A\\u171Cl\\u0180;bh\\u1968\\u1969\\u196B\\u405C;\\u69C5sub;\\u67C8\\u016C\\u1974\\u197El\\u0100;e\\u1979\\u197A\\u6022t\\xbb\\u197Ap\\u0180;Ee\\u012F\\u1985\\u1987;\\u6AAE\\u0100;q\\u06DC\\u06DB\\u0CE1\\u19A7\\0\\u19E8\\u1A11\\u1A15\\u1A32\\0\\u1A37\\u1A50\\0\\0\\u1AB4\\0\\0\\u1AC1\\0\\0\\u1B21\\u1B2E\\u1B4D\\u1B52\\0\\u1BFD\\0\\u1C0C\\u0180cpr\\u19AD\\u19B2\\u19DDute;\\u4107\\u0300;abcds\\u19BF\\u19C0\\u19C4\\u19CA\\u19D5\\u19D9\\u6229nd;\\u6A44rcup;\\u6A49\\u0100au\\u19CF\\u19D2p;\\u6A4Bp;\\u6A47ot;\\u6A40;\\uC000\\u2229\\uFE00\\u0100eo\\u19E2\\u19E5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19F0\\u19FB\\u1A01\\u1A05\\u01F0\\u19F5\\0\\u19F8s;\\u6A4Don;\\u410Ddil\\u803B\\xe7\\u40E7rc;\\u4109ps\\u0100;s\\u1A0C\\u1A0D\\u6A4Cm;\\u6A50ot;\\u410B\\u0180dmn\\u1A1B\\u1A20\\u1A26il\\u80BB\\xb8\\u01ADptyv;\\u69B2t\\u8100\\xa2;e\\u1A2D\\u1A2E\\u40A2r\\xe4\\u01B2r;\\uC000\\ud835\\udd20\\u0180cei\\u1A3D\\u1A40\\u1A4Dy;\\u4447ck\\u0100;m\\u1A47\\u1A48\\u6713ark\\xbb\\u1A48;\\u43C7r\\u0380;Ecefms\\u1A5F\\u1A60\\u1A62\\u1A6B\\u1AA4\\u1AAA\\u1AAE\\u65CB;\\u69C3\\u0180;el\\u1A69\\u1A6A\\u1A6D\\u42C6q;\\u6257e\\u0261\\u1A74\\0\\0\\u1A88rrow\\u0100lr\\u1A7C\\u1A81eft;\\u61BAight;\\u61BB\\u0280RSacd\\u1A92\\u1A94\\u1A96\\u1A9A\\u1A9F\\xbb\\u0F47;\\u64C8st;\\u629Birc;\\u629Aash;\\u629Dnint;\\u6A10id;\\u6AEFcir;\\u69C2ubs\\u0100;u\\u1ABB\\u1ABC\\u6663it\\xbb\\u1ABC\\u02EC\\u1AC7\\u1AD4\\u1AFA\\0\\u1B0Aon\\u0100;e\\u1ACD\\u1ACE\\u403A\\u0100;q\\xc7\\xc6\\u026D\\u1AD9\\0\\0\\u1AE2a\\u0100;t\\u1ADE\\u1ADF\\u402C;\\u4040\\u0180;fl\\u1AE8\\u1AE9\\u1AEB\\u6201\\xee\\u1160e\\u0100mx\\u1AF1\\u1AF6ent\\xbb\\u1AE9e\\xf3\\u024D\\u01E7\\u1AFE\\0\\u1B07\\u0100;d\\u12BB\\u1B02ot;\\u6A6Dn\\xf4\\u0246\\u0180fry\\u1B10\\u1B14\\u1B17;\\uC000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1B1Dr;\\u6117\\u0100ao\\u1B25\\u1B29rr;\\u61B5ss;\\u6717\\u0100cu\\u1B32\\u1B37r;\\uC000\\ud835\\udcb8\\u0100bp\\u1B3C\\u1B44\\u0100;e\\u1B41\\u1B42\\u6ACF;\\u6AD1\\u0100;e\\u1B49\\u1B4A\\u6AD0;\\u6AD2dot;\\u62EF\\u0380delprvw\\u1B60\\u1B6C\\u1B77\\u1B82\\u1BAC\\u1BD4\\u1BF9arr\\u0100lr\\u1B68\\u1B6A;\\u6938;\\u6935\\u0270\\u1B72\\0\\0\\u1B75r;\\u62DEc;\\u62DFarr\\u0100;p\\u1B7F\\u1B80\\u61B6;\\u693D\\u0300;bcdos\\u1B8F\\u1B90\\u1B96\\u1BA1\\u1BA5\\u1BA8\\u622Arcap;\\u6A48\\u0100au\\u1B9B\\u1B9Ep;\\u6A46p;\\u6A4Aot;\\u628Dr;\\u6A45;\\uC000\\u222A\\uFE00\\u0200alrv\\u1BB5\\u1BBF\\u1BDE\\u1BE3rr\\u0100;m\\u1BBC\\u1BBD\\u61B7;\\u693Cy\\u0180evw\\u1BC7\\u1BD4\\u1BD8q\\u0270\\u1BCE\\0\\0\\u1BD2re\\xe3\\u1B73u\\xe3\\u1B75ee;\\u62CEedge;\\u62CFen\\u803B\\xa4\\u40A4earrow\\u0100lr\\u1BEE\\u1BF3eft\\xbb\\u1B80ight\\xbb\\u1BBDe\\xe4\\u1BDD\\u0100ci\\u1C01\\u1C07onin\\xf4\\u01F7nt;\\u6231lcty;\\u632D\\u0980AHabcdefhijlorstuwz\\u1C38\\u1C3B\\u1C3F\\u1C5D\\u1C69\\u1C75\\u1C8A\\u1C9E\\u1CAC\\u1CB7\\u1CFB\\u1CFF\\u1D0D\\u1D7B\\u1D91\\u1DAB\\u1DBB\\u1DC6\\u1DCDr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1C48\\u1C4D\\u1C52\\u1C54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1C5A\\u1C5B\\u6010\\xbb\\u090A\\u016B\\u1C61\\u1C67arow;\\u690Fa\\xe3\\u0315\\u0100ay\\u1C6E\\u1C73ron;\\u410F;\\u4434\\u0180;ao\\u0332\\u1C7C\\u1C84\\u0100gr\\u02BF\\u1C81r;\\u61CAtseq;\\u6A77\\u0180glm\\u1C91\\u1C94\\u1C98\\u803B\\xb0\\u40B0ta;\\u43B4ptyv;\\u69B1\\u0100ir\\u1CA3\\u1CA8sht;\\u697F;\\uC000\\ud835\\udd21ar\\u0100lr\\u1CB3\\u1CB5\\xbb\\u08DC\\xbb\\u101E\\u0280aegsv\\u1CC2\\u0378\\u1CD6\\u1CDC\\u1CE0m\\u0180;os\\u0326\\u1CCA\\u1CD4nd\\u0100;s\\u0326\\u1CD1uit;\\u6666amma;\\u43DDin;\\u62F2\\u0180;io\\u1CE7\\u1CE8\\u1CF8\\u40F7de\\u8100\\xf7;o\\u1CE7\\u1CF0ntimes;\\u62C7n\\xf8\\u1CF7cy;\\u4452c\\u026F\\u1D06\\0\\0\\u1D0Arn;\\u631Eop;\\u630D\\u0280lptuw\\u1D18\\u1D1D\\u1D22\\u1D49\\u1D55lar;\\u4024f;\\uC000\\ud835\\udd55\\u0280;emps\\u030B\\u1D2D\\u1D37\\u1D3D\\u1D42q\\u0100;d\\u0352\\u1D33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62A1blebarwedg\\xe5\\xfan\\u0180adh\\u112E\\u1D5D\\u1D67ownarrow\\xf3\\u1C83arpoon\\u0100lr\\u1D72\\u1D76ef\\xf4\\u1CB4igh\\xf4\\u1CB6\\u0162\\u1D7F\\u1D85karo\\xf7\\u0F42\\u026F\\u1D8A\\0\\0\\u1D8Ern;\\u631Fop;\\u630C\\u0180cot\\u1D98\\u1DA3\\u1DA6\\u0100ry\\u1D9D\\u1DA1;\\uC000\\ud835\\udcb9;\\u4455l;\\u69F6rok;\\u4111\\u0100dr\\u1DB0\\u1DB4ot;\\u62F1i\\u0100;f\\u1DBA\\u1816\\u65BF\\u0100ah\\u1DC0\\u1DC3r\\xf2\\u0429a\\xf2\\u0FA6angle;\\u69A6\\u0100ci\\u1DD2\\u1DD5y;\\u445Fgrarr;\\u67FF\\u0900Dacdefglmnopqrstux\\u1E01\\u1E09\\u1E19\\u1E38\\u0578\\u1E3C\\u1E49\\u1E61\\u1E7E\\u1EA5\\u1EAF\\u1EBD\\u1EE1\\u1F2A\\u1F37\\u1F44\\u1F4E\\u1F5A\\u0100Do\\u1E06\\u1D34o\\xf4\\u1C89\\u0100cs\\u1E0E\\u1E14ute\\u803B\\xe9\\u40E9ter;\\u6A6E\\u0200aioy\\u1E22\\u1E27\\u1E31\\u1E36ron;\\u411Br\\u0100;c\\u1E2D\\u1E2E\\u6256\\u803B\\xea\\u40EAlon;\\u6255;\\u444Dot;\\u4117\\u0100Dr\\u1E41\\u1E45ot;\\u6252;\\uC000\\ud835\\udd22\\u0180;rs\\u1E50\\u1E51\\u1E57\\u6A9Aave\\u803B\\xe8\\u40E8\\u0100;d\\u1E5C\\u1E5D\\u6A96ot;\\u6A98\\u0200;ils\\u1E6A\\u1E6B\\u1E72\\u1E74\\u6A99nters;\\u63E7;\\u6113\\u0100;d\\u1E79\\u1E7A\\u6A95ot;\\u6A97\\u0180aps\\u1E85\\u1E89\\u1E97cr;\\u4113ty\\u0180;sv\\u1E92\\u1E93\\u1E95\\u6205et\\xbb\\u1E93p\\u01001;\\u1E9D\\u1EA4\\u0133\\u1EA1\\u1EA3;\\u6004;\\u6005\\u6003\\u0100gs\\u1EAA\\u1EAC;\\u414Bp;\\u6002\\u0100gp\\u1EB4\\u1EB8on;\\u4119f;\\uC000\\ud835\\udd56\\u0180als\\u1EC4\\u1ECE\\u1ED2r\\u0100;s\\u1ECA\\u1ECB\\u62D5l;\\u69E3us;\\u6A71i\\u0180;lv\\u1EDA\\u1EDB\\u1EDF\\u43B5on\\xbb\\u1EDB;\\u43F5\\u0200csuv\\u1EEA\\u1EF3\\u1F0B\\u1F23\\u0100io\\u1EEF\\u1E31rc\\xbb\\u1E2E\\u0269\\u1EF9\\0\\0\\u1EFB\\xed\\u0548ant\\u0100gl\\u1F02\\u1F06tr\\xbb\\u1E5Dess\\xbb\\u1E7A\\u0180aei\\u1F12\\u1F16\\u1F1Als;\\u403Dst;\\u625Fv\\u0100;D\\u0235\\u1F20D;\\u6A78parsl;\\u69E5\\u0100Da\\u1F2F\\u1F33ot;\\u6253rr;\\u6971\\u0180cdi\\u1F3E\\u1F41\\u1EF8r;\\u612Fo\\xf4\\u0352\\u0100ah\\u1F49\\u1F4B;\\u43B7\\u803B\\xf0\\u40F0\\u0100mr\\u1F53\\u1F57l\\u803B\\xeb\\u40EBo;\\u60AC\\u0180cip\\u1F61\\u1F64\\u1F67l;\\u4021s\\xf4\\u056E\\u0100eo\\u1F6C\\u1F74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09E1\\u1F92\\0\\u1F9E\\0\\u1FA1\\u1FA7\\0\\0\\u1FC6\\u1FCC\\0\\u1FD3\\0\\u1FE6\\u1FEA\\u2000\\0\\u2008\\u205Allingdotse\\xf1\\u1E44y;\\u4444male;\\u6640\\u0180ilr\\u1FAD\\u1FB3\\u1FC1lig;\\u8000\\uFB03\\u0269\\u1FB9\\0\\0\\u1FBDg;\\u8000\\uFB00ig;\\u8000\\uFB04;\\uC000\\ud835\\udd23lig;\\u8000\\uFB01lig;\\uC000fj\\u0180alt\\u1FD9\\u1FDC\\u1FE1t;\\u666Dig;\\u8000\\uFB02ns;\\u65B1of;\\u4192\\u01F0\\u1FEE\\0\\u1FF3f;\\uC000\\ud835\\udd57\\u0100ak\\u05BF\\u1FF7\\u0100;v\\u1FFC\\u1FFD\\u62D4;\\u6AD9artint;\\u6A0D\\u0100ao\\u200C\\u2055\\u0100cs\\u2011\\u2052\\u03B1\\u201A\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03B2\\u2022\\u2025\\u2027\\u202A\\u202C\\0\\u202E\\u803B\\xbd\\u40BD;\\u6153\\u803B\\xbc\\u40BC;\\u6155;\\u6159;\\u615B\\u01B3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02B4\\u203E\\u2041\\0\\0\\u2043\\u803B\\xbe\\u40BE;\\u6157;\\u615C5;\\u6158\\u01B6\\u204C\\0\\u204E;\\u615A;\\u615D8;\\u615El;\\u6044wn;\\u6322cr;\\uC000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209F\\u20A5\\u20B0\\u20B4\\u20F0\\u20F5\\u20FA\\u20FF\\u2103\\u2112\\u2138\\u0317\\u213E\\u2152\\u219E\\u0100;l\\u064D\\u2087;\\u6A8C\\u0180cmp\\u2090\\u2095\\u209Dute;\\u41F5ma\\u0100;d\\u209C\\u1CDA\\u43B3;\\u6A86reve;\\u411F\\u0100iy\\u20AA\\u20AErc;\\u411D;\\u4433ot;\\u4121\\u0200;lqs\\u063E\\u0642\\u20BD\\u20C9\\u0180;qs\\u063E\\u064C\\u20C4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20D2\\u20D5\\u20E5c;\\u6AA9ot\\u0100;o\\u20DC\\u20DD\\u6A80\\u0100;l\\u20E2\\u20E3\\u6A82;\\u6A84\\u0100;e\\u20EA\\u20ED\\uC000\\u22DB\\uFE00s;\\u6A94r;\\uC000\\ud835\\udd24\\u0100;g\\u0673\\u061Bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065A\\u210C\\u210E\\u2110;\\u6A92;\\u6AA5;\\u6AA4\\u0200Eaes\\u211B\\u211D\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6A8Arox\\xbb\\u2124\\u0100;q\\u212E\\u212F\\u6A88\\u0100;q\\u212E\\u211Bim;\\u62E7pf;\\uC000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610Am\\u0180;el\\u066B\\u214E\\u2150;\\u6A8E;\\u6A90\\u8300>;cdlqr\\u05EE\\u2160\\u216A\\u216E\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6AA7r;\\u6A7Aot;\\u62D7Par;\\u6995uest;\\u6A7C\\u0280adels\\u2184\\u216A\\u2190\\u0656\\u219B\\u01F0\\u2189\\0\\u218Epro\\xf8\\u209Er;\\u6978q\\u0100lq\\u063F\\u2196les\\xf3\\u2088i\\xed\\u066B\\u0100en\\u21A3\\u21ADrtneqq;\\uC000\\u2269\\uFE00\\xc5\\u21AA\\u0500Aabcefkosy\\u21C4\\u21C7\\u21F1\\u21F5\\u21FA\\u2218\\u221D\\u222F\\u2268\\u227Dr\\xf2\\u03A0\\u0200ilmr\\u21D0\\u21D4\\u21D7\\u21DBrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06A9\\u0100dr\\u21E0\\u21E4cy;\\u444A\\u0180;cw\\u08F4\\u21EB\\u21EFir;\\u6948;\\u61ADar;\\u610Firc;\\u4125\\u0180alr\\u2201\\u220E\\u2213rts\\u0100;u\\u2209\\u220A\\u6665it\\xbb\\u220Alip;\\u6026con;\\u62B9r;\\uC000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223A\\u223E\\u2243\\u225E\\u2263rr;\\u61FFtht;\\u623Bk\\u0100lr\\u2249\\u2253eftarrow;\\u61A9ightarrow;\\u61AAf;\\uC000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226F\\u2274\\u2278r;\\uC000\\ud835\\udcbdas\\xe8\\u21F4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1C5B\\u0AE1\\u22A3\\0\\u22AA\\0\\u22B8\\u22C5\\u22CE\\0\\u22D5\\u22F3\\0\\0\\u22F8\\u2322\\u2367\\u2362\\u237F\\0\\u2386\\u23AA\\u23B4cute\\u803B\\xed\\u40ED\\u0180;iy\\u0771\\u22B0\\u22B5rc\\u803B\\xee\\u40EE;\\u4438\\u0100cx\\u22BC\\u22BFy;\\u4435cl\\u803B\\xa1\\u40A1\\u0100fr\\u039F\\u22C9;\\uC000\\ud835\\udd26rave\\u803B\\xec\\u40EC\\u0200;ino\\u073E\\u22DD\\u22E9\\u22EE\\u0100in\\u22E2\\u22E6nt;\\u6A0Ct;\\u622Dfin;\\u69DCta;\\u6129lig;\\u4133\\u0180aop\\u22FE\\u231A\\u231D\\u0180cgt\\u2305\\u2308\\u2317r;\\u412B\\u0180elp\\u071F\\u230F\\u2313in\\xe5\\u078Ear\\xf4\\u0720h;\\u4131f;\\u62B7ed;\\u41B5\\u0280;cfot\\u04F4\\u232C\\u2331\\u233D\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621Eie;\\u69DDdo\\xf4\\u2319\\u0280;celp\\u0757\\u234C\\u2350\\u235B\\u2361al;\\u62BA\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234Darhk;\\u6A17rod;\\u6A3C\\u0200cgpt\\u236F\\u2372\\u2376\\u237By;\\u4451on;\\u412Ff;\\uC000\\ud835\\udd5aa;\\u43B9uest\\u803B\\xbf\\u40BF\\u0100ci\\u238A\\u238Fr;\\uC000\\ud835\\udcben\\u0280;Edsv\\u04F4\\u239B\\u239D\\u23A1\\u04F3;\\u62F9ot;\\u62F5\\u0100;v\\u23A6\\u23A7\\u62F4;\\u62F3\\u0100;i\\u0777\\u23AElde;\\u4129\\u01EB\\u23B8\\0\\u23BCcy;\\u4456l\\u803B\\xef\\u40EF\\u0300cfmosu\\u23CC\\u23D7\\u23DC\\u23E1\\u23E7\\u23F5\\u0100iy\\u23D1\\u23D5rc;\\u4135;\\u4439r;\\uC000\\ud835\\udd27ath;\\u4237pf;\\uC000\\ud835\\udd5b\\u01E3\\u23EC\\0\\u23F1r;\\uC000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240B\\u2416\\u2422\\u2427\\u242D\\u2431\\u2435\\u243Bppa\\u0100;v\\u2413\\u2414\\u43BA;\\u43F0\\u0100ey\\u241B\\u2420dil;\\u4137;\\u443Ar;\\uC000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445Cpf;\\uC000\\ud835\\udd5ccr;\\uC000\\ud835\\udcc0\\u0B80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248D\\u2491\\u250E\\u253D\\u255A\\u2580\\u264E\\u265E\\u2665\\u2679\\u267D\\u269A\\u26B2\\u26D8\\u275D\\u2768\\u278B\\u27C0\\u2801\\u2812\\u0180art\\u2477\\u247A\\u247Cr\\xf2\\u09C6\\xf2\\u0395ail;\\u691Barr;\\u690E\\u0100;g\\u0994\\u248B;\\u6A8Bar;\\u6962\\u0963\\u24A5\\0\\u24AA\\0\\u24B1\\0\\0\\0\\0\\0\\u24B5\\u24BA\\0\\u24C6\\u24C8\\u24CD\\0\\u24F9ute;\\u413Amptyv;\\u69B4ra\\xee\\u084Cbda;\\u43BBg\\u0180;dl\\u088E\\u24C1\\u24C3;\\u6991\\xe5\\u088E;\\u6A85uo\\u803B\\xab\\u40ABr\\u0400;bfhlpst\\u0899\\u24DE\\u24E6\\u24E9\\u24EB\\u24EE\\u24F1\\u24F5\\u0100;f\\u089D\\u24E3s;\\u691Fs;\\u691D\\xeb\\u2252p;\\u61ABl;\\u6939im;\\u6973l;\\u61A2\\u0180;ae\\u24FF\\u2500\\u2504\\u6AABil;\\u6919\\u0100;s\\u2509\\u250A\\u6AAD;\\uC000\\u2AAD\\uFE00\\u0180abr\\u2515\\u2519\\u251Drr;\\u690Crk;\\u6772\\u0100ak\\u2522\\u252Cc\\u0100ek\\u2528\\u252A;\\u407B;\\u405B\\u0100es\\u2531\\u2533;\\u698Bl\\u0100du\\u2539\\u253B;\\u698F;\\u698D\\u0200aeuy\\u2546\\u254B\\u2556\\u2558ron;\\u413E\\u0100di\\u2550\\u2554il;\\u413C\\xec\\u08B0\\xe2\\u2529;\\u443B\\u0200cqrs\\u2563\\u2566\\u256D\\u257Da;\\u6936uo\\u0100;r\\u0E19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694Bh;\\u61B2\\u0280;fgqs\\u258B\\u258C\\u0989\\u25F3\\u25FF\\u6264t\\u0280ahlrt\\u2598\\u25A4\\u25B7\\u25C2\\u25E8rrow\\u0100;t\\u0899\\u25A1a\\xe9\\u24F6arpoon\\u0100du\\u25AF\\u25B4own\\xbb\\u045Ap\\xbb\\u0966eftarrows;\\u61C7ight\\u0180ahs\\u25CD\\u25D6\\u25DErrow\\u0100;s\\u08F4\\u08A7arpoon\\xf3\\u0F98quigarro\\xf7\\u21F0hreetimes;\\u62CB\\u0180;qs\\u258B\\u0993\\u25FAlan\\xf4\\u09AC\\u0280;cdgs\\u09AC\\u260A\\u260D\\u261D\\u2628c;\\u6AA8ot\\u0100;o\\u2614\\u2615\\u6A7F\\u0100;r\\u261A\\u261B\\u6A81;\\u6A83\\u0100;e\\u2622\\u2625\\uC000\\u22DA\\uFE00s;\\u6A93\\u0280adegs\\u2633\\u2639\\u263D\\u2649\\u264Bppro\\xf8\\u24C6ot;\\u62D6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248C\\xf4\\u099Bi\\xed\\u09B2\\u0180ilr\\u2655\\u08E1\\u265Asht;\\u697C;\\uC000\\ud835\\udd29\\u0100;E\\u099C\\u2663;\\u6A91\\u0161\\u2669\\u2676r\\u0100du\\u25B2\\u266E\\u0100;l\\u0965\\u2673;\\u696Alk;\\u6584cy;\\u4459\\u0280;acht\\u0A48\\u2688\\u268B\\u2691\\u2696r\\xf2\\u25C1orne\\xf2\\u1D08ard;\\u696Bri;\\u65FA\\u0100io\\u269F\\u26A4dot;\\u4140ust\\u0100;a\\u26AC\\u26AD\\u63B0che\\xbb\\u26AD\\u0200Eaes\\u26BB\\u26BD\\u26C9\\u26D4;\\u6268p\\u0100;p\\u26C3\\u26C4\\u6A89rox\\xbb\\u26C4\\u0100;q\\u26CE\\u26CF\\u6A87\\u0100;q\\u26CE\\u26BBim;\\u62E6\\u0400abnoptwz\\u26E9\\u26F4\\u26F7\\u271A\\u272F\\u2741\\u2747\\u2750\\u0100nr\\u26EE\\u26F1g;\\u67ECr;\\u61FDr\\xeb\\u08C1g\\u0180lmr\\u26FF\\u270D\\u2714eft\\u0100ar\\u09E6\\u2707ight\\xe1\\u09F2apsto;\\u67FCight\\xe1\\u09FDparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24EDight;\\u61AC\\u0180afl\\u2736\\u2739\\u273Dr;\\u6985;\\uC000\\ud835\\udd5dus;\\u6A2Dimes;\\u6A34\\u0161\\u274B\\u274Fst;\\u6217\\xe1\\u134E\\u0180;ef\\u2757\\u2758\\u1800\\u65CAnge\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277C\\u2785\\u2787r\\xf2\\u08A8orne\\xf2\\u1D8Car\\u0100;d\\u0F98\\u2783;\\u696D;\\u600Eri;\\u62BF\\u0300achiqt\\u2798\\u279D\\u0A40\\u27A2\\u27AE\\u27BBquo;\\u6039r;\\uC000\\ud835\\udcc1m\\u0180;eg\\u09B2\\u27AA\\u27AC;\\u6A8D;\\u6A8F\\u0100bu\\u252A\\u27B3o\\u0100;r\\u0E1F\\u27B9;\\u601Arok;\\u4142\\u8400<;cdhilqr\\u082B\\u27D2\\u2639\\u27DC\\u27E0\\u27E5\\u27EA\\u27F0\\u0100ci\\u27D7\\u27D9;\\u6AA6r;\\u6A79re\\xe5\\u25F2mes;\\u62C9arr;\\u6976uest;\\u6A7B\\u0100Pi\\u27F5\\u27F9ar;\\u6996\\u0180;ef\\u2800\\u092D\\u181B\\u65C3r\\u0100du\\u2807\\u280Dshar;\\u694Ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uC000\\u2268\\uFE00\\xc5\\u281E\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288E\\u2893\\u28A0\\u28A5\\u28A8\\u28DA\\u28E2\\u28E4\\u0A83\\u28F3\\u2902Dot;\\u623A\\u0200clpr\\u284E\\u2852\\u2863\\u287Dr\\u803B\\xaf\\u40AF\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285E\\u285F\\u6720se\\xbb\\u285F\\u0100;s\\u103B\\u2868to\\u0200;dlu\\u103B\\u2873\\u2877\\u287Bow\\xee\\u048Cef\\xf4\\u090F\\xf0\\u13D1ker;\\u65AE\\u0100oy\\u2887\\u288Cmma;\\u6A29;\\u443Cash;\\u6014asuredangle\\xbb\\u1626r;\\uC000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28AF\\u28B4\\u28C9ro\\u803B\\xb5\\u40B5\\u0200;acd\\u1464\\u28BD\\u28C0\\u28C4s\\xf4\\u16A7ir;\\u6AF0ot\\u80BB\\xb7\\u01B5us\\u0180;bd\\u28D2\\u1903\\u28D3\\u6212\\u0100;u\\u1D3C\\u28D8;\\u6A2A\\u0163\\u28DE\\u28E1p;\\u6ADB\\xf2\\u2212\\xf0\\u0A81\\u0100dp\\u28E9\\u28EEels;\\u62A7f;\\uC000\\ud835\\udd5e\\u0100ct\\u28F8\\u28FDr;\\uC000\\ud835\\udcc2pos\\xbb\\u159D\\u0180;lm\\u2909\\u290A\\u290D\\u43BCtimap;\\u62B8\\u0C00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297E\\u2989\\u2998\\u29DA\\u29E9\\u2A15\\u2A1A\\u2A58\\u2A5D\\u2A83\\u2A95\\u2AA4\\u2AA8\\u2B04\\u2B07\\u2B44\\u2B7F\\u2BAE\\u2C34\\u2C67\\u2C7C\\u2CE9\\u0100gt\\u2947\\u294B;\\uC000\\u22D9\\u0338\\u0100;v\\u2950\\u0BCF\\uC000\\u226B\\u20D2\\u0180elt\\u295A\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61CDightarrow;\\u61CE;\\uC000\\u22D8\\u0338\\u0100;v\\u297B\\u0C47\\uC000\\u226A\\u20D2ightarrow;\\u61CF\\u0100Dd\\u298E\\u2993ash;\\u62AFash;\\u62AE\\u0280bcnpt\\u29A3\\u29A7\\u29AC\\u29B1\\u29CCla\\xbb\\u02DEute;\\u4144g;\\uC000\\u2220\\u20D2\\u0280;Eiop\\u0D84\\u29BC\\u29C0\\u29C5\\u29C8;\\uC000\\u2A70\\u0338d;\\uC000\\u224B\\u0338s;\\u4149ro\\xf8\\u0D84ur\\u0100;a\\u29D3\\u29D4\\u666El\\u0100;s\\u29D3\\u0B38\\u01F3\\u29DF\\0\\u29E3p\\u80BB\\xa0\\u0B37mp\\u0100;e\\u0BF9\\u0C00\\u0280aeouy\\u29F4\\u29FE\\u2A03\\u2A10\\u2A13\\u01F0\\u29F9\\0\\u29FB;\\u6A43on;\\u4148dil;\\u4146ng\\u0100;d\\u0D7E\\u2A0Aot;\\uC000\\u2A6D\\u0338p;\\u6A42;\\u443Dash;\\u6013\\u0380;Aadqsx\\u0B92\\u2A29\\u2A2D\\u2A3B\\u2A41\\u2A45\\u2A50rr;\\u61D7r\\u0100hr\\u2A33\\u2A36k;\\u6924\\u0100;o\\u13F2\\u13F0ot;\\uC000\\u2250\\u0338ui\\xf6\\u0B63\\u0100ei\\u2A4A\\u2A4Ear;\\u6928\\xed\\u0B98ist\\u0100;s\\u0BA0\\u0B9Fr;\\uC000\\ud835\\udd2b\\u0200Eest\\u0BC5\\u2A66\\u2A79\\u2A7C\\u0180;qs\\u0BBC\\u2A6D\\u0BE1\\u0180;qs\\u0BBC\\u0BC5\\u2A74lan\\xf4\\u0BE2i\\xed\\u0BEA\\u0100;r\\u0BB6\\u2A81\\xbb\\u0BB7\\u0180Aap\\u2A8A\\u2A8D\\u2A91r\\xf2\\u2971rr;\\u61AEar;\\u6AF2\\u0180;sv\\u0F8D\\u2A9C\\u0F8C\\u0100;d\\u2AA1\\u2AA2\\u62FC;\\u62FAcy;\\u445A\\u0380AEadest\\u2AB7\\u2ABA\\u2ABE\\u2AC2\\u2AC5\\u2AF6\\u2AF9r\\xf2\\u2966;\\uC000\\u2266\\u0338rr;\\u619Ar;\\u6025\\u0200;fqs\\u0C3B\\u2ACE\\u2AE3\\u2AEFt\\u0100ar\\u2AD4\\u2AD9rro\\xf7\\u2AC1ightarro\\xf7\\u2A90\\u0180;qs\\u0C3B\\u2ABA\\u2AEAlan\\xf4\\u0C55\\u0100;s\\u0C55\\u2AF4\\xbb\\u0C36i\\xed\\u0C5D\\u0100;r\\u0C35\\u2AFEi\\u0100;e\\u0C1A\\u0C25i\\xe4\\u0D90\\u0100pt\\u2B0C\\u2B11f;\\uC000\\ud835\\udd5f\\u8180\\xac;in\\u2B19\\u2B1A\\u2B36\\u40ACn\\u0200;Edv\\u0B89\\u2B24\\u2B28\\u2B2E;\\uC000\\u22F9\\u0338ot;\\uC000\\u22F5\\u0338\\u01E1\\u0B89\\u2B33\\u2B35;\\u62F7;\\u62F6i\\u0100;v\\u0CB8\\u2B3C\\u01E1\\u0CB8\\u2B41\\u2B43;\\u62FE;\\u62FD\\u0180aor\\u2B4B\\u2B63\\u2B69r\\u0200;ast\\u0B7B\\u2B55\\u2B5A\\u2B5Flle\\xec\\u0B7Bl;\\uC000\\u2AFD\\u20E5;\\uC000\\u2202\\u0338lint;\\u6A14\\u0180;ce\\u0C92\\u2B70\\u2B73u\\xe5\\u0CA5\\u0100;c\\u0C98\\u2B78\\u0100;e\\u0C92\\u2B7D\\xf1\\u0C98\\u0200Aait\\u2B88\\u2B8B\\u2B9D\\u2BA7r\\xf2\\u2988rr\\u0180;cw\\u2B94\\u2B95\\u2B99\\u619B;\\uC000\\u2933\\u0338;\\uC000\\u219D\\u0338ghtarrow\\xbb\\u2B95ri\\u0100;e\\u0CCB\\u0CD6\\u0380chimpqu\\u2BBD\\u2BCD\\u2BD9\\u2B04\\u0B78\\u2BE4\\u2BEF\\u0200;cer\\u0D32\\u2BC6\\u0D37\\u2BC9u\\xe5\\u0D45;\\uC000\\ud835\\udcc3ort\\u026D\\u2B05\\0\\0\\u2BD6ar\\xe1\\u2B56m\\u0100;e\\u0D6E\\u2BDF\\u0100;q\\u0D74\\u0D73su\\u0100bp\\u2BEB\\u2BED\\xe5\\u0CF8\\xe5\\u0D0B\\u0180bcp\\u2BF6\\u2C11\\u2C19\\u0200;Ees\\u2BFF\\u2C00\\u0D22\\u2C04\\u6284;\\uC000\\u2AC5\\u0338et\\u0100;e\\u0D1B\\u2C0Bq\\u0100;q\\u0D23\\u2C00c\\u0100;e\\u0D32\\u2C17\\xf1\\u0D38\\u0200;Ees\\u2C22\\u2C23\\u0D5F\\u2C27\\u6285;\\uC000\\u2AC6\\u0338et\\u0100;e\\u0D58\\u2C2Eq\\u0100;q\\u0D60\\u2C23\\u0200gilr\\u2C3D\\u2C3F\\u2C45\\u2C47\\xec\\u0BD7lde\\u803B\\xf1\\u40F1\\xe7\\u0C43iangle\\u0100lr\\u2C52\\u2C5Ceft\\u0100;e\\u0C1A\\u2C5A\\xf1\\u0C26ight\\u0100;e\\u0CCB\\u2C65\\xf1\\u0CD7\\u0100;m\\u2C6C\\u2C6D\\u43BD\\u0180;es\\u2C74\\u2C75\\u2C79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2C8F\\u2C94\\u2C99\\u2C9E\\u2CA3\\u2CB0\\u2CB6\\u2CD3\\u2CE3ash;\\u62ADarr;\\u6904p;\\uC000\\u224D\\u20D2ash;\\u62AC\\u0100et\\u2CA8\\u2CAC;\\uC000\\u2265\\u20D2;\\uC000>\\u20D2nfin;\\u69DE\\u0180Aet\\u2CBD\\u2CC1\\u2CC5rr;\\u6902;\\uC000\\u2264\\u20D2\\u0100;r\\u2CCA\\u2CCD\\uC000<\\u20D2ie;\\uC000\\u22B4\\u20D2\\u0100At\\u2CD8\\u2CDCrr;\\u6903rie;\\uC000\\u22B5\\u20D2im;\\uC000\\u223C\\u20D2\\u0180Aan\\u2CF0\\u2CF4\\u2D02rr;\\u61D6r\\u0100hr\\u2CFA\\u2CFDk;\\u6923\\u0100;o\\u13E7\\u13E5ear;\\u6927\\u1253\\u1A95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2D2D\\0\\u2D38\\u2D48\\u2D60\\u2D65\\u2D72\\u2D84\\u1B07\\0\\0\\u2D8D\\u2DAB\\0\\u2DC8\\u2DCE\\0\\u2DDC\\u2E19\\u2E2B\\u2E3E\\u2E43\\u0100cs\\u2D31\\u1A97ute\\u803B\\xf3\\u40F3\\u0100iy\\u2D3C\\u2D45r\\u0100;c\\u1A9E\\u2D42\\u803B\\xf4\\u40F4;\\u443E\\u0280abios\\u1AA0\\u2D52\\u2D57\\u01C8\\u2D5Alac;\\u4151v;\\u6A38old;\\u69BClig;\\u4153\\u0100cr\\u2D69\\u2D6Dir;\\u69BF;\\uC000\\ud835\\udd2c\\u036F\\u2D79\\0\\0\\u2D7C\\0\\u2D82n;\\u42DBave\\u803B\\xf2\\u40F2;\\u69C1\\u0100bm\\u2D88\\u0DF4ar;\\u69B5\\u0200acit\\u2D95\\u2D98\\u2DA5\\u2DA8r\\xf2\\u1A80\\u0100ir\\u2D9D\\u2DA0r;\\u69BEoss;\\u69BBn\\xe5\\u0E52;\\u69C0\\u0180aei\\u2DB1\\u2DB5\\u2DB9cr;\\u414Dga;\\u43C9\\u0180cdn\\u2DC0\\u2DC5\\u01CDron;\\u43BF;\\u69B6pf;\\uC000\\ud835\\udd60\\u0180ael\\u2DD4\\u2DD7\\u01D2r;\\u69B7rp;\\u69B9\\u0380;adiosv\\u2DEA\\u2DEB\\u2DEE\\u2E08\\u2E0D\\u2E10\\u2E16\\u6228r\\xf2\\u1A86\\u0200;efm\\u2DF7\\u2DF8\\u2E02\\u2E05\\u6A5Dr\\u0100;o\\u2DFE\\u2DFF\\u6134f\\xbb\\u2DFF\\u803B\\xaa\\u40AA\\u803B\\xba\\u40BAgof;\\u62B6r;\\u6A56lope;\\u6A57;\\u6A5B\\u0180clo\\u2E1F\\u2E21\\u2E27\\xf2\\u2E01ash\\u803B\\xf8\\u40F8l;\\u6298i\\u016C\\u2E2F\\u2E34de\\u803B\\xf5\\u40F5es\\u0100;a\\u01DB\\u2E3As;\\u6A36ml\\u803B\\xf6\\u40F6bar;\\u633D\\u0AE1\\u2E5E\\0\\u2E7D\\0\\u2E80\\u2E9D\\0\\u2EA2\\u2EB9\\0\\0\\u2ECB\\u0E9C\\0\\u2F13\\0\\0\\u2F2B\\u2FBC\\0\\u2FC8r\\u0200;ast\\u0403\\u2E67\\u2E72\\u0E85\\u8100\\xb6;l\\u2E6D\\u2E6E\\u40B6le\\xec\\u0403\\u0269\\u2E78\\0\\0\\u2E7Bm;\\u6AF3;\\u6AFDy;\\u443Fr\\u0280cimpt\\u2E8B\\u2E8F\\u2E93\\u1865\\u2E97nt;\\u4025od;\\u402Eil;\\u6030enk;\\u6031r;\\uC000\\ud835\\udd2d\\u0180imo\\u2EA8\\u2EB0\\u2EB4\\u0100;v\\u2EAD\\u2EAE\\u43C6;\\u43D5ma\\xf4\\u0A76ne;\\u660E\\u0180;tv\\u2EBF\\u2EC0\\u2EC8\\u43C0chfork\\xbb\\u1FFD;\\u43D6\\u0100au\\u2ECF\\u2EDFn\\u0100ck\\u2ED5\\u2EDDk\\u0100;h\\u21F4\\u2EDB;\\u610E\\xf6\\u21F4s\\u0480;abcdemst\\u2EF3\\u2EF4\\u1908\\u2EF9\\u2EFD\\u2F04\\u2F06\\u2F0A\\u2F0E\\u402Bcir;\\u6A23ir;\\u6A22\\u0100ou\\u1D40\\u2F02;\\u6A25;\\u6A72n\\u80BB\\xb1\\u0E9Dim;\\u6A26wo;\\u6A27\\u0180ipu\\u2F19\\u2F20\\u2F25ntint;\\u6A15f;\\uC000\\ud835\\udd61nd\\u803B\\xa3\\u40A3\\u0500;Eaceinosu\\u0EC8\\u2F3F\\u2F41\\u2F44\\u2F47\\u2F81\\u2F89\\u2F92\\u2F7E\\u2FB6;\\u6AB3p;\\u6AB7u\\xe5\\u0ED9\\u0100;c\\u0ECE\\u2F4C\\u0300;acens\\u0EC8\\u2F59\\u2F5F\\u2F66\\u2F68\\u2F7Eppro\\xf8\\u2F43urlye\\xf1\\u0ED9\\xf1\\u0ECE\\u0180aes\\u2F6F\\u2F76\\u2F7Approx;\\u6AB9qq;\\u6AB5im;\\u62E8i\\xed\\u0EDFme\\u0100;s\\u2F88\\u0EAE\\u6032\\u0180Eas\\u2F78\\u2F90\\u2F7A\\xf0\\u2F75\\u0180dfp\\u0EEC\\u2F99\\u2FAF\\u0180als\\u2FA0\\u2FA5\\u2FAAlar;\\u632Eine;\\u6312urf;\\u6313\\u0100;t\\u0EFB\\u2FB4\\xef\\u0EFBrel;\\u62B0\\u0100ci\\u2FC0\\u2FC5r;\\uC000\\ud835\\udcc5;\\u43C8ncsp;\\u6008\\u0300fiopsu\\u2FDA\\u22E2\\u2FDF\\u2FE5\\u2FEB\\u2FF1r;\\uC000\\ud835\\udd2epf;\\uC000\\ud835\\udd62rime;\\u6057cr;\\uC000\\ud835\\udcc6\\u0180aeo\\u2FF8\\u3009\\u3013t\\u0100ei\\u2FFE\\u3005rnion\\xf3\\u06B0nt;\\u6A16st\\u0100;e\\u3010\\u3011\\u403F\\xf1\\u1F19\\xf4\\u0F14\\u0A80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30E0\\u310E\\u312B\\u3147\\u3162\\u3172\\u318E\\u3206\\u3215\\u3224\\u3229\\u3258\\u326E\\u3272\\u3290\\u32B0\\u32B7\\u0180art\\u3047\\u304A\\u304Cr\\xf2\\u10B3\\xf2\\u03DDail;\\u691Car\\xf2\\u1C65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307F\\u308F\\u3094\\u30CC\\u0100eu\\u306D\\u3071;\\uC000\\u223D\\u0331te;\\u4155i\\xe3\\u116Emptyv;\\u69B3g\\u0200;del\\u0FD1\\u3089\\u308B\\u308D;\\u6992;\\u69A5\\xe5\\u0FD1uo\\u803B\\xbb\\u40BBr\\u0580;abcfhlpstw\\u0FDC\\u30AC\\u30AF\\u30B7\\u30B9\\u30BC\\u30BE\\u30C0\\u30C3\\u30C7\\u30CAp;\\u6975\\u0100;f\\u0FE0\\u30B4s;\\u6920;\\u6933s;\\u691E\\xeb\\u225D\\xf0\\u272El;\\u6945im;\\u6974l;\\u61A3;\\u619D\\u0100ai\\u30D1\\u30D5il;\\u691Ao\\u0100;n\\u30DB\\u30DC\\u6236al\\xf3\\u0F1E\\u0180abr\\u30E7\\u30EA\\u30EEr\\xf2\\u17E5rk;\\u6773\\u0100ak\\u30F3\\u30FDc\\u0100ek\\u30F9\\u30FB;\\u407D;\\u405D\\u0100es\\u3102\\u3104;\\u698Cl\\u0100du\\u310A\\u310C;\\u698E;\\u6990\\u0200aeuy\\u3117\\u311C\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0FF2\\xe2\\u30FA;\\u4440\\u0200clqs\\u3134\\u3137\\u313D\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020E\\u020Dh;\\u61B3\\u0180acg\\u314E\\u315F\\u0F44l\\u0200;ips\\u0F78\\u3158\\u315B\\u109Cn\\xe5\\u10BBar\\xf4\\u0FA9t;\\u65AD\\u0180ilr\\u3169\\u1023\\u316Esht;\\u697D;\\uC000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317D\\u317F\\xbb\\u047B\\u0100;l\\u1091\\u3184;\\u696C\\u0100;v\\u318B\\u318C\\u43C1;\\u43F1\\u0180gns\\u3195\\u31F9\\u31FCht\\u0300ahlrst\\u31A4\\u31B0\\u31C2\\u31D8\\u31E4\\u31EErrow\\u0100;t\\u0FDC\\u31ADa\\xe9\\u30C8arpoon\\u0100du\\u31BB\\u31BFow\\xee\\u317Ep\\xbb\\u1092eft\\u0100ah\\u31CA\\u31D0rrow\\xf3\\u0FEAarpoon\\xf3\\u0551ightarrows;\\u61C9quigarro\\xf7\\u30CBhreetimes;\\u62CCg;\\u42DAingdotse\\xf1\\u1F32\\u0180ahm\\u320D\\u3210\\u3213r\\xf2\\u0FEAa\\xf2\\u0551;\\u600Foust\\u0100;a\\u321E\\u321F\\u63B1che\\xbb\\u321Fmid;\\u6AEE\\u0200abpt\\u3232\\u323D\\u3240\\u3252\\u0100nr\\u3237\\u323Ag;\\u67EDr;\\u61FEr\\xeb\\u1003\\u0180afl\\u3247\\u324A\\u324Er;\\u6986;\\uC000\\ud835\\udd63us;\\u6A2Eimes;\\u6A35\\u0100ap\\u325D\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6A12ar\\xf2\\u31E3\\u0200achq\\u327B\\u3280\\u10BC\\u3285quo;\\u603Ar;\\uC000\\ud835\\udcc7\\u0100bu\\u30FB\\u328Ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329B\\u32A0re\\xe5\\u31F8mes;\\u62CAi\\u0200;efl\\u32AA\\u1059\\u1821\\u32AB\\u65B9tri;\\u69CEluhar;\\u6968;\\u611E\\u0D61\\u32D5\\u32DB\\u32DF\\u332C\\u3338\\u3371\\0\\u337A\\u33A4\\0\\0\\u33EC\\u33F0\\0\\u3428\\u3448\\u345A\\u34AD\\u34B1\\u34CA\\u34F1\\0\\u3616\\0\\0\\u3633cute;\\u415Bqu\\xef\\u27BA\\u0500;Eaceinpsy\\u11ED\\u32F3\\u32F5\\u32FF\\u3302\\u330B\\u330F\\u331F\\u3326\\u3329;\\u6AB4\\u01F0\\u32FA\\0\\u32FC;\\u6AB8on;\\u4161u\\xe5\\u11FE\\u0100;d\\u11F3\\u3307il;\\u415Frc;\\u415D\\u0180Eas\\u3316\\u3318\\u331B;\\u6AB6p;\\u6ABAim;\\u62E9olint;\\u6A13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1D47\\u3335\\u62C5;\\u6A66\\u0380Aacmstx\\u3346\\u334A\\u3357\\u335B\\u335E\\u3363\\u336Drr;\\u61D8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0A36\\u0A34t\\u803B\\xa7\\u40A7i;\\u403Bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uC000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33A0rp;\\u666F\\u0100hy\\u338B\\u338Fcy;\\u4449;\\u4448rt\\u026D\\u3399\\0\\0\\u339Ci\\xe4\\u1464ara\\xec\\u2E6F\\u803B\\xad\\u40AD\\u0100gm\\u33A8\\u33B4ma\\u0180;fv\\u33B1\\u33B2\\u33B2\\u43C3;\\u43C2\\u0400;deglnpr\\u12AB\\u33C5\\u33C9\\u33CE\\u33D6\\u33DE\\u33E1\\u33E6ot;\\u6A6A\\u0100;q\\u12B1\\u12B0\\u0100;E\\u33D3\\u33D4\\u6A9E;\\u6AA0\\u0100;E\\u33DB\\u33DC\\u6A9D;\\u6A9Fe;\\u6246lus;\\u6A24arr;\\u6972ar\\xf2\\u113D\\u0200aeit\\u33F8\\u3408\\u340F\\u3417\\u0100ls\\u33FD\\u3404lsetm\\xe9\\u336Ahp;\\u6A33parsl;\\u69E4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341C\\u341D\\u6AAA\\u0100;s\\u3422\\u3423\\u6AAC;\\uC000\\u2AAC\\uFE00\\u0180flp\\u342E\\u3433\\u3442tcy;\\u444C\\u0100;b\\u3438\\u3439\\u402F\\u0100;a\\u343E\\u343F\\u69C4r;\\u633Ff;\\uC000\\ud835\\udd64a\\u0100dr\\u344D\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349F\\u0100au\\u3465\\u346Fp\\u0100;s\\u1188\\u346B;\\uC000\\u2293\\uFE00p\\u0100;s\\u11B4\\u3475;\\uC000\\u2294\\uFE00u\\u0100bp\\u347F\\u348F\\u0180;es\\u1197\\u119C\\u3486et\\u0100;e\\u1197\\u348D\\xf1\\u119D\\u0180;es\\u11A8\\u11AD\\u3496et\\u0100;e\\u11A8\\u349D\\xf1\\u11AE\\u0180;af\\u117B\\u34A6\\u05B0r\\u0165\\u34AB\\u05B1\\xbb\\u117Car\\xf2\\u1148\\u0200cemt\\u34B9\\u34BE\\u34C2\\u34C5r;\\uC000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11BE\\u0100ar\\u34CE\\u34D5r\\u0100;f\\u34D4\\u17BF\\u6606\\u0100an\\u34DA\\u34EDight\\u0100ep\\u34E3\\u34EApsilo\\xee\\u1EE0h\\xe9\\u2EAFs\\xbb\\u2852\\u0280bcmnp\\u34FB\\u355E\\u1209\\u358B\\u358E\\u0480;Edemnprs\\u350E\\u350F\\u3511\\u3515\\u351E\\u3523\\u352C\\u3531\\u3536\\u6282;\\u6AC5ot;\\u6ABD\\u0100;d\\u11DA\\u351Aot;\\u6AC3ult;\\u6AC1\\u0100Ee\\u3528\\u352A;\\u6ACB;\\u628Alus;\\u6ABFarr;\\u6979\\u0180eiu\\u353D\\u3552\\u3555t\\u0180;en\\u350E\\u3545\\u354Bq\\u0100;q\\u11DA\\u350Feq\\u0100;q\\u352B\\u3528m;\\u6AC7\\u0100bp\\u355A\\u355C;\\u6AD5;\\u6AD3c\\u0300;acens\\u11ED\\u356C\\u3572\\u3579\\u357B\\u3326ppro\\xf8\\u32FAurlye\\xf1\\u11FE\\xf1\\u11F3\\u0180aes\\u3582\\u3588\\u331Bppro\\xf8\\u331Aq\\xf1\\u3317g;\\u666A\\u0680123;Edehlmnps\\u35A9\\u35AC\\u35AF\\u121C\\u35B2\\u35B4\\u35C0\\u35C9\\u35D5\\u35DA\\u35DF\\u35E8\\u35ED\\u803B\\xb9\\u40B9\\u803B\\xb2\\u40B2\\u803B\\xb3\\u40B3;\\u6AC6\\u0100os\\u35B9\\u35BCt;\\u6ABEub;\\u6AD8\\u0100;d\\u1222\\u35C5ot;\\u6AC4s\\u0100ou\\u35CF\\u35D2l;\\u67C9b;\\u6AD7arr;\\u697Bult;\\u6AC2\\u0100Ee\\u35E4\\u35E6;\\u6ACC;\\u628Blus;\\u6AC0\\u0180eiu\\u35F4\\u3609\\u360Ct\\u0180;en\\u121C\\u35FC\\u3602q\\u0100;q\\u1222\\u35B2eq\\u0100;q\\u35E7\\u35E4m;\\u6AC8\\u0100bp\\u3611\\u3613;\\u6AD4;\\u6AD6\\u0180Aan\\u361C\\u3620\\u362Drr;\\u61D9r\\u0100hr\\u3626\\u3628\\xeb\\u222E\\u0100;o\\u0A2B\\u0A29war;\\u692Alig\\u803B\\xdf\\u40DF\\u0BE1\\u3651\\u365D\\u3660\\u12CE\\u3673\\u3679\\0\\u367E\\u36C2\\0\\0\\0\\0\\0\\u36DB\\u3703\\0\\u3709\\u376C\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365Bget;\\u6316;\\u43C4r\\xeb\\u0E5F\\u0180aey\\u3666\\u366B\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uC000\\ud835\\udd31\\u0200eiko\\u3686\\u369D\\u36B5\\u36BC\\u01F2\\u368B\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369B\\u43B8ym;\\u43D1\\u0100cn\\u36A2\\u36B2k\\u0100as\\u36A8\\u36AEppro\\xf8\\u12C1im\\xbb\\u12ACs\\xf0\\u129E\\u0100as\\u36BA\\u36AE\\xf0\\u12C1rn\\u803B\\xfe\\u40FE\\u01EC\\u031F\\u36C6\\u22E7es\\u8180\\xd7;bd\\u36CF\\u36D0\\u36D8\\u40D7\\u0100;a\\u190F\\u36D5r;\\u6A31;\\u6A30\\u0180eps\\u36E1\\u36E3\\u3700\\xe1\\u2A4D\\u0200;bcf\\u0486\\u36EC\\u36F0\\u36F4ot;\\u6336ir;\\u6AF1\\u0100;o\\u36F9\\u36FC\\uC000\\ud835\\udd65rk;\\u6ADA\\xe1\\u3362rime;\\u6034\\u0180aip\\u370F\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374D\\u3740\\u3751\\u3757\\u375C\\u375Fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65B5own\\xbb\\u1DBBeft\\u0100;e\\u2800\\u373E\\xf1\\u092E;\\u625Cight\\u0100;e\\u32AA\\u374B\\xf1\\u105Aot;\\u65ECinus;\\u6A3Alus;\\u6A39b;\\u69CDime;\\u6A3Bezium;\\u63E2\\u0180cht\\u3772\\u377D\\u3781\\u0100ry\\u3777\\u377B;\\uC000\\ud835\\udcc9;\\u4446cy;\\u445Brok;\\u4167\\u0100io\\u378B\\u378Ex\\xf4\\u1777head\\u0100lr\\u3797\\u37A0eftarro\\xf7\\u084Fightarrow\\xbb\\u0F5D\\u0900AHabcdfghlmoprstuw\\u37D0\\u37D3\\u37D7\\u37E4\\u37F0\\u37FC\\u380E\\u381C\\u3823\\u3834\\u3851\\u385D\\u386B\\u38A9\\u38CC\\u38D2\\u38EA\\u38F6r\\xf2\\u03EDar;\\u6963\\u0100cr\\u37DC\\u37E2ute\\u803B\\xfa\\u40FA\\xf2\\u1150r\\u01E3\\u37EA\\0\\u37EDy;\\u445Eve;\\u416D\\u0100iy\\u37F5\\u37FArc\\u803B\\xfb\\u40FB;\\u4443\\u0180abh\\u3803\\u3806\\u380Br\\xf2\\u13ADlac;\\u4171a\\xf2\\u13C3\\u0100ir\\u3813\\u3818sht;\\u697E;\\uC000\\ud835\\udd32rave\\u803B\\xf9\\u40F9\\u0161\\u3827\\u3831r\\u0100lr\\u382C\\u382E\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384D\\u026F\\u383F\\0\\0\\u384Arn\\u0100;e\\u3845\\u3846\\u631Cr\\xbb\\u3846op;\\u630Fri;\\u65F8\\u0100al\\u3856\\u385Acr;\\u416B\\u80BB\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uC000\\ud835\\udd66\\u0300adhlsu\\u114B\\u3878\\u387D\\u1372\\u3891\\u38A0own\\xe1\\u13B3arpoon\\u0100lr\\u3888\\u388Cef\\xf4\\u382Digh\\xf4\\u382Fi\\u0180;hl\\u3899\\u389A\\u389C\\u43C5\\xbb\\u13FAon\\xbb\\u389Aparrows;\\u61C8\\u0180cit\\u38B0\\u38C4\\u38C8\\u026F\\u38B6\\0\\0\\u38C1rn\\u0100;e\\u38BC\\u38BD\\u631Dr\\xbb\\u38BDop;\\u630Eng;\\u416Fri;\\u65F9cr;\\uC000\\ud835\\udcca\\u0180dir\\u38D9\\u38DD\\u38E2ot;\\u62F0lde;\\u4169i\\u0100;f\\u3730\\u38E8\\xbb\\u1813\\u0100am\\u38EF\\u38F2r\\xf2\\u38A8l\\u803B\\xfc\\u40FCangle;\\u69A7\\u0780ABDacdeflnoprsz\\u391C\\u391F\\u3929\\u392D\\u39B5\\u39B8\\u39BD\\u39DF\\u39E4\\u39E8\\u39F3\\u39F9\\u39FD\\u3A01\\u3A20r\\xf2\\u03F7ar\\u0100;v\\u3926\\u3927\\u6AE8;\\u6AE9as\\xe8\\u03E1\\u0100nr\\u3932\\u3937grt;\\u699C\\u0380eknprst\\u34E3\\u3946\\u394B\\u3952\\u395D\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1E96\\u0180hir\\u34EB\\u2EC8\\u3959op\\xf4\\u2FB5\\u0100;h\\u13B7\\u3962\\xef\\u318D\\u0100iu\\u3969\\u396Dgm\\xe1\\u33B3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397D\\u3980\\uC000\\u228A\\uFE00;\\uC000\\u2ACB\\uFE00setneq\\u0100;q\\u398F\\u3992\\uC000\\u228B\\uFE00;\\uC000\\u2ACC\\uFE00\\u0100hr\\u399B\\u399Fet\\xe1\\u369Ciangle\\u0100lr\\u39AA\\u39AFeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39C4\\u39D2\\u39D7\\u0180;be\\u2DEA\\u39CB\\u39CFar;\\u62BBq;\\u625Alip;\\u62EE\\u0100bt\\u39DC\\u1468a\\xf2\\u1469r;\\uC000\\ud835\\udd33tr\\xe9\\u39AEsu\\u0100bp\\u39EF\\u39F1\\xbb\\u0D1C\\xbb\\u0D59pf;\\uC000\\ud835\\udd67ro\\xf0\\u0EFBtr\\xe9\\u39B4\\u0100cu\\u3A06\\u3A0Br;\\uC000\\ud835\\udccb\\u0100bp\\u3A10\\u3A18n\\u0100Ee\\u3980\\u3A16\\xbb\\u397En\\u0100Ee\\u3992\\u3A1E\\xbb\\u3990igzag;\\u699A\\u0380cefoprs\\u3A36\\u3A3B\\u3A56\\u3A5B\\u3A54\\u3A61\\u3A6Airc;\\u4175\\u0100di\\u3A40\\u3A51\\u0100bg\\u3A45\\u3A49ar;\\u6A5Fe\\u0100;q\\u15FA\\u3A4F;\\u6259erp;\\u6118r;\\uC000\\ud835\\udd34pf;\\uC000\\ud835\\udd68\\u0100;e\\u1479\\u3A66at\\xe8\\u1479cr;\\uC000\\ud835\\udccc\\u0AE3\\u178E\\u3A87\\0\\u3A8B\\0\\u3A90\\u3A9B\\0\\0\\u3A9D\\u3AA8\\u3AAB\\u3AAF\\0\\0\\u3AC3\\u3ACE\\0\\u3AD8\\u17DC\\u17DFtr\\xe9\\u17D1r;\\uC000\\ud835\\udd35\\u0100Aa\\u3A94\\u3A97r\\xf2\\u03C3r\\xf2\\u09F6;\\u43BE\\u0100Aa\\u3AA1\\u3AA4r\\xf2\\u03B8r\\xf2\\u09EBa\\xf0\\u2713is;\\u62FB\\u0180dpt\\u17A4\\u3AB5\\u3ABE\\u0100fl\\u3ABA\\u17A9;\\uC000\\ud835\\udd69im\\xe5\\u17B2\\u0100Aa\\u3AC7\\u3ACAr\\xf2\\u03CEr\\xf2\\u0A01\\u0100cq\\u3AD2\\u17B8r;\\uC000\\ud835\\udccd\\u0100pt\\u17D6\\u3ADCr\\xe9\\u17D4\\u0400acefiosu\\u3AF0\\u3AFD\\u3B08\\u3B0C\\u3B11\\u3B15\\u3B1B\\u3B21c\\u0100uy\\u3AF6\\u3AFBte\\u803B\\xfd\\u40FD;\\u444F\\u0100iy\\u3B02\\u3B06rc;\\u4177;\\u444Bn\\u803B\\xa5\\u40A5r;\\uC000\\ud835\\udd36cy;\\u4457pf;\\uC000\\ud835\\udd6acr;\\uC000\\ud835\\udcce\\u0100cm\\u3B26\\u3B29y;\\u444El\\u803B\\xff\\u40FF\\u0500acdefhiosw\\u3B42\\u3B48\\u3B54\\u3B58\\u3B64\\u3B69\\u3B6D\\u3B74\\u3B7A\\u3B80cute;\\u417A\\u0100ay\\u3B4D\\u3B52ron;\\u417E;\\u4437ot;\\u417C\\u0100et\\u3B5D\\u3B61tr\\xe6\\u155Fa;\\u43B6r;\\uC000\\ud835\\udd37cy;\\u4436grarr;\\u61DDpf;\\uC000\\ud835\\udd6bcr;\\uC000\\ud835\\udccf\\u0100jn\\u3B85\\u3B87;\\u600Dj;\\u600C'.split(\"\").map((c)=>c.charCodeAt(0)));\n\n});\n\nparcelRegister(\"cjXy9\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $8f8573b78e12f3de$export$2e2bcd8739ae039);\n// Generated using scripts/write-decode-map.ts\nvar $8f8573b78e12f3de$export$2e2bcd8739ae039 = new Uint16Array(// prettier-ignore\n\"\\u0200aglq\t\\x15\\x18\\x1b\\u026D\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403Et;\\u403Cuot;\\u4022\".split(\"\").map((c)=>c.charCodeAt(0)));\n\n});\n\nparcelRegister(\"1mqh8\", function(module, exports) {\n\n$parcel$export(module.exports, \"fromCodePoint\", () => $0fdc3a4215784dc1$export$73bfc63873071f74);\n$parcel$export(module.exports, \"replaceCodePoint\", () => $0fdc3a4215784dc1$export$b978ab756102108a);\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar $0fdc3a4215784dc1$var$_a;\nconst $0fdc3a4215784dc1$var$decodeMap = new Map([\n [\n 0,\n 65533\n ],\n // C1 Unicode control character reference replacements\n [\n 128,\n 8364\n ],\n [\n 130,\n 8218\n ],\n [\n 131,\n 402\n ],\n [\n 132,\n 8222\n ],\n [\n 133,\n 8230\n ],\n [\n 134,\n 8224\n ],\n [\n 135,\n 8225\n ],\n [\n 136,\n 710\n ],\n [\n 137,\n 8240\n ],\n [\n 138,\n 352\n ],\n [\n 139,\n 8249\n ],\n [\n 140,\n 338\n ],\n [\n 142,\n 381\n ],\n [\n 145,\n 8216\n ],\n [\n 146,\n 8217\n ],\n [\n 147,\n 8220\n ],\n [\n 148,\n 8221\n ],\n [\n 149,\n 8226\n ],\n [\n 150,\n 8211\n ],\n [\n 151,\n 8212\n ],\n [\n 152,\n 732\n ],\n [\n 153,\n 8482\n ],\n [\n 154,\n 353\n ],\n [\n 155,\n 8250\n ],\n [\n 156,\n 339\n ],\n [\n 158,\n 382\n ],\n [\n 159,\n 376\n ]\n]);\nconst $0fdc3a4215784dc1$export$73bfc63873071f74 = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n($0fdc3a4215784dc1$var$_a = String.fromCodePoint) !== null && $0fdc3a4215784dc1$var$_a !== void 0 ? $0fdc3a4215784dc1$var$_a : function(codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(codePoint >>> 10 & 0x3ff | 0xd800);\n codePoint = 0xdc00 | codePoint & 0x3ff;\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\nfunction $0fdc3a4215784dc1$export$b978ab756102108a(codePoint) {\n var _a;\n if (codePoint >= 0xd800 && codePoint <= 0xdfff || codePoint > 0x10ffff) return 0xfffd;\n return (_a = $0fdc3a4215784dc1$var$decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nfunction $0fdc3a4215784dc1$export$2e2bcd8739ae039(codePoint) {\n return $0fdc3a4215784dc1$export$73bfc63873071f74($0fdc3a4215784dc1$export$b978ab756102108a(codePoint));\n}\n\n});\n\n\nparcelRegister(\"6QxPZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"encodeHTML\", () => $4fc1d8dbc74f1929$export$f9d6449b9af28dc1);\n$parcel$export(module.exports, \"encodeNonAsciiHTML\", () => $4fc1d8dbc74f1929$export$e6e86c76506f1190);\n\nvar $4b7Mz = parcelRequire(\"4b7Mz\");\n\nvar $i7QF4 = parcelRequire(\"i7QF4\");\nconst $4fc1d8dbc74f1929$var$htmlReplacer = /[\\t\\n!-,./:-@[-`\\f{-}$\\x80-\\uFFFF]/g;\nfunction $4fc1d8dbc74f1929$export$f9d6449b9af28dc1(data) {\n return $4fc1d8dbc74f1929$var$encodeHTMLTrieRe($4fc1d8dbc74f1929$var$htmlReplacer, data);\n}\nfunction $4fc1d8dbc74f1929$export$e6e86c76506f1190(data) {\n return $4fc1d8dbc74f1929$var$encodeHTMLTrieRe((0, $i7QF4.xmlReplacer), data);\n}\nfunction $4fc1d8dbc74f1929$var$encodeHTMLTrieRe(regExp, str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while((match = regExp.exec(str)) !== null){\n const i = match.index;\n ret += str.substring(lastIdx, i);\n const char = str.charCodeAt(i);\n let next = (0, $4b7Mz.default).get(char);\n if (typeof next === \"object\") {\n // We are in a branch. Try to match the next char.\n if (i + 1 < str.length) {\n const nextChar = str.charCodeAt(i + 1);\n const value = typeof next.n === \"number\" ? next.n === nextChar ? next.o : undefined : next.n.get(nextChar);\n if (value !== undefined) {\n ret += value;\n lastIdx = regExp.lastIndex += 1;\n continue;\n }\n }\n next = next.v;\n }\n // We might have a tree node without a value; skip and use a numeric entity.\n if (next !== undefined) {\n ret += next;\n lastIdx = i + 1;\n } else {\n const cp = (0, $i7QF4.getCodePoint)(str, i);\n ret += `${cp.toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = regExp.lastIndex += Number(cp !== char);\n }\n }\n return ret + str.substr(lastIdx);\n}\n\n});\nparcelRegister(\"4b7Mz\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $30ae39ed5c434785$export$2e2bcd8739ae039);\n// Generated using scripts/write-encode-map.ts\nfunction $30ae39ed5c434785$var$restoreDiff(arr) {\n for(let i = 1; i < arr.length; i++)arr[i][0] += arr[i - 1][0] + 1;\n return arr;\n}\nvar // prettier-ignore\n$30ae39ed5c434785$export$2e2bcd8739ae039 = new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 9,\n \"	\"\n ],\n [\n 0,\n \"
\"\n ],\n [\n 22,\n \"!\"\n ],\n [\n 0,\n \""\"\n ],\n [\n 0,\n \"#\"\n ],\n [\n 0,\n \"$\"\n ],\n [\n 0,\n \"%\"\n ],\n [\n 0,\n \"&\"\n ],\n [\n 0,\n \"'\"\n ],\n [\n 0,\n \"(\"\n ],\n [\n 0,\n \")\"\n ],\n [\n 0,\n \"*\"\n ],\n [\n 0,\n \"+\"\n ],\n [\n 0,\n \",\"\n ],\n [\n 1,\n \".\"\n ],\n [\n 0,\n \"/\"\n ],\n [\n 10,\n \":\"\n ],\n [\n 0,\n \";\"\n ],\n [\n 0,\n {\n v: \"<\",\n n: 8402,\n o: \"<⃒\"\n }\n ],\n [\n 0,\n {\n v: \"=\",\n n: 8421,\n o: \"=⃥\"\n }\n ],\n [\n 0,\n {\n v: \">\",\n n: 8402,\n o: \">⃒\"\n }\n ],\n [\n 0,\n \"?\"\n ],\n [\n 0,\n \"@\"\n ],\n [\n 26,\n \"[\"\n ],\n [\n 0,\n \"\\"\n ],\n [\n 0,\n \"]\"\n ],\n [\n 0,\n \"^\"\n ],\n [\n 0,\n \"_\"\n ],\n [\n 0,\n \"`\"\n ],\n [\n 5,\n {\n n: 106,\n o: \"fj\"\n }\n ],\n [\n 20,\n \"{\"\n ],\n [\n 0,\n \"|\"\n ],\n [\n 0,\n \"}\"\n ],\n [\n 34,\n \" \"\n ],\n [\n 0,\n \"¡\"\n ],\n [\n 0,\n \"¢\"\n ],\n [\n 0,\n \"£\"\n ],\n [\n 0,\n \"¤\"\n ],\n [\n 0,\n \"¥\"\n ],\n [\n 0,\n \"¦\"\n ],\n [\n 0,\n \"§\"\n ],\n [\n 0,\n \"¨\"\n ],\n [\n 0,\n \"©\"\n ],\n [\n 0,\n \"ª\"\n ],\n [\n 0,\n \"«\"\n ],\n [\n 0,\n \"¬\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"®\"\n ],\n [\n 0,\n \"¯\"\n ],\n [\n 0,\n \"°\"\n ],\n [\n 0,\n \"±\"\n ],\n [\n 0,\n \"²\"\n ],\n [\n 0,\n \"³\"\n ],\n [\n 0,\n \"´\"\n ],\n [\n 0,\n \"µ\"\n ],\n [\n 0,\n \"¶\"\n ],\n [\n 0,\n \"·\"\n ],\n [\n 0,\n \"¸\"\n ],\n [\n 0,\n \"¹\"\n ],\n [\n 0,\n \"º\"\n ],\n [\n 0,\n \"»\"\n ],\n [\n 0,\n \"¼\"\n ],\n [\n 0,\n \"½\"\n ],\n [\n 0,\n \"¾\"\n ],\n [\n 0,\n \"¿\"\n ],\n [\n 0,\n \"À\"\n ],\n [\n 0,\n \"Á\"\n ],\n [\n 0,\n \"Â\"\n ],\n [\n 0,\n \"Ã\"\n ],\n [\n 0,\n \"Ä\"\n ],\n [\n 0,\n \"Å\"\n ],\n [\n 0,\n \"Æ\"\n ],\n [\n 0,\n \"Ç\"\n ],\n [\n 0,\n \"È\"\n ],\n [\n 0,\n \"É\"\n ],\n [\n 0,\n \"Ê\"\n ],\n [\n 0,\n \"Ë\"\n ],\n [\n 0,\n \"Ì\"\n ],\n [\n 0,\n \"Í\"\n ],\n [\n 0,\n \"Î\"\n ],\n [\n 0,\n \"Ï\"\n ],\n [\n 0,\n \"Ð\"\n ],\n [\n 0,\n \"Ñ\"\n ],\n [\n 0,\n \"Ò\"\n ],\n [\n 0,\n \"Ó\"\n ],\n [\n 0,\n \"Ô\"\n ],\n [\n 0,\n \"Õ\"\n ],\n [\n 0,\n \"Ö\"\n ],\n [\n 0,\n \"×\"\n ],\n [\n 0,\n \"Ø\"\n ],\n [\n 0,\n \"Ù\"\n ],\n [\n 0,\n \"Ú\"\n ],\n [\n 0,\n \"Û\"\n ],\n [\n 0,\n \"Ü\"\n ],\n [\n 0,\n \"Ý\"\n ],\n [\n 0,\n \"Þ\"\n ],\n [\n 0,\n \"ß\"\n ],\n [\n 0,\n \"à\"\n ],\n [\n 0,\n \"á\"\n ],\n [\n 0,\n \"â\"\n ],\n [\n 0,\n \"ã\"\n ],\n [\n 0,\n \"ä\"\n ],\n [\n 0,\n \"å\"\n ],\n [\n 0,\n \"æ\"\n ],\n [\n 0,\n \"ç\"\n ],\n [\n 0,\n \"è\"\n ],\n [\n 0,\n \"é\"\n ],\n [\n 0,\n \"ê\"\n ],\n [\n 0,\n \"ë\"\n ],\n [\n 0,\n \"ì\"\n ],\n [\n 0,\n \"í\"\n ],\n [\n 0,\n \"î\"\n ],\n [\n 0,\n \"ï\"\n ],\n [\n 0,\n \"ð\"\n ],\n [\n 0,\n \"ñ\"\n ],\n [\n 0,\n \"ò\"\n ],\n [\n 0,\n \"ó\"\n ],\n [\n 0,\n \"ô\"\n ],\n [\n 0,\n \"õ\"\n ],\n [\n 0,\n \"ö\"\n ],\n [\n 0,\n \"÷\"\n ],\n [\n 0,\n \"ø\"\n ],\n [\n 0,\n \"ù\"\n ],\n [\n 0,\n \"ú\"\n ],\n [\n 0,\n \"û\"\n ],\n [\n 0,\n \"ü\"\n ],\n [\n 0,\n \"ý\"\n ],\n [\n 0,\n \"þ\"\n ],\n [\n 0,\n \"ÿ\"\n ],\n [\n 0,\n \"Ā\"\n ],\n [\n 0,\n \"ā\"\n ],\n [\n 0,\n \"Ă\"\n ],\n [\n 0,\n \"ă\"\n ],\n [\n 0,\n \"Ą\"\n ],\n [\n 0,\n \"ą\"\n ],\n [\n 0,\n \"Ć\"\n ],\n [\n 0,\n \"ć\"\n ],\n [\n 0,\n \"Ĉ\"\n ],\n [\n 0,\n \"ĉ\"\n ],\n [\n 0,\n \"Ċ\"\n ],\n [\n 0,\n \"ċ\"\n ],\n [\n 0,\n \"Č\"\n ],\n [\n 0,\n \"č\"\n ],\n [\n 0,\n \"Ď\"\n ],\n [\n 0,\n \"ď\"\n ],\n [\n 0,\n \"Đ\"\n ],\n [\n 0,\n \"đ\"\n ],\n [\n 0,\n \"Ē\"\n ],\n [\n 0,\n \"ē\"\n ],\n [\n 2,\n \"Ė\"\n ],\n [\n 0,\n \"ė\"\n ],\n [\n 0,\n \"Ę\"\n ],\n [\n 0,\n \"ę\"\n ],\n [\n 0,\n \"Ě\"\n ],\n [\n 0,\n \"ě\"\n ],\n [\n 0,\n \"Ĝ\"\n ],\n [\n 0,\n \"ĝ\"\n ],\n [\n 0,\n \"Ğ\"\n ],\n [\n 0,\n \"ğ\"\n ],\n [\n 0,\n \"Ġ\"\n ],\n [\n 0,\n \"ġ\"\n ],\n [\n 0,\n \"Ģ\"\n ],\n [\n 1,\n \"Ĥ\"\n ],\n [\n 0,\n \"ĥ\"\n ],\n [\n 0,\n \"Ħ\"\n ],\n [\n 0,\n \"ħ\"\n ],\n [\n 0,\n \"Ĩ\"\n ],\n [\n 0,\n \"ĩ\"\n ],\n [\n 0,\n \"Ī\"\n ],\n [\n 0,\n \"ī\"\n ],\n [\n 2,\n \"Į\"\n ],\n [\n 0,\n \"į\"\n ],\n [\n 0,\n \"İ\"\n ],\n [\n 0,\n \"ı\"\n ],\n [\n 0,\n \"IJ\"\n ],\n [\n 0,\n \"ij\"\n ],\n [\n 0,\n \"Ĵ\"\n ],\n [\n 0,\n \"ĵ\"\n ],\n [\n 0,\n \"Ķ\"\n ],\n [\n 0,\n \"ķ\"\n ],\n [\n 0,\n \"ĸ\"\n ],\n [\n 0,\n \"Ĺ\"\n ],\n [\n 0,\n \"ĺ\"\n ],\n [\n 0,\n \"Ļ\"\n ],\n [\n 0,\n \"ļ\"\n ],\n [\n 0,\n \"Ľ\"\n ],\n [\n 0,\n \"ľ\"\n ],\n [\n 0,\n \"Ŀ\"\n ],\n [\n 0,\n \"ŀ\"\n ],\n [\n 0,\n \"Ł\"\n ],\n [\n 0,\n \"ł\"\n ],\n [\n 0,\n \"Ń\"\n ],\n [\n 0,\n \"ń\"\n ],\n [\n 0,\n \"Ņ\"\n ],\n [\n 0,\n \"ņ\"\n ],\n [\n 0,\n \"Ň\"\n ],\n [\n 0,\n \"ň\"\n ],\n [\n 0,\n \"ʼn\"\n ],\n [\n 0,\n \"Ŋ\"\n ],\n [\n 0,\n \"ŋ\"\n ],\n [\n 0,\n \"Ō\"\n ],\n [\n 0,\n \"ō\"\n ],\n [\n 2,\n \"Ő\"\n ],\n [\n 0,\n \"ő\"\n ],\n [\n 0,\n \"Œ\"\n ],\n [\n 0,\n \"œ\"\n ],\n [\n 0,\n \"Ŕ\"\n ],\n [\n 0,\n \"ŕ\"\n ],\n [\n 0,\n \"Ŗ\"\n ],\n [\n 0,\n \"ŗ\"\n ],\n [\n 0,\n \"Ř\"\n ],\n [\n 0,\n \"ř\"\n ],\n [\n 0,\n \"Ś\"\n ],\n [\n 0,\n \"ś\"\n ],\n [\n 0,\n \"Ŝ\"\n ],\n [\n 0,\n \"ŝ\"\n ],\n [\n 0,\n \"Ş\"\n ],\n [\n 0,\n \"ş\"\n ],\n [\n 0,\n \"Š\"\n ],\n [\n 0,\n \"š\"\n ],\n [\n 0,\n \"Ţ\"\n ],\n [\n 0,\n \"ţ\"\n ],\n [\n 0,\n \"Ť\"\n ],\n [\n 0,\n \"ť\"\n ],\n [\n 0,\n \"Ŧ\"\n ],\n [\n 0,\n \"ŧ\"\n ],\n [\n 0,\n \"Ũ\"\n ],\n [\n 0,\n \"ũ\"\n ],\n [\n 0,\n \"Ū\"\n ],\n [\n 0,\n \"ū\"\n ],\n [\n 0,\n \"Ŭ\"\n ],\n [\n 0,\n \"ŭ\"\n ],\n [\n 0,\n \"Ů\"\n ],\n [\n 0,\n \"ů\"\n ],\n [\n 0,\n \"Ű\"\n ],\n [\n 0,\n \"ű\"\n ],\n [\n 0,\n \"Ų\"\n ],\n [\n 0,\n \"ų\"\n ],\n [\n 0,\n \"Ŵ\"\n ],\n [\n 0,\n \"ŵ\"\n ],\n [\n 0,\n \"Ŷ\"\n ],\n [\n 0,\n \"ŷ\"\n ],\n [\n 0,\n \"Ÿ\"\n ],\n [\n 0,\n \"Ź\"\n ],\n [\n 0,\n \"ź\"\n ],\n [\n 0,\n \"Ż\"\n ],\n [\n 0,\n \"ż\"\n ],\n [\n 0,\n \"Ž\"\n ],\n [\n 0,\n \"ž\"\n ],\n [\n 19,\n \"ƒ\"\n ],\n [\n 34,\n \"Ƶ\"\n ],\n [\n 63,\n \"ǵ\"\n ],\n [\n 65,\n \"ȷ\"\n ],\n [\n 142,\n \"ˆ\"\n ],\n [\n 0,\n \"ˇ\"\n ],\n [\n 16,\n \"˘\"\n ],\n [\n 0,\n \"˙\"\n ],\n [\n 0,\n \"˚\"\n ],\n [\n 0,\n \"˛\"\n ],\n [\n 0,\n \"˜\"\n ],\n [\n 0,\n \"˝\"\n ],\n [\n 51,\n \"̑\"\n ],\n [\n 127,\n \"Α\"\n ],\n [\n 0,\n \"Β\"\n ],\n [\n 0,\n \"Γ\"\n ],\n [\n 0,\n \"Δ\"\n ],\n [\n 0,\n \"Ε\"\n ],\n [\n 0,\n \"Ζ\"\n ],\n [\n 0,\n \"Η\"\n ],\n [\n 0,\n \"Θ\"\n ],\n [\n 0,\n \"Ι\"\n ],\n [\n 0,\n \"Κ\"\n ],\n [\n 0,\n \"Λ\"\n ],\n [\n 0,\n \"Μ\"\n ],\n [\n 0,\n \"Ν\"\n ],\n [\n 0,\n \"Ξ\"\n ],\n [\n 0,\n \"Ο\"\n ],\n [\n 0,\n \"Π\"\n ],\n [\n 0,\n \"Ρ\"\n ],\n [\n 1,\n \"Σ\"\n ],\n [\n 0,\n \"Τ\"\n ],\n [\n 0,\n \"Υ\"\n ],\n [\n 0,\n \"Φ\"\n ],\n [\n 0,\n \"Χ\"\n ],\n [\n 0,\n \"Ψ\"\n ],\n [\n 0,\n \"Ω\"\n ],\n [\n 7,\n \"α\"\n ],\n [\n 0,\n \"β\"\n ],\n [\n 0,\n \"γ\"\n ],\n [\n 0,\n \"δ\"\n ],\n [\n 0,\n \"ε\"\n ],\n [\n 0,\n \"ζ\"\n ],\n [\n 0,\n \"η\"\n ],\n [\n 0,\n \"θ\"\n ],\n [\n 0,\n \"ι\"\n ],\n [\n 0,\n \"κ\"\n ],\n [\n 0,\n \"λ\"\n ],\n [\n 0,\n \"μ\"\n ],\n [\n 0,\n \"ν\"\n ],\n [\n 0,\n \"ξ\"\n ],\n [\n 0,\n \"ο\"\n ],\n [\n 0,\n \"π\"\n ],\n [\n 0,\n \"ρ\"\n ],\n [\n 0,\n \"ς\"\n ],\n [\n 0,\n \"σ\"\n ],\n [\n 0,\n \"τ\"\n ],\n [\n 0,\n \"υ\"\n ],\n [\n 0,\n \"φ\"\n ],\n [\n 0,\n \"χ\"\n ],\n [\n 0,\n \"ψ\"\n ],\n [\n 0,\n \"ω\"\n ],\n [\n 7,\n \"ϑ\"\n ],\n [\n 0,\n \"ϒ\"\n ],\n [\n 2,\n \"ϕ\"\n ],\n [\n 0,\n \"ϖ\"\n ],\n [\n 5,\n \"Ϝ\"\n ],\n [\n 0,\n \"ϝ\"\n ],\n [\n 18,\n \"ϰ\"\n ],\n [\n 0,\n \"ϱ\"\n ],\n [\n 3,\n \"ϵ\"\n ],\n [\n 0,\n \"϶\"\n ],\n [\n 10,\n \"Ё\"\n ],\n [\n 0,\n \"Ђ\"\n ],\n [\n 0,\n \"Ѓ\"\n ],\n [\n 0,\n \"Є\"\n ],\n [\n 0,\n \"Ѕ\"\n ],\n [\n 0,\n \"І\"\n ],\n [\n 0,\n \"Ї\"\n ],\n [\n 0,\n \"Ј\"\n ],\n [\n 0,\n \"Љ\"\n ],\n [\n 0,\n \"Њ\"\n ],\n [\n 0,\n \"Ћ\"\n ],\n [\n 0,\n \"Ќ\"\n ],\n [\n 1,\n \"Ў\"\n ],\n [\n 0,\n \"Џ\"\n ],\n [\n 0,\n \"А\"\n ],\n [\n 0,\n \"Б\"\n ],\n [\n 0,\n \"В\"\n ],\n [\n 0,\n \"Г\"\n ],\n [\n 0,\n \"Д\"\n ],\n [\n 0,\n \"Е\"\n ],\n [\n 0,\n \"Ж\"\n ],\n [\n 0,\n \"З\"\n ],\n [\n 0,\n \"И\"\n ],\n [\n 0,\n \"Й\"\n ],\n [\n 0,\n \"К\"\n ],\n [\n 0,\n \"Л\"\n ],\n [\n 0,\n \"М\"\n ],\n [\n 0,\n \"Н\"\n ],\n [\n 0,\n \"О\"\n ],\n [\n 0,\n \"П\"\n ],\n [\n 0,\n \"Р\"\n ],\n [\n 0,\n \"С\"\n ],\n [\n 0,\n \"Т\"\n ],\n [\n 0,\n \"У\"\n ],\n [\n 0,\n \"Ф\"\n ],\n [\n 0,\n \"Х\"\n ],\n [\n 0,\n \"Ц\"\n ],\n [\n 0,\n \"Ч\"\n ],\n [\n 0,\n \"Ш\"\n ],\n [\n 0,\n \"Щ\"\n ],\n [\n 0,\n \"Ъ\"\n ],\n [\n 0,\n \"Ы\"\n ],\n [\n 0,\n \"Ь\"\n ],\n [\n 0,\n \"Э\"\n ],\n [\n 0,\n \"Ю\"\n ],\n [\n 0,\n \"Я\"\n ],\n [\n 0,\n \"а\"\n ],\n [\n 0,\n \"б\"\n ],\n [\n 0,\n \"в\"\n ],\n [\n 0,\n \"г\"\n ],\n [\n 0,\n \"д\"\n ],\n [\n 0,\n \"е\"\n ],\n [\n 0,\n \"ж\"\n ],\n [\n 0,\n \"з\"\n ],\n [\n 0,\n \"и\"\n ],\n [\n 0,\n \"й\"\n ],\n [\n 0,\n \"к\"\n ],\n [\n 0,\n \"л\"\n ],\n [\n 0,\n \"м\"\n ],\n [\n 0,\n \"н\"\n ],\n [\n 0,\n \"о\"\n ],\n [\n 0,\n \"п\"\n ],\n [\n 0,\n \"р\"\n ],\n [\n 0,\n \"с\"\n ],\n [\n 0,\n \"т\"\n ],\n [\n 0,\n \"у\"\n ],\n [\n 0,\n \"ф\"\n ],\n [\n 0,\n \"х\"\n ],\n [\n 0,\n \"ц\"\n ],\n [\n 0,\n \"ч\"\n ],\n [\n 0,\n \"ш\"\n ],\n [\n 0,\n \"щ\"\n ],\n [\n 0,\n \"ъ\"\n ],\n [\n 0,\n \"ы\"\n ],\n [\n 0,\n \"ь\"\n ],\n [\n 0,\n \"э\"\n ],\n [\n 0,\n \"ю\"\n ],\n [\n 0,\n \"я\"\n ],\n [\n 1,\n \"ё\"\n ],\n [\n 0,\n \"ђ\"\n ],\n [\n 0,\n \"ѓ\"\n ],\n [\n 0,\n \"є\"\n ],\n [\n 0,\n \"ѕ\"\n ],\n [\n 0,\n \"і\"\n ],\n [\n 0,\n \"ї\"\n ],\n [\n 0,\n \"ј\"\n ],\n [\n 0,\n \"љ\"\n ],\n [\n 0,\n \"њ\"\n ],\n [\n 0,\n \"ћ\"\n ],\n [\n 0,\n \"ќ\"\n ],\n [\n 1,\n \"ў\"\n ],\n [\n 0,\n \"џ\"\n ],\n [\n 7074,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 1,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \"​\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"‐\"\n ],\n [\n 2,\n \"–\"\n ],\n [\n 0,\n \"—\"\n ],\n [\n 0,\n \"―\"\n ],\n [\n 0,\n \"‖\"\n ],\n [\n 1,\n \"‘\"\n ],\n [\n 0,\n \"’\"\n ],\n [\n 0,\n \"‚\"\n ],\n [\n 1,\n \"“\"\n ],\n [\n 0,\n \"”\"\n ],\n [\n 0,\n \"„\"\n ],\n [\n 1,\n \"†\"\n ],\n [\n 0,\n \"‡\"\n ],\n [\n 0,\n \"•\"\n ],\n [\n 2,\n \"‥\"\n ],\n [\n 0,\n \"…\"\n ],\n [\n 9,\n \"‰\"\n ],\n [\n 0,\n \"‱\"\n ],\n [\n 0,\n \"′\"\n ],\n [\n 0,\n \"″\"\n ],\n [\n 0,\n \"‴\"\n ],\n [\n 0,\n \"‵\"\n ],\n [\n 3,\n \"‹\"\n ],\n [\n 0,\n \"›\"\n ],\n [\n 3,\n \"‾\"\n ],\n [\n 2,\n \"⁁\"\n ],\n [\n 1,\n \"⁃\"\n ],\n [\n 0,\n \"⁄\"\n ],\n [\n 10,\n \"⁏\"\n ],\n [\n 7,\n \"⁗\"\n ],\n [\n 7,\n {\n v: \" \",\n n: 8202,\n o: \"  \"\n }\n ],\n [\n 0,\n \"⁠\"\n ],\n [\n 0,\n \"⁡\"\n ],\n [\n 0,\n \"⁢\"\n ],\n [\n 0,\n \"⁣\"\n ],\n [\n 72,\n \"€\"\n ],\n [\n 46,\n \"⃛\"\n ],\n [\n 0,\n \"⃜\"\n ],\n [\n 37,\n \"ℂ\"\n ],\n [\n 2,\n \"℅\"\n ],\n [\n 4,\n \"ℊ\"\n ],\n [\n 0,\n \"ℋ\"\n ],\n [\n 0,\n \"ℌ\"\n ],\n [\n 0,\n \"ℍ\"\n ],\n [\n 0,\n \"ℎ\"\n ],\n [\n 0,\n \"ℏ\"\n ],\n [\n 0,\n \"ℐ\"\n ],\n [\n 0,\n \"ℑ\"\n ],\n [\n 0,\n \"ℒ\"\n ],\n [\n 0,\n \"ℓ\"\n ],\n [\n 1,\n \"ℕ\"\n ],\n [\n 0,\n \"№\"\n ],\n [\n 0,\n \"℗\"\n ],\n [\n 0,\n \"℘\"\n ],\n [\n 0,\n \"ℙ\"\n ],\n [\n 0,\n \"ℚ\"\n ],\n [\n 0,\n \"ℛ\"\n ],\n [\n 0,\n \"ℜ\"\n ],\n [\n 0,\n \"ℝ\"\n ],\n [\n 0,\n \"℞\"\n ],\n [\n 3,\n \"™\"\n ],\n [\n 1,\n \"ℤ\"\n ],\n [\n 2,\n \"℧\"\n ],\n [\n 0,\n \"ℨ\"\n ],\n [\n 0,\n \"℩\"\n ],\n [\n 2,\n \"ℬ\"\n ],\n [\n 0,\n \"ℭ\"\n ],\n [\n 1,\n \"ℯ\"\n ],\n [\n 0,\n \"ℰ\"\n ],\n [\n 0,\n \"ℱ\"\n ],\n [\n 1,\n \"ℳ\"\n ],\n [\n 0,\n \"ℴ\"\n ],\n [\n 0,\n \"ℵ\"\n ],\n [\n 0,\n \"ℶ\"\n ],\n [\n 0,\n \"ℷ\"\n ],\n [\n 0,\n \"ℸ\"\n ],\n [\n 12,\n \"ⅅ\"\n ],\n [\n 0,\n \"ⅆ\"\n ],\n [\n 0,\n \"ⅇ\"\n ],\n [\n 0,\n \"ⅈ\"\n ],\n [\n 10,\n \"⅓\"\n ],\n [\n 0,\n \"⅔\"\n ],\n [\n 0,\n \"⅕\"\n ],\n [\n 0,\n \"⅖\"\n ],\n [\n 0,\n \"⅗\"\n ],\n [\n 0,\n \"⅘\"\n ],\n [\n 0,\n \"⅙\"\n ],\n [\n 0,\n \"⅚\"\n ],\n [\n 0,\n \"⅛\"\n ],\n [\n 0,\n \"⅜\"\n ],\n [\n 0,\n \"⅝\"\n ],\n [\n 0,\n \"⅞\"\n ],\n [\n 49,\n \"←\"\n ],\n [\n 0,\n \"↑\"\n ],\n [\n 0,\n \"→\"\n ],\n [\n 0,\n \"↓\"\n ],\n [\n 0,\n \"↔\"\n ],\n [\n 0,\n \"↕\"\n ],\n [\n 0,\n \"↖\"\n ],\n [\n 0,\n \"↗\"\n ],\n [\n 0,\n \"↘\"\n ],\n [\n 0,\n \"↙\"\n ],\n [\n 0,\n \"↚\"\n ],\n [\n 0,\n \"↛\"\n ],\n [\n 1,\n {\n v: \"↝\",\n n: 824,\n o: \"↝̸\"\n }\n ],\n [\n 0,\n \"↞\"\n ],\n [\n 0,\n \"↟\"\n ],\n [\n 0,\n \"↠\"\n ],\n [\n 0,\n \"↡\"\n ],\n [\n 0,\n \"↢\"\n ],\n [\n 0,\n \"↣\"\n ],\n [\n 0,\n \"↤\"\n ],\n [\n 0,\n \"↥\"\n ],\n [\n 0,\n \"↦\"\n ],\n [\n 0,\n \"↧\"\n ],\n [\n 1,\n \"↩\"\n ],\n [\n 0,\n \"↪\"\n ],\n [\n 0,\n \"↫\"\n ],\n [\n 0,\n \"↬\"\n ],\n [\n 0,\n \"↭\"\n ],\n [\n 0,\n \"↮\"\n ],\n [\n 1,\n \"↰\"\n ],\n [\n 0,\n \"↱\"\n ],\n [\n 0,\n \"↲\"\n ],\n [\n 0,\n \"↳\"\n ],\n [\n 1,\n \"↵\"\n ],\n [\n 0,\n \"↶\"\n ],\n [\n 0,\n \"↷\"\n ],\n [\n 2,\n \"↺\"\n ],\n [\n 0,\n \"↻\"\n ],\n [\n 0,\n \"↼\"\n ],\n [\n 0,\n \"↽\"\n ],\n [\n 0,\n \"↾\"\n ],\n [\n 0,\n \"↿\"\n ],\n [\n 0,\n \"⇀\"\n ],\n [\n 0,\n \"⇁\"\n ],\n [\n 0,\n \"⇂\"\n ],\n [\n 0,\n \"⇃\"\n ],\n [\n 0,\n \"⇄\"\n ],\n [\n 0,\n \"⇅\"\n ],\n [\n 0,\n \"⇆\"\n ],\n [\n 0,\n \"⇇\"\n ],\n [\n 0,\n \"⇈\"\n ],\n [\n 0,\n \"⇉\"\n ],\n [\n 0,\n \"⇊\"\n ],\n [\n 0,\n \"⇋\"\n ],\n [\n 0,\n \"⇌\"\n ],\n [\n 0,\n \"⇍\"\n ],\n [\n 0,\n \"⇎\"\n ],\n [\n 0,\n \"⇏\"\n ],\n [\n 0,\n \"⇐\"\n ],\n [\n 0,\n \"⇑\"\n ],\n [\n 0,\n \"⇒\"\n ],\n [\n 0,\n \"⇓\"\n ],\n [\n 0,\n \"⇔\"\n ],\n [\n 0,\n \"⇕\"\n ],\n [\n 0,\n \"⇖\"\n ],\n [\n 0,\n \"⇗\"\n ],\n [\n 0,\n \"⇘\"\n ],\n [\n 0,\n \"⇙\"\n ],\n [\n 0,\n \"⇚\"\n ],\n [\n 0,\n \"⇛\"\n ],\n [\n 1,\n \"⇝\"\n ],\n [\n 6,\n \"⇤\"\n ],\n [\n 0,\n \"⇥\"\n ],\n [\n 15,\n \"⇵\"\n ],\n [\n 7,\n \"⇽\"\n ],\n [\n 0,\n \"⇾\"\n ],\n [\n 0,\n \"⇿\"\n ],\n [\n 0,\n \"∀\"\n ],\n [\n 0,\n \"∁\"\n ],\n [\n 0,\n {\n v: \"∂\",\n n: 824,\n o: \"∂̸\"\n }\n ],\n [\n 0,\n \"∃\"\n ],\n [\n 0,\n \"∄\"\n ],\n [\n 0,\n \"∅\"\n ],\n [\n 1,\n \"∇\"\n ],\n [\n 0,\n \"∈\"\n ],\n [\n 0,\n \"∉\"\n ],\n [\n 1,\n \"∋\"\n ],\n [\n 0,\n \"∌\"\n ],\n [\n 2,\n \"∏\"\n ],\n [\n 0,\n \"∐\"\n ],\n [\n 0,\n \"∑\"\n ],\n [\n 0,\n \"−\"\n ],\n [\n 0,\n \"∓\"\n ],\n [\n 0,\n \"∔\"\n ],\n [\n 1,\n \"∖\"\n ],\n [\n 0,\n \"∗\"\n ],\n [\n 0,\n \"∘\"\n ],\n [\n 1,\n \"√\"\n ],\n [\n 2,\n \"∝\"\n ],\n [\n 0,\n \"∞\"\n ],\n [\n 0,\n \"∟\"\n ],\n [\n 0,\n {\n v: \"∠\",\n n: 8402,\n o: \"∠⃒\"\n }\n ],\n [\n 0,\n \"∡\"\n ],\n [\n 0,\n \"∢\"\n ],\n [\n 0,\n \"∣\"\n ],\n [\n 0,\n \"∤\"\n ],\n [\n 0,\n \"∥\"\n ],\n [\n 0,\n \"∦\"\n ],\n [\n 0,\n \"∧\"\n ],\n [\n 0,\n \"∨\"\n ],\n [\n 0,\n {\n v: \"∩\",\n n: 65024,\n o: \"∩︀\"\n }\n ],\n [\n 0,\n {\n v: \"∪\",\n n: 65024,\n o: \"∪︀\"\n }\n ],\n [\n 0,\n \"∫\"\n ],\n [\n 0,\n \"∬\"\n ],\n [\n 0,\n \"∭\"\n ],\n [\n 0,\n \"∮\"\n ],\n [\n 0,\n \"∯\"\n ],\n [\n 0,\n \"∰\"\n ],\n [\n 0,\n \"∱\"\n ],\n [\n 0,\n \"∲\"\n ],\n [\n 0,\n \"∳\"\n ],\n [\n 0,\n \"∴\"\n ],\n [\n 0,\n \"∵\"\n ],\n [\n 0,\n \"∶\"\n ],\n [\n 0,\n \"∷\"\n ],\n [\n 0,\n \"∸\"\n ],\n [\n 1,\n \"∺\"\n ],\n [\n 0,\n \"∻\"\n ],\n [\n 0,\n {\n v: \"∼\",\n n: 8402,\n o: \"∼⃒\"\n }\n ],\n [\n 0,\n {\n v: \"∽\",\n n: 817,\n o: \"∽̱\"\n }\n ],\n [\n 0,\n {\n v: \"∾\",\n n: 819,\n o: \"∾̳\"\n }\n ],\n [\n 0,\n \"∿\"\n ],\n [\n 0,\n \"≀\"\n ],\n [\n 0,\n \"≁\"\n ],\n [\n 0,\n {\n v: \"≂\",\n n: 824,\n o: \"≂̸\"\n }\n ],\n [\n 0,\n \"≃\"\n ],\n [\n 0,\n \"≄\"\n ],\n [\n 0,\n \"≅\"\n ],\n [\n 0,\n \"≆\"\n ],\n [\n 0,\n \"≇\"\n ],\n [\n 0,\n \"≈\"\n ],\n [\n 0,\n \"≉\"\n ],\n [\n 0,\n \"≊\"\n ],\n [\n 0,\n {\n v: \"≋\",\n n: 824,\n o: \"≋̸\"\n }\n ],\n [\n 0,\n \"≌\"\n ],\n [\n 0,\n {\n v: \"≍\",\n n: 8402,\n o: \"≍⃒\"\n }\n ],\n [\n 0,\n {\n v: \"≎\",\n n: 824,\n o: \"≎̸\"\n }\n ],\n [\n 0,\n {\n v: \"≏\",\n n: 824,\n o: \"≏̸\"\n }\n ],\n [\n 0,\n {\n v: \"≐\",\n n: 824,\n o: \"≐̸\"\n }\n ],\n [\n 0,\n \"≑\"\n ],\n [\n 0,\n \"≒\"\n ],\n [\n 0,\n \"≓\"\n ],\n [\n 0,\n \"≔\"\n ],\n [\n 0,\n \"≕\"\n ],\n [\n 0,\n \"≖\"\n ],\n [\n 0,\n \"≗\"\n ],\n [\n 1,\n \"≙\"\n ],\n [\n 0,\n \"≚\"\n ],\n [\n 1,\n \"≜\"\n ],\n [\n 2,\n \"≟\"\n ],\n [\n 0,\n \"≠\"\n ],\n [\n 0,\n {\n v: \"≡\",\n n: 8421,\n o: \"≡⃥\"\n }\n ],\n [\n 0,\n \"≢\"\n ],\n [\n 1,\n {\n v: \"≤\",\n n: 8402,\n o: \"≤⃒\"\n }\n ],\n [\n 0,\n {\n v: \"≥\",\n n: 8402,\n o: \"≥⃒\"\n }\n ],\n [\n 0,\n {\n v: \"≦\",\n n: 824,\n o: \"≦̸\"\n }\n ],\n [\n 0,\n {\n v: \"≧\",\n n: 824,\n o: \"≧̸\"\n }\n ],\n [\n 0,\n {\n v: \"≨\",\n n: 65024,\n o: \"≨︀\"\n }\n ],\n [\n 0,\n {\n v: \"≩\",\n n: 65024,\n o: \"≩︀\"\n }\n ],\n [\n 0,\n {\n v: \"≪\",\n n: new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 824,\n \"≪̸\"\n ],\n [\n 7577,\n \"≪⃒\"\n ]\n ]))\n }\n ],\n [\n 0,\n {\n v: \"≫\",\n n: new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 824,\n \"≫̸\"\n ],\n [\n 7577,\n \"≫⃒\"\n ]\n ]))\n }\n ],\n [\n 0,\n \"≬\"\n ],\n [\n 0,\n \"≭\"\n ],\n [\n 0,\n \"≮\"\n ],\n [\n 0,\n \"≯\"\n ],\n [\n 0,\n \"≰\"\n ],\n [\n 0,\n \"≱\"\n ],\n [\n 0,\n \"≲\"\n ],\n [\n 0,\n \"≳\"\n ],\n [\n 0,\n \"≴\"\n ],\n [\n 0,\n \"≵\"\n ],\n [\n 0,\n \"≶\"\n ],\n [\n 0,\n \"≷\"\n ],\n [\n 0,\n \"≸\"\n ],\n [\n 0,\n \"≹\"\n ],\n [\n 0,\n \"≺\"\n ],\n [\n 0,\n \"≻\"\n ],\n [\n 0,\n \"≼\"\n ],\n [\n 0,\n \"≽\"\n ],\n [\n 0,\n \"≾\"\n ],\n [\n 0,\n {\n v: \"≿\",\n n: 824,\n o: \"≿̸\"\n }\n ],\n [\n 0,\n \"⊀\"\n ],\n [\n 0,\n \"⊁\"\n ],\n [\n 0,\n {\n v: \"⊂\",\n n: 8402,\n o: \"⊂⃒\"\n }\n ],\n [\n 0,\n {\n v: \"⊃\",\n n: 8402,\n o: \"⊃⃒\"\n }\n ],\n [\n 0,\n \"⊄\"\n ],\n [\n 0,\n \"⊅\"\n ],\n [\n 0,\n \"⊆\"\n ],\n [\n 0,\n \"⊇\"\n ],\n [\n 0,\n \"⊈\"\n ],\n [\n 0,\n \"⊉\"\n ],\n [\n 0,\n {\n v: \"⊊\",\n n: 65024,\n o: \"⊊︀\"\n }\n ],\n [\n 0,\n {\n v: \"⊋\",\n n: 65024,\n o: \"⊋︀\"\n }\n ],\n [\n 1,\n \"⊍\"\n ],\n [\n 0,\n \"⊎\"\n ],\n [\n 0,\n {\n v: \"⊏\",\n n: 824,\n o: \"⊏̸\"\n }\n ],\n [\n 0,\n {\n v: \"⊐\",\n n: 824,\n o: \"⊐̸\"\n }\n ],\n [\n 0,\n \"⊑\"\n ],\n [\n 0,\n \"⊒\"\n ],\n [\n 0,\n {\n v: \"⊓\",\n n: 65024,\n o: \"⊓︀\"\n }\n ],\n [\n 0,\n {\n v: \"⊔\",\n n: 65024,\n o: \"⊔︀\"\n }\n ],\n [\n 0,\n \"⊕\"\n ],\n [\n 0,\n \"⊖\"\n ],\n [\n 0,\n \"⊗\"\n ],\n [\n 0,\n \"⊘\"\n ],\n [\n 0,\n \"⊙\"\n ],\n [\n 0,\n \"⊚\"\n ],\n [\n 0,\n \"⊛\"\n ],\n [\n 1,\n \"⊝\"\n ],\n [\n 0,\n \"⊞\"\n ],\n [\n 0,\n \"⊟\"\n ],\n [\n 0,\n \"⊠\"\n ],\n [\n 0,\n \"⊡\"\n ],\n [\n 0,\n \"⊢\"\n ],\n [\n 0,\n \"⊣\"\n ],\n [\n 0,\n \"⊤\"\n ],\n [\n 0,\n \"⊥\"\n ],\n [\n 1,\n \"⊧\"\n ],\n [\n 0,\n \"⊨\"\n ],\n [\n 0,\n \"⊩\"\n ],\n [\n 0,\n \"⊪\"\n ],\n [\n 0,\n \"⊫\"\n ],\n [\n 0,\n \"⊬\"\n ],\n [\n 0,\n \"⊭\"\n ],\n [\n 0,\n \"⊮\"\n ],\n [\n 0,\n \"⊯\"\n ],\n [\n 0,\n \"⊰\"\n ],\n [\n 1,\n \"⊲\"\n ],\n [\n 0,\n \"⊳\"\n ],\n [\n 0,\n {\n v: \"⊴\",\n n: 8402,\n o: \"⊴⃒\"\n }\n ],\n [\n 0,\n {\n v: \"⊵\",\n n: 8402,\n o: \"⊵⃒\"\n }\n ],\n [\n 0,\n \"⊶\"\n ],\n [\n 0,\n \"⊷\"\n ],\n [\n 0,\n \"⊸\"\n ],\n [\n 0,\n \"⊹\"\n ],\n [\n 0,\n \"⊺\"\n ],\n [\n 0,\n \"⊻\"\n ],\n [\n 1,\n \"⊽\"\n ],\n [\n 0,\n \"⊾\"\n ],\n [\n 0,\n \"⊿\"\n ],\n [\n 0,\n \"⋀\"\n ],\n [\n 0,\n \"⋁\"\n ],\n [\n 0,\n \"⋂\"\n ],\n [\n 0,\n \"⋃\"\n ],\n [\n 0,\n \"⋄\"\n ],\n [\n 0,\n \"⋅\"\n ],\n [\n 0,\n \"⋆\"\n ],\n [\n 0,\n \"⋇\"\n ],\n [\n 0,\n \"⋈\"\n ],\n [\n 0,\n \"⋉\"\n ],\n [\n 0,\n \"⋊\"\n ],\n [\n 0,\n \"⋋\"\n ],\n [\n 0,\n \"⋌\"\n ],\n [\n 0,\n \"⋍\"\n ],\n [\n 0,\n \"⋎\"\n ],\n [\n 0,\n \"⋏\"\n ],\n [\n 0,\n \"⋐\"\n ],\n [\n 0,\n \"⋑\"\n ],\n [\n 0,\n \"⋒\"\n ],\n [\n 0,\n \"⋓\"\n ],\n [\n 0,\n \"⋔\"\n ],\n [\n 0,\n \"⋕\"\n ],\n [\n 0,\n \"⋖\"\n ],\n [\n 0,\n \"⋗\"\n ],\n [\n 0,\n {\n v: \"⋘\",\n n: 824,\n o: \"⋘̸\"\n }\n ],\n [\n 0,\n {\n v: \"⋙\",\n n: 824,\n o: \"⋙̸\"\n }\n ],\n [\n 0,\n {\n v: \"⋚\",\n n: 65024,\n o: \"⋚︀\"\n }\n ],\n [\n 0,\n {\n v: \"⋛\",\n n: 65024,\n o: \"⋛︀\"\n }\n ],\n [\n 2,\n \"⋞\"\n ],\n [\n 0,\n \"⋟\"\n ],\n [\n 0,\n \"⋠\"\n ],\n [\n 0,\n \"⋡\"\n ],\n [\n 0,\n \"⋢\"\n ],\n [\n 0,\n \"⋣\"\n ],\n [\n 2,\n \"⋦\"\n ],\n [\n 0,\n \"⋧\"\n ],\n [\n 0,\n \"⋨\"\n ],\n [\n 0,\n \"⋩\"\n ],\n [\n 0,\n \"⋪\"\n ],\n [\n 0,\n \"⋫\"\n ],\n [\n 0,\n \"⋬\"\n ],\n [\n 0,\n \"⋭\"\n ],\n [\n 0,\n \"⋮\"\n ],\n [\n 0,\n \"⋯\"\n ],\n [\n 0,\n \"⋰\"\n ],\n [\n 0,\n \"⋱\"\n ],\n [\n 0,\n \"⋲\"\n ],\n [\n 0,\n \"⋳\"\n ],\n [\n 0,\n \"⋴\"\n ],\n [\n 0,\n {\n v: \"⋵\",\n n: 824,\n o: \"⋵̸\"\n }\n ],\n [\n 0,\n \"⋶\"\n ],\n [\n 0,\n \"⋷\"\n ],\n [\n 1,\n {\n v: \"⋹\",\n n: 824,\n o: \"⋹̸\"\n }\n ],\n [\n 0,\n \"⋺\"\n ],\n [\n 0,\n \"⋻\"\n ],\n [\n 0,\n \"⋼\"\n ],\n [\n 0,\n \"⋽\"\n ],\n [\n 0,\n \"⋾\"\n ],\n [\n 6,\n \"⌅\"\n ],\n [\n 0,\n \"⌆\"\n ],\n [\n 1,\n \"⌈\"\n ],\n [\n 0,\n \"⌉\"\n ],\n [\n 0,\n \"⌊\"\n ],\n [\n 0,\n \"⌋\"\n ],\n [\n 0,\n \"⌌\"\n ],\n [\n 0,\n \"⌍\"\n ],\n [\n 0,\n \"⌎\"\n ],\n [\n 0,\n \"⌏\"\n ],\n [\n 0,\n \"⌐\"\n ],\n [\n 1,\n \"⌒\"\n ],\n [\n 0,\n \"⌓\"\n ],\n [\n 1,\n \"⌕\"\n ],\n [\n 0,\n \"⌖\"\n ],\n [\n 5,\n \"⌜\"\n ],\n [\n 0,\n \"⌝\"\n ],\n [\n 0,\n \"⌞\"\n ],\n [\n 0,\n \"⌟\"\n ],\n [\n 2,\n \"⌢\"\n ],\n [\n 0,\n \"⌣\"\n ],\n [\n 9,\n \"⌭\"\n ],\n [\n 0,\n \"⌮\"\n ],\n [\n 7,\n \"⌶\"\n ],\n [\n 6,\n \"⌽\"\n ],\n [\n 1,\n \"⌿\"\n ],\n [\n 60,\n \"⍼\"\n ],\n [\n 51,\n \"⎰\"\n ],\n [\n 0,\n \"⎱\"\n ],\n [\n 2,\n \"⎴\"\n ],\n [\n 0,\n \"⎵\"\n ],\n [\n 0,\n \"⎶\"\n ],\n [\n 37,\n \"⏜\"\n ],\n [\n 0,\n \"⏝\"\n ],\n [\n 0,\n \"⏞\"\n ],\n [\n 0,\n \"⏟\"\n ],\n [\n 2,\n \"⏢\"\n ],\n [\n 4,\n \"⏧\"\n ],\n [\n 59,\n \"␣\"\n ],\n [\n 164,\n \"Ⓢ\"\n ],\n [\n 55,\n \"─\"\n ],\n [\n 1,\n \"│\"\n ],\n [\n 9,\n \"┌\"\n ],\n [\n 3,\n \"┐\"\n ],\n [\n 3,\n \"└\"\n ],\n [\n 3,\n \"┘\"\n ],\n [\n 3,\n \"├\"\n ],\n [\n 7,\n \"┤\"\n ],\n [\n 7,\n \"┬\"\n ],\n [\n 7,\n \"┴\"\n ],\n [\n 7,\n \"┼\"\n ],\n [\n 19,\n \"═\"\n ],\n [\n 0,\n \"║\"\n ],\n [\n 0,\n \"╒\"\n ],\n [\n 0,\n \"╓\"\n ],\n [\n 0,\n \"╔\"\n ],\n [\n 0,\n \"╕\"\n ],\n [\n 0,\n \"╖\"\n ],\n [\n 0,\n \"╗\"\n ],\n [\n 0,\n \"╘\"\n ],\n [\n 0,\n \"╙\"\n ],\n [\n 0,\n \"╚\"\n ],\n [\n 0,\n \"╛\"\n ],\n [\n 0,\n \"╜\"\n ],\n [\n 0,\n \"╝\"\n ],\n [\n 0,\n \"╞\"\n ],\n [\n 0,\n \"╟\"\n ],\n [\n 0,\n \"╠\"\n ],\n [\n 0,\n \"╡\"\n ],\n [\n 0,\n \"╢\"\n ],\n [\n 0,\n \"╣\"\n ],\n [\n 0,\n \"╤\"\n ],\n [\n 0,\n \"╥\"\n ],\n [\n 0,\n \"╦\"\n ],\n [\n 0,\n \"╧\"\n ],\n [\n 0,\n \"╨\"\n ],\n [\n 0,\n \"╩\"\n ],\n [\n 0,\n \"╪\"\n ],\n [\n 0,\n \"╫\"\n ],\n [\n 0,\n \"╬\"\n ],\n [\n 19,\n \"▀\"\n ],\n [\n 3,\n \"▄\"\n ],\n [\n 3,\n \"█\"\n ],\n [\n 8,\n \"░\"\n ],\n [\n 0,\n \"▒\"\n ],\n [\n 0,\n \"▓\"\n ],\n [\n 13,\n \"□\"\n ],\n [\n 8,\n \"▪\"\n ],\n [\n 0,\n \"▫\"\n ],\n [\n 1,\n \"▭\"\n ],\n [\n 0,\n \"▮\"\n ],\n [\n 2,\n \"▱\"\n ],\n [\n 1,\n \"△\"\n ],\n [\n 0,\n \"▴\"\n ],\n [\n 0,\n \"▵\"\n ],\n [\n 2,\n \"▸\"\n ],\n [\n 0,\n \"▹\"\n ],\n [\n 3,\n \"▽\"\n ],\n [\n 0,\n \"▾\"\n ],\n [\n 0,\n \"▿\"\n ],\n [\n 2,\n \"◂\"\n ],\n [\n 0,\n \"◃\"\n ],\n [\n 6,\n \"◊\"\n ],\n [\n 0,\n \"○\"\n ],\n [\n 32,\n \"◬\"\n ],\n [\n 2,\n \"◯\"\n ],\n [\n 8,\n \"◸\"\n ],\n [\n 0,\n \"◹\"\n ],\n [\n 0,\n \"◺\"\n ],\n [\n 0,\n \"◻\"\n ],\n [\n 0,\n \"◼\"\n ],\n [\n 8,\n \"★\"\n ],\n [\n 0,\n \"☆\"\n ],\n [\n 7,\n \"☎\"\n ],\n [\n 49,\n \"♀\"\n ],\n [\n 1,\n \"♂\"\n ],\n [\n 29,\n \"♠\"\n ],\n [\n 2,\n \"♣\"\n ],\n [\n 1,\n \"♥\"\n ],\n [\n 0,\n \"♦\"\n ],\n [\n 3,\n \"♪\"\n ],\n [\n 2,\n \"♭\"\n ],\n [\n 0,\n \"♮\"\n ],\n [\n 0,\n \"♯\"\n ],\n [\n 163,\n \"✓\"\n ],\n [\n 3,\n \"✗\"\n ],\n [\n 8,\n \"✠\"\n ],\n [\n 21,\n \"✶\"\n ],\n [\n 33,\n \"❘\"\n ],\n [\n 25,\n \"❲\"\n ],\n [\n 0,\n \"❳\"\n ],\n [\n 84,\n \"⟈\"\n ],\n [\n 0,\n \"⟉\"\n ],\n [\n 28,\n \"⟦\"\n ],\n [\n 0,\n \"⟧\"\n ],\n [\n 0,\n \"〈\"\n ],\n [\n 0,\n \"〉\"\n ],\n [\n 0,\n \"⟪\"\n ],\n [\n 0,\n \"⟫\"\n ],\n [\n 0,\n \"⟬\"\n ],\n [\n 0,\n \"⟭\"\n ],\n [\n 7,\n \"⟵\"\n ],\n [\n 0,\n \"⟶\"\n ],\n [\n 0,\n \"⟷\"\n ],\n [\n 0,\n \"⟸\"\n ],\n [\n 0,\n \"⟹\"\n ],\n [\n 0,\n \"⟺\"\n ],\n [\n 1,\n \"⟼\"\n ],\n [\n 2,\n \"⟿\"\n ],\n [\n 258,\n \"⤂\"\n ],\n [\n 0,\n \"⤃\"\n ],\n [\n 0,\n \"⤄\"\n ],\n [\n 0,\n \"⤅\"\n ],\n [\n 6,\n \"⤌\"\n ],\n [\n 0,\n \"⤍\"\n ],\n [\n 0,\n \"⤎\"\n ],\n [\n 0,\n \"⤏\"\n ],\n [\n 0,\n \"⤐\"\n ],\n [\n 0,\n \"⤑\"\n ],\n [\n 0,\n \"⤒\"\n ],\n [\n 0,\n \"⤓\"\n ],\n [\n 2,\n \"⤖\"\n ],\n [\n 2,\n \"⤙\"\n ],\n [\n 0,\n \"⤚\"\n ],\n [\n 0,\n \"⤛\"\n ],\n [\n 0,\n \"⤜\"\n ],\n [\n 0,\n \"⤝\"\n ],\n [\n 0,\n \"⤞\"\n ],\n [\n 0,\n \"⤟\"\n ],\n [\n 0,\n \"⤠\"\n ],\n [\n 2,\n \"⤣\"\n ],\n [\n 0,\n \"⤤\"\n ],\n [\n 0,\n \"⤥\"\n ],\n [\n 0,\n \"⤦\"\n ],\n [\n 0,\n \"⤧\"\n ],\n [\n 0,\n \"⤨\"\n ],\n [\n 0,\n \"⤩\"\n ],\n [\n 0,\n \"⤪\"\n ],\n [\n 8,\n {\n v: \"⤳\",\n n: 824,\n o: \"⤳̸\"\n }\n ],\n [\n 1,\n \"⤵\"\n ],\n [\n 0,\n \"⤶\"\n ],\n [\n 0,\n \"⤷\"\n ],\n [\n 0,\n \"⤸\"\n ],\n [\n 0,\n \"⤹\"\n ],\n [\n 2,\n \"⤼\"\n ],\n [\n 0,\n \"⤽\"\n ],\n [\n 7,\n \"⥅\"\n ],\n [\n 2,\n \"⥈\"\n ],\n [\n 0,\n \"⥉\"\n ],\n [\n 0,\n \"⥊\"\n ],\n [\n 0,\n \"⥋\"\n ],\n [\n 2,\n \"⥎\"\n ],\n [\n 0,\n \"⥏\"\n ],\n [\n 0,\n \"⥐\"\n ],\n [\n 0,\n \"⥑\"\n ],\n [\n 0,\n \"⥒\"\n ],\n [\n 0,\n \"⥓\"\n ],\n [\n 0,\n \"⥔\"\n ],\n [\n 0,\n \"⥕\"\n ],\n [\n 0,\n \"⥖\"\n ],\n [\n 0,\n \"⥗\"\n ],\n [\n 0,\n \"⥘\"\n ],\n [\n 0,\n \"⥙\"\n ],\n [\n 0,\n \"⥚\"\n ],\n [\n 0,\n \"⥛\"\n ],\n [\n 0,\n \"⥜\"\n ],\n [\n 0,\n \"⥝\"\n ],\n [\n 0,\n \"⥞\"\n ],\n [\n 0,\n \"⥟\"\n ],\n [\n 0,\n \"⥠\"\n ],\n [\n 0,\n \"⥡\"\n ],\n [\n 0,\n \"⥢\"\n ],\n [\n 0,\n \"⥣\"\n ],\n [\n 0,\n \"⥤\"\n ],\n [\n 0,\n \"⥥\"\n ],\n [\n 0,\n \"⥦\"\n ],\n [\n 0,\n \"⥧\"\n ],\n [\n 0,\n \"⥨\"\n ],\n [\n 0,\n \"⥩\"\n ],\n [\n 0,\n \"⥪\"\n ],\n [\n 0,\n \"⥫\"\n ],\n [\n 0,\n \"⥬\"\n ],\n [\n 0,\n \"⥭\"\n ],\n [\n 0,\n \"⥮\"\n ],\n [\n 0,\n \"⥯\"\n ],\n [\n 0,\n \"⥰\"\n ],\n [\n 0,\n \"⥱\"\n ],\n [\n 0,\n \"⥲\"\n ],\n [\n 0,\n \"⥳\"\n ],\n [\n 0,\n \"⥴\"\n ],\n [\n 0,\n \"⥵\"\n ],\n [\n 0,\n \"⥶\"\n ],\n [\n 1,\n \"⥸\"\n ],\n [\n 0,\n \"⥹\"\n ],\n [\n 1,\n \"⥻\"\n ],\n [\n 0,\n \"⥼\"\n ],\n [\n 0,\n \"⥽\"\n ],\n [\n 0,\n \"⥾\"\n ],\n [\n 0,\n \"⥿\"\n ],\n [\n 5,\n \"⦅\"\n ],\n [\n 0,\n \"⦆\"\n ],\n [\n 4,\n \"⦋\"\n ],\n [\n 0,\n \"⦌\"\n ],\n [\n 0,\n \"⦍\"\n ],\n [\n 0,\n \"⦎\"\n ],\n [\n 0,\n \"⦏\"\n ],\n [\n 0,\n \"⦐\"\n ],\n [\n 0,\n \"⦑\"\n ],\n [\n 0,\n \"⦒\"\n ],\n [\n 0,\n \"⦓\"\n ],\n [\n 0,\n \"⦔\"\n ],\n [\n 0,\n \"⦕\"\n ],\n [\n 0,\n \"⦖\"\n ],\n [\n 3,\n \"⦚\"\n ],\n [\n 1,\n \"⦜\"\n ],\n [\n 0,\n \"⦝\"\n ],\n [\n 6,\n \"⦤\"\n ],\n [\n 0,\n \"⦥\"\n ],\n [\n 0,\n \"⦦\"\n ],\n [\n 0,\n \"⦧\"\n ],\n [\n 0,\n \"⦨\"\n ],\n [\n 0,\n \"⦩\"\n ],\n [\n 0,\n \"⦪\"\n ],\n [\n 0,\n \"⦫\"\n ],\n [\n 0,\n \"⦬\"\n ],\n [\n 0,\n \"⦭\"\n ],\n [\n 0,\n \"⦮\"\n ],\n [\n 0,\n \"⦯\"\n ],\n [\n 0,\n \"⦰\"\n ],\n [\n 0,\n \"⦱\"\n ],\n [\n 0,\n \"⦲\"\n ],\n [\n 0,\n \"⦳\"\n ],\n [\n 0,\n \"⦴\"\n ],\n [\n 0,\n \"⦵\"\n ],\n [\n 0,\n \"⦶\"\n ],\n [\n 0,\n \"⦷\"\n ],\n [\n 1,\n \"⦹\"\n ],\n [\n 1,\n \"⦻\"\n ],\n [\n 0,\n \"⦼\"\n ],\n [\n 1,\n \"⦾\"\n ],\n [\n 0,\n \"⦿\"\n ],\n [\n 0,\n \"⧀\"\n ],\n [\n 0,\n \"⧁\"\n ],\n [\n 0,\n \"⧂\"\n ],\n [\n 0,\n \"⧃\"\n ],\n [\n 0,\n \"⧄\"\n ],\n [\n 0,\n \"⧅\"\n ],\n [\n 3,\n \"⧉\"\n ],\n [\n 3,\n \"⧍\"\n ],\n [\n 0,\n \"⧎\"\n ],\n [\n 0,\n {\n v: \"⧏\",\n n: 824,\n o: \"⧏̸\"\n }\n ],\n [\n 0,\n {\n v: \"⧐\",\n n: 824,\n o: \"⧐̸\"\n }\n ],\n [\n 11,\n \"⧜\"\n ],\n [\n 0,\n \"⧝\"\n ],\n [\n 0,\n \"⧞\"\n ],\n [\n 4,\n \"⧣\"\n ],\n [\n 0,\n \"⧤\"\n ],\n [\n 0,\n \"⧥\"\n ],\n [\n 5,\n \"⧫\"\n ],\n [\n 8,\n \"⧴\"\n ],\n [\n 1,\n \"⧶\"\n ],\n [\n 9,\n \"⨀\"\n ],\n [\n 0,\n \"⨁\"\n ],\n [\n 0,\n \"⨂\"\n ],\n [\n 1,\n \"⨄\"\n ],\n [\n 1,\n \"⨆\"\n ],\n [\n 5,\n \"⨌\"\n ],\n [\n 0,\n \"⨍\"\n ],\n [\n 2,\n \"⨐\"\n ],\n [\n 0,\n \"⨑\"\n ],\n [\n 0,\n \"⨒\"\n ],\n [\n 0,\n \"⨓\"\n ],\n [\n 0,\n \"⨔\"\n ],\n [\n 0,\n \"⨕\"\n ],\n [\n 0,\n \"⨖\"\n ],\n [\n 0,\n \"⨗\"\n ],\n [\n 10,\n \"⨢\"\n ],\n [\n 0,\n \"⨣\"\n ],\n [\n 0,\n \"⨤\"\n ],\n [\n 0,\n \"⨥\"\n ],\n [\n 0,\n \"⨦\"\n ],\n [\n 0,\n \"⨧\"\n ],\n [\n 1,\n \"⨩\"\n ],\n [\n 0,\n \"⨪\"\n ],\n [\n 2,\n \"⨭\"\n ],\n [\n 0,\n \"⨮\"\n ],\n [\n 0,\n \"⨯\"\n ],\n [\n 0,\n \"⨰\"\n ],\n [\n 0,\n \"⨱\"\n ],\n [\n 1,\n \"⨳\"\n ],\n [\n 0,\n \"⨴\"\n ],\n [\n 0,\n \"⨵\"\n ],\n [\n 0,\n \"⨶\"\n ],\n [\n 0,\n \"⨷\"\n ],\n [\n 0,\n \"⨸\"\n ],\n [\n 0,\n \"⨹\"\n ],\n [\n 0,\n \"⨺\"\n ],\n [\n 0,\n \"⨻\"\n ],\n [\n 0,\n \"⨼\"\n ],\n [\n 2,\n \"⨿\"\n ],\n [\n 0,\n \"⩀\"\n ],\n [\n 1,\n \"⩂\"\n ],\n [\n 0,\n \"⩃\"\n ],\n [\n 0,\n \"⩄\"\n ],\n [\n 0,\n \"⩅\"\n ],\n [\n 0,\n \"⩆\"\n ],\n [\n 0,\n \"⩇\"\n ],\n [\n 0,\n \"⩈\"\n ],\n [\n 0,\n \"⩉\"\n ],\n [\n 0,\n \"⩊\"\n ],\n [\n 0,\n \"⩋\"\n ],\n [\n 0,\n \"⩌\"\n ],\n [\n 0,\n \"⩍\"\n ],\n [\n 2,\n \"⩐\"\n ],\n [\n 2,\n \"⩓\"\n ],\n [\n 0,\n \"⩔\"\n ],\n [\n 0,\n \"⩕\"\n ],\n [\n 0,\n \"⩖\"\n ],\n [\n 0,\n \"⩗\"\n ],\n [\n 0,\n \"⩘\"\n ],\n [\n 1,\n \"⩚\"\n ],\n [\n 0,\n \"⩛\"\n ],\n [\n 0,\n \"⩜\"\n ],\n [\n 0,\n \"⩝\"\n ],\n [\n 1,\n \"⩟\"\n ],\n [\n 6,\n \"⩦\"\n ],\n [\n 3,\n \"⩪\"\n ],\n [\n 2,\n {\n v: \"⩭\",\n n: 824,\n o: \"⩭̸\"\n }\n ],\n [\n 0,\n \"⩮\"\n ],\n [\n 0,\n \"⩯\"\n ],\n [\n 0,\n {\n v: \"⩰\",\n n: 824,\n o: \"⩰̸\"\n }\n ],\n [\n 0,\n \"⩱\"\n ],\n [\n 0,\n \"⩲\"\n ],\n [\n 0,\n \"⩳\"\n ],\n [\n 0,\n \"⩴\"\n ],\n [\n 0,\n \"⩵\"\n ],\n [\n 1,\n \"⩷\"\n ],\n [\n 0,\n \"⩸\"\n ],\n [\n 0,\n \"⩹\"\n ],\n [\n 0,\n \"⩺\"\n ],\n [\n 0,\n \"⩻\"\n ],\n [\n 0,\n \"⩼\"\n ],\n [\n 0,\n {\n v: \"⩽\",\n n: 824,\n o: \"⩽̸\"\n }\n ],\n [\n 0,\n {\n v: \"⩾\",\n n: 824,\n o: \"⩾̸\"\n }\n ],\n [\n 0,\n \"⩿\"\n ],\n [\n 0,\n \"⪀\"\n ],\n [\n 0,\n \"⪁\"\n ],\n [\n 0,\n \"⪂\"\n ],\n [\n 0,\n \"⪃\"\n ],\n [\n 0,\n \"⪄\"\n ],\n [\n 0,\n \"⪅\"\n ],\n [\n 0,\n \"⪆\"\n ],\n [\n 0,\n \"⪇\"\n ],\n [\n 0,\n \"⪈\"\n ],\n [\n 0,\n \"⪉\"\n ],\n [\n 0,\n \"⪊\"\n ],\n [\n 0,\n \"⪋\"\n ],\n [\n 0,\n \"⪌\"\n ],\n [\n 0,\n \"⪍\"\n ],\n [\n 0,\n \"⪎\"\n ],\n [\n 0,\n \"⪏\"\n ],\n [\n 0,\n \"⪐\"\n ],\n [\n 0,\n \"⪑\"\n ],\n [\n 0,\n \"⪒\"\n ],\n [\n 0,\n \"⪓\"\n ],\n [\n 0,\n \"⪔\"\n ],\n [\n 0,\n \"⪕\"\n ],\n [\n 0,\n \"⪖\"\n ],\n [\n 0,\n \"⪗\"\n ],\n [\n 0,\n \"⪘\"\n ],\n [\n 0,\n \"⪙\"\n ],\n [\n 0,\n \"⪚\"\n ],\n [\n 2,\n \"⪝\"\n ],\n [\n 0,\n \"⪞\"\n ],\n [\n 0,\n \"⪟\"\n ],\n [\n 0,\n \"⪠\"\n ],\n [\n 0,\n {\n v: \"⪡\",\n n: 824,\n o: \"⪡̸\"\n }\n ],\n [\n 0,\n {\n v: \"⪢\",\n n: 824,\n o: \"⪢̸\"\n }\n ],\n [\n 1,\n \"⪤\"\n ],\n [\n 0,\n \"⪥\"\n ],\n [\n 0,\n \"⪦\"\n ],\n [\n 0,\n \"⪧\"\n ],\n [\n 0,\n \"⪨\"\n ],\n [\n 0,\n \"⪩\"\n ],\n [\n 0,\n \"⪪\"\n ],\n [\n 0,\n \"⪫\"\n ],\n [\n 0,\n {\n v: \"⪬\",\n n: 65024,\n o: \"⪬︀\"\n }\n ],\n [\n 0,\n {\n v: \"⪭\",\n n: 65024,\n o: \"⪭︀\"\n }\n ],\n [\n 0,\n \"⪮\"\n ],\n [\n 0,\n {\n v: \"⪯\",\n n: 824,\n o: \"⪯̸\"\n }\n ],\n [\n 0,\n {\n v: \"⪰\",\n n: 824,\n o: \"⪰̸\"\n }\n ],\n [\n 2,\n \"⪳\"\n ],\n [\n 0,\n \"⪴\"\n ],\n [\n 0,\n \"⪵\"\n ],\n [\n 0,\n \"⪶\"\n ],\n [\n 0,\n \"⪷\"\n ],\n [\n 0,\n \"⪸\"\n ],\n [\n 0,\n \"⪹\"\n ],\n [\n 0,\n \"⪺\"\n ],\n [\n 0,\n \"⪻\"\n ],\n [\n 0,\n \"⪼\"\n ],\n [\n 0,\n \"⪽\"\n ],\n [\n 0,\n \"⪾\"\n ],\n [\n 0,\n \"⪿\"\n ],\n [\n 0,\n \"⫀\"\n ],\n [\n 0,\n \"⫁\"\n ],\n [\n 0,\n \"⫂\"\n ],\n [\n 0,\n \"⫃\"\n ],\n [\n 0,\n \"⫄\"\n ],\n [\n 0,\n {\n v: \"⫅\",\n n: 824,\n o: \"⫅̸\"\n }\n ],\n [\n 0,\n {\n v: \"⫆\",\n n: 824,\n o: \"⫆̸\"\n }\n ],\n [\n 0,\n \"⫇\"\n ],\n [\n 0,\n \"⫈\"\n ],\n [\n 2,\n {\n v: \"⫋\",\n n: 65024,\n o: \"⫋︀\"\n }\n ],\n [\n 0,\n {\n v: \"⫌\",\n n: 65024,\n o: \"⫌︀\"\n }\n ],\n [\n 2,\n \"⫏\"\n ],\n [\n 0,\n \"⫐\"\n ],\n [\n 0,\n \"⫑\"\n ],\n [\n 0,\n \"⫒\"\n ],\n [\n 0,\n \"⫓\"\n ],\n [\n 0,\n \"⫔\"\n ],\n [\n 0,\n \"⫕\"\n ],\n [\n 0,\n \"⫖\"\n ],\n [\n 0,\n \"⫗\"\n ],\n [\n 0,\n \"⫘\"\n ],\n [\n 0,\n \"⫙\"\n ],\n [\n 0,\n \"⫚\"\n ],\n [\n 0,\n \"⫛\"\n ],\n [\n 8,\n \"⫤\"\n ],\n [\n 1,\n \"⫦\"\n ],\n [\n 0,\n \"⫧\"\n ],\n [\n 0,\n \"⫨\"\n ],\n [\n 0,\n \"⫩\"\n ],\n [\n 1,\n \"⫫\"\n ],\n [\n 0,\n \"⫬\"\n ],\n [\n 0,\n \"⫭\"\n ],\n [\n 0,\n \"⫮\"\n ],\n [\n 0,\n \"⫯\"\n ],\n [\n 0,\n \"⫰\"\n ],\n [\n 0,\n \"⫱\"\n ],\n [\n 0,\n \"⫲\"\n ],\n [\n 0,\n \"⫳\"\n ],\n [\n 9,\n {\n v: \"⫽\",\n n: 8421,\n o: \"⫽⃥\"\n }\n ],\n [\n 44343,\n {\n n: new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 56476,\n \"𝒜\"\n ],\n [\n 1,\n \"𝒞\"\n ],\n [\n 0,\n \"𝒟\"\n ],\n [\n 2,\n \"𝒢\"\n ],\n [\n 2,\n \"𝒥\"\n ],\n [\n 0,\n \"𝒦\"\n ],\n [\n 2,\n \"𝒩\"\n ],\n [\n 0,\n \"𝒪\"\n ],\n [\n 0,\n \"𝒫\"\n ],\n [\n 0,\n \"𝒬\"\n ],\n [\n 1,\n \"𝒮\"\n ],\n [\n 0,\n \"𝒯\"\n ],\n [\n 0,\n \"𝒰\"\n ],\n [\n 0,\n \"𝒱\"\n ],\n [\n 0,\n \"𝒲\"\n ],\n [\n 0,\n \"𝒳\"\n ],\n [\n 0,\n \"𝒴\"\n ],\n [\n 0,\n \"𝒵\"\n ],\n [\n 0,\n \"𝒶\"\n ],\n [\n 0,\n \"𝒷\"\n ],\n [\n 0,\n \"𝒸\"\n ],\n [\n 0,\n \"𝒹\"\n ],\n [\n 1,\n \"𝒻\"\n ],\n [\n 1,\n \"𝒽\"\n ],\n [\n 0,\n \"𝒾\"\n ],\n [\n 0,\n \"𝒿\"\n ],\n [\n 0,\n \"𝓀\"\n ],\n [\n 0,\n \"𝓁\"\n ],\n [\n 0,\n \"𝓂\"\n ],\n [\n 0,\n \"𝓃\"\n ],\n [\n 1,\n \"𝓅\"\n ],\n [\n 0,\n \"𝓆\"\n ],\n [\n 0,\n \"𝓇\"\n ],\n [\n 0,\n \"𝓈\"\n ],\n [\n 0,\n \"𝓉\"\n ],\n [\n 0,\n \"𝓊\"\n ],\n [\n 0,\n \"𝓋\"\n ],\n [\n 0,\n \"𝓌\"\n ],\n [\n 0,\n \"𝓍\"\n ],\n [\n 0,\n \"𝓎\"\n ],\n [\n 0,\n \"𝓏\"\n ],\n [\n 52,\n \"𝔄\"\n ],\n [\n 0,\n \"𝔅\"\n ],\n [\n 1,\n \"𝔇\"\n ],\n [\n 0,\n \"𝔈\"\n ],\n [\n 0,\n \"𝔉\"\n ],\n [\n 0,\n \"𝔊\"\n ],\n [\n 2,\n \"𝔍\"\n ],\n [\n 0,\n \"𝔎\"\n ],\n [\n 0,\n \"𝔏\"\n ],\n [\n 0,\n \"𝔐\"\n ],\n [\n 0,\n \"𝔑\"\n ],\n [\n 0,\n \"𝔒\"\n ],\n [\n 0,\n \"𝔓\"\n ],\n [\n 0,\n \"𝔔\"\n ],\n [\n 1,\n \"𝔖\"\n ],\n [\n 0,\n \"𝔗\"\n ],\n [\n 0,\n \"𝔘\"\n ],\n [\n 0,\n \"𝔙\"\n ],\n [\n 0,\n \"𝔚\"\n ],\n [\n 0,\n \"𝔛\"\n ],\n [\n 0,\n \"𝔜\"\n ],\n [\n 1,\n \"𝔞\"\n ],\n [\n 0,\n \"𝔟\"\n ],\n [\n 0,\n \"𝔠\"\n ],\n [\n 0,\n \"𝔡\"\n ],\n [\n 0,\n \"𝔢\"\n ],\n [\n 0,\n \"𝔣\"\n ],\n [\n 0,\n \"𝔤\"\n ],\n [\n 0,\n \"𝔥\"\n ],\n [\n 0,\n \"𝔦\"\n ],\n [\n 0,\n \"𝔧\"\n ],\n [\n 0,\n \"𝔨\"\n ],\n [\n 0,\n \"𝔩\"\n ],\n [\n 0,\n \"𝔪\"\n ],\n [\n 0,\n \"𝔫\"\n ],\n [\n 0,\n \"𝔬\"\n ],\n [\n 0,\n \"𝔭\"\n ],\n [\n 0,\n \"𝔮\"\n ],\n [\n 0,\n \"𝔯\"\n ],\n [\n 0,\n \"𝔰\"\n ],\n [\n 0,\n \"𝔱\"\n ],\n [\n 0,\n \"𝔲\"\n ],\n [\n 0,\n \"𝔳\"\n ],\n [\n 0,\n \"𝔴\"\n ],\n [\n 0,\n \"𝔵\"\n ],\n [\n 0,\n \"𝔶\"\n ],\n [\n 0,\n \"𝔷\"\n ],\n [\n 0,\n \"𝔸\"\n ],\n [\n 0,\n \"𝔹\"\n ],\n [\n 1,\n \"𝔻\"\n ],\n [\n 0,\n \"𝔼\"\n ],\n [\n 0,\n \"𝔽\"\n ],\n [\n 0,\n \"𝔾\"\n ],\n [\n 1,\n \"𝕀\"\n ],\n [\n 0,\n \"𝕁\"\n ],\n [\n 0,\n \"𝕂\"\n ],\n [\n 0,\n \"𝕃\"\n ],\n [\n 0,\n \"𝕄\"\n ],\n [\n 1,\n \"𝕆\"\n ],\n [\n 3,\n \"𝕊\"\n ],\n [\n 0,\n \"𝕋\"\n ],\n [\n 0,\n \"𝕌\"\n ],\n [\n 0,\n \"𝕍\"\n ],\n [\n 0,\n \"𝕎\"\n ],\n [\n 0,\n \"𝕏\"\n ],\n [\n 0,\n \"𝕐\"\n ],\n [\n 1,\n \"𝕒\"\n ],\n [\n 0,\n \"𝕓\"\n ],\n [\n 0,\n \"𝕔\"\n ],\n [\n 0,\n \"𝕕\"\n ],\n [\n 0,\n \"𝕖\"\n ],\n [\n 0,\n \"𝕗\"\n ],\n [\n 0,\n \"𝕘\"\n ],\n [\n 0,\n \"𝕙\"\n ],\n [\n 0,\n \"𝕚\"\n ],\n [\n 0,\n \"𝕛\"\n ],\n [\n 0,\n \"𝕜\"\n ],\n [\n 0,\n \"𝕝\"\n ],\n [\n 0,\n \"𝕞\"\n ],\n [\n 0,\n \"𝕟\"\n ],\n [\n 0,\n \"𝕠\"\n ],\n [\n 0,\n \"𝕡\"\n ],\n [\n 0,\n \"𝕢\"\n ],\n [\n 0,\n \"𝕣\"\n ],\n [\n 0,\n \"𝕤\"\n ],\n [\n 0,\n \"𝕥\"\n ],\n [\n 0,\n \"𝕦\"\n ],\n [\n 0,\n \"𝕧\"\n ],\n [\n 0,\n \"𝕨\"\n ],\n [\n 0,\n \"𝕩\"\n ],\n [\n 0,\n \"𝕪\"\n ],\n [\n 0,\n \"𝕫\"\n ]\n ]))\n }\n ],\n [\n 8906,\n \"ff\"\n ],\n [\n 0,\n \"fi\"\n ],\n [\n 0,\n \"fl\"\n ],\n [\n 0,\n \"ffi\"\n ],\n [\n 0,\n \"ffl\"\n ]\n]));\n\n});\n\nparcelRegister(\"i7QF4\", function(module, exports) {\n\n$parcel$export(module.exports, \"xmlReplacer\", () => $d321bae15adf01a4$export$5699810ce3244ab8);\n$parcel$export(module.exports, \"getCodePoint\", () => $d321bae15adf01a4$export$e02688b8085d016b);\n$parcel$export(module.exports, \"encodeXML\", () => $d321bae15adf01a4$export$18855ec5be97da16);\n$parcel$export(module.exports, \"escapeUTF8\", () => $d321bae15adf01a4$export$9e081872deefdcb0);\n$parcel$export(module.exports, \"escapeAttribute\", () => $d321bae15adf01a4$export$30330f3d5eb70e11);\n$parcel$export(module.exports, \"escapeText\", () => $d321bae15adf01a4$export$96e6fc3a139b2555);\nconst $d321bae15adf01a4$export$5699810ce3244ab8 = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst $d321bae15adf01a4$var$xmlCodeMap = new Map([\n [\n 34,\n \""\"\n ],\n [\n 38,\n \"&\"\n ],\n [\n 39,\n \"'\"\n ],\n [\n 60,\n \"<\"\n ],\n [\n 62,\n \">\"\n ]\n]);\nconst $d321bae15adf01a4$export$e02688b8085d016b = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null ? (str, index)=>str.codePointAt(index) : (c, index)=>(c.charCodeAt(index) & 0xfc00) === 0xd800 ? (c.charCodeAt(index) - 0xd800) * 0x400 + c.charCodeAt(index + 1) - 0xdc00 + 0x10000 : c.charCodeAt(index);\nfunction $d321bae15adf01a4$export$18855ec5be97da16(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while((match = $d321bae15adf01a4$export$5699810ce3244ab8.exec(str)) !== null){\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = $d321bae15adf01a4$var$xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n } else {\n ret += `${str.substring(lastIdx, i)}${$d321bae15adf01a4$export$e02688b8085d016b(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = $d321bae15adf01a4$export$5699810ce3244ab8.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\nconst $d321bae15adf01a4$export$4e7f196112fea3c5 = $d321bae15adf01a4$export$18855ec5be97da16;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */ function $d321bae15adf01a4$var$getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while(match = regex.exec(data)){\n if (lastIdx !== match.index) result += data.substring(lastIdx, match.index);\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\nconst $d321bae15adf01a4$export$9e081872deefdcb0 = $d321bae15adf01a4$var$getEscaper(/[&<>'\"]/g, $d321bae15adf01a4$var$xmlCodeMap);\nconst $d321bae15adf01a4$export$30330f3d5eb70e11 = $d321bae15adf01a4$var$getEscaper(/[\"&\\u00A0]/g, new Map([\n [\n 34,\n \""\"\n ],\n [\n 38,\n \"&\"\n ],\n [\n 160,\n \" \"\n ]\n]));\nconst $d321bae15adf01a4$export$96e6fc3a139b2555 = $d321bae15adf01a4$var$getEscaper(/[&<>\\u00A0]/g, new Map([\n [\n 38,\n \"&\"\n ],\n [\n 60,\n \"<\"\n ],\n [\n 62,\n \">\"\n ],\n [\n 160,\n \" \"\n ]\n]));\n\n});\n\n\n\nparcelRegister(\"5CdvS\", function(module, exports) {\n\n$parcel$export(module.exports, \"elementNames\", () => $416afbc7a414ed28$export$82b917442d249e05);\n$parcel$export(module.exports, \"attributeNames\", () => $416afbc7a414ed28$export$b4cfbfd90280b005);\nconst $416afbc7a414ed28$export$82b917442d249e05 = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\"\n].map((val)=>[\n val.toLowerCase(),\n val\n ]));\nconst $416afbc7a414ed28$export$b4cfbfd90280b005 = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\"\n].map((val)=>[\n val.toLowerCase(),\n val\n ]));\n\n});\n\n\n\nparcelRegister(\"63Sud\", function(module, exports) {\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\nfunction $469d49c0c2788608$export$f8cf48ee793b41be(elem) {\n return (0, $lftuc.hasChildren)(elem) ? elem.children : [];\n}\nfunction $469d49c0c2788608$export$58081aedf094d85b(elem) {\n return elem.parent || null;\n}\nfunction $469d49c0c2788608$export$f312c3733b79ac0d(elem) {\n const parent = $469d49c0c2788608$export$58081aedf094d85b(elem);\n if (parent != null) return $469d49c0c2788608$export$f8cf48ee793b41be(parent);\n const siblings = [\n elem\n ];\n let { prev: prev, next: next } = elem;\n while(prev != null){\n siblings.unshift(prev);\n ({ prev: prev } = prev);\n }\n while(next != null){\n siblings.push(next);\n ({ next: next } = next);\n }\n return siblings;\n}\nfunction $469d49c0c2788608$export$1e335898aa11b111(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\nfunction $469d49c0c2788608$export$aa37f90c17957f38(elem, name) {\n return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null;\n}\nfunction $469d49c0c2788608$export$7d9f7e9c1c02b41e(elem) {\n return elem.name;\n}\nfunction $469d49c0c2788608$export$9be3779649ef9cc7(elem) {\n let { next: next } = elem;\n while(next !== null && !(0, $lftuc.isTag)(next))({ next: next } = next);\n return next;\n}\nfunction $469d49c0c2788608$export$c8bafb6e59c0b8e(elem) {\n let { prev: prev } = elem;\n while(prev !== null && !(0, $lftuc.isTag)(prev))({ prev: prev } = prev);\n return prev;\n}\n\n});\n\nparcelRegister(\"fVc2z\", function(module, exports) {\n/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */ function $b97584d8d1d972f9$export$f883456a56996078(elem) {\n if (elem.prev) elem.prev.next = elem.next;\n if (elem.next) elem.next.prev = elem.prev;\n if (elem.parent) {\n const childs = elem.parent.children;\n const childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) childs.splice(childsIndex, 1);\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\nfunction $b97584d8d1d972f9$export$2dfe578f95754f6a(elem, replacement) {\n const prev = replacement.prev = elem.prev;\n if (prev) prev.next = replacement;\n const next = replacement.next = elem.next;\n if (next) next.prev = replacement;\n const parent = replacement.parent = elem.parent;\n if (parent) {\n const childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\nfunction $b97584d8d1d972f9$export$1b8e57c9ea42f1d2(parent, child) {\n $b97584d8d1d972f9$export$f883456a56996078(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n const sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n } else child.prev = null;\n}\nfunction $b97584d8d1d972f9$export$10d8903dec122b9d(elem, next) {\n $b97584d8d1d972f9$export$f883456a56996078(next);\n const { parent: parent } = elem;\n const currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n } else if (parent) parent.children.push(next);\n}\nfunction $b97584d8d1d972f9$export$47b51e6d100007bc(parent, child) {\n $b97584d8d1d972f9$export$f883456a56996078(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n const sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n } else child.next = null;\n}\nfunction $b97584d8d1d972f9$export$68159836694e22c1(elem, prev) {\n $b97584d8d1d972f9$export$f883456a56996078(prev);\n const { parent: parent } = elem;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) elem.prev.next = prev;\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n\n});\n\nparcelRegister(\"jAAIj\", function(module, exports) {\n\n$parcel$export(module.exports, \"filter\", () => $e42ddbaefcc2cb3e$export$3dea766d36a8935f);\n$parcel$export(module.exports, \"findOne\", () => $e42ddbaefcc2cb3e$export$a541876d5d7daf90);\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\nfunction $e42ddbaefcc2cb3e$export$3dea766d36a8935f(test, node, recurse = true, limit = Infinity) {\n return $e42ddbaefcc2cb3e$export$71aa6c912b956294(test, Array.isArray(node) ? node : [\n node\n ], recurse, limit);\n}\nfunction $e42ddbaefcc2cb3e$export$71aa6c912b956294(test, nodes, recurse, limit) {\n const result = [];\n /** Stack of the arrays we are looking at. */ const nodeStack = [\n nodes\n ];\n /** Stack of the indices within the arrays. */ const indexStack = [\n 0\n ];\n for(;;){\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) return result;\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0) return result;\n }\n if (recurse && (0, $lftuc.hasChildren)(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */ indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\nfunction $e42ddbaefcc2cb3e$export$ac03a862904ce329(test, nodes) {\n return nodes.find(test);\n}\nfunction $e42ddbaefcc2cb3e$export$a541876d5d7daf90(test, nodes, recurse = true) {\n let elem = null;\n for(let i = 0; i < nodes.length && !elem; i++){\n const node = nodes[i];\n if (!(0, $lftuc.isTag)(node)) continue;\n else if (test(node)) elem = node;\n else if (recurse && node.children.length > 0) elem = $e42ddbaefcc2cb3e$export$a541876d5d7daf90(test, node.children, true);\n }\n return elem;\n}\nfunction $e42ddbaefcc2cb3e$export$9d99dce58ac4a31b(test, nodes) {\n return nodes.some((checked)=>(0, $lftuc.isTag)(checked) && (test(checked) || $e42ddbaefcc2cb3e$export$9d99dce58ac4a31b(test, checked.children)));\n}\nfunction $e42ddbaefcc2cb3e$export$18200ea6c8035394(test, nodes) {\n const result = [];\n const nodeStack = [\n nodes\n ];\n const indexStack = [\n 0\n ];\n for(;;){\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) return result;\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (!(0, $lftuc.isTag)(elem)) continue;\n if (test(elem)) result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n\n});\n\nparcelRegister(\"7zAkY\", function(module, exports) {\n\n$parcel$export(module.exports, \"getElementsByTagName\", () => $5837fd230ec46d88$export$af941c3c7c3b40f5);\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\n\nvar $jAAIj = parcelRequire(\"jAAIj\");\n/**\n * A map of functions to check nodes against.\n */ const $5837fd230ec46d88$var$Checks = {\n tag_name (name) {\n if (typeof name === \"function\") return (elem)=>(0, $lftuc.isTag)(elem) && name(elem.name);\n else if (name === \"*\") return 0, $lftuc.isTag;\n return (elem)=>(0, $lftuc.isTag)(elem) && elem.name === name;\n },\n tag_type (type) {\n if (typeof type === \"function\") return (elem)=>type(elem.type);\n return (elem)=>elem.type === type;\n },\n tag_contains (data) {\n if (typeof data === \"function\") return (elem)=>(0, $lftuc.isText)(elem) && data(elem.data);\n return (elem)=>(0, $lftuc.isText)(elem) && elem.data === data;\n }\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */ function $5837fd230ec46d88$var$getAttribCheck(attrib, value) {\n if (typeof value === \"function\") return (elem)=>(0, $lftuc.isTag)(elem) && value(elem.attribs[attrib]);\n return (elem)=>(0, $lftuc.isTag)(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */ function $5837fd230ec46d88$var$combineFuncs(a, b) {\n return (elem)=>a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */ function $5837fd230ec46d88$var$compileTest(options) {\n const funcs = Object.keys(options).map((key)=>{\n const value = options[key];\n return Object.prototype.hasOwnProperty.call($5837fd230ec46d88$var$Checks, key) ? $5837fd230ec46d88$var$Checks[key](value) : $5837fd230ec46d88$var$getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce($5837fd230ec46d88$var$combineFuncs);\n}\nfunction $5837fd230ec46d88$export$7b31db6b5a0b2f32(options, node) {\n const test = $5837fd230ec46d88$var$compileTest(options);\n return test ? test(node) : true;\n}\nfunction $5837fd230ec46d88$export$73eac51a39d6b0eb(options, nodes, recurse, limit = Infinity) {\n const test = $5837fd230ec46d88$var$compileTest(options);\n return test ? (0, $jAAIj.filter)(test, nodes, recurse, limit) : [];\n}\nfunction $5837fd230ec46d88$export$83595b84fc78b9b4(id, nodes, recurse = true) {\n if (!Array.isArray(nodes)) nodes = [\n nodes\n ];\n return (0, $jAAIj.findOne)($5837fd230ec46d88$var$getAttribCheck(\"id\", id), nodes, recurse);\n}\nfunction $5837fd230ec46d88$export$af941c3c7c3b40f5(tagName, nodes, recurse = true, limit = Infinity) {\n return (0, $jAAIj.filter)($5837fd230ec46d88$var$Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\nfunction $5837fd230ec46d88$export$f5d981e30be5545b(type, nodes, recurse = true, limit = Infinity) {\n return (0, $jAAIj.filter)($5837fd230ec46d88$var$Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n\n});\n\nparcelRegister(\"dIjgl\", function(module, exports) {\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\nfunction $9fbe5392cb849ded$export$171dc294232ebeef(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */ while(--idx >= 0){\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */ if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for(let ancestor = node.parent; ancestor; ancestor = ancestor.parent)if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n return nodes;\n}\nvar $9fbe5392cb849ded$export$406a59d989e8005a;\n(function(DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})($9fbe5392cb849ded$export$406a59d989e8005a || ($9fbe5392cb849ded$export$406a59d989e8005a = {}));\nfunction $9fbe5392cb849ded$export$17303b8fea718ecc(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) return 0;\n let current = (0, $lftuc.hasChildren)(nodeA) ? nodeA : nodeA.parent;\n while(current){\n aParents.unshift(current);\n current = current.parent;\n }\n current = (0, $lftuc.hasChildren)(nodeB) ? nodeB : nodeB.parent;\n while(current){\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while(idx < maxIdx && aParents[idx] === bParents[idx])idx++;\n if (idx === 0) return $9fbe5392cb849ded$export$406a59d989e8005a.DISCONNECTED;\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) return $9fbe5392cb849ded$export$406a59d989e8005a.FOLLOWING | $9fbe5392cb849ded$export$406a59d989e8005a.CONTAINED_BY;\n return $9fbe5392cb849ded$export$406a59d989e8005a.FOLLOWING;\n }\n if (sharedParent === nodeA) return $9fbe5392cb849ded$export$406a59d989e8005a.PRECEDING | $9fbe5392cb849ded$export$406a59d989e8005a.CONTAINS;\n return $9fbe5392cb849ded$export$406a59d989e8005a.PRECEDING;\n}\nfunction $9fbe5392cb849ded$export$1c267319665a7e7e(nodes) {\n nodes = nodes.filter((node, i, arr)=>!arr.includes(node, i + 1));\n nodes.sort((a, b)=>{\n const relative = $9fbe5392cb849ded$export$17303b8fea718ecc(a, b);\n if (relative & $9fbe5392cb849ded$export$406a59d989e8005a.PRECEDING) return -1;\n else if (relative & $9fbe5392cb849ded$export$406a59d989e8005a.FOLLOWING) return 1;\n return 0;\n });\n return nodes;\n}\n\n});\n\nparcelRegister(\"9YZre\", function(module, exports) {\n\n$parcel$export(module.exports, \"getFeed\", () => $74495ffac5d924b7$export$ad32138c9e09ad4);\n\nvar $1LvIR = parcelRequire(\"1LvIR\");\n\nvar $7zAkY = parcelRequire(\"7zAkY\");\nfunction $74495ffac5d924b7$export$ad32138c9e09ad4(doc) {\n const feedRoot = $74495ffac5d924b7$var$getOneElement($74495ffac5d924b7$var$isValidFeed, doc);\n return !feedRoot ? null : feedRoot.name === \"feed\" ? $74495ffac5d924b7$var$getAtomFeed(feedRoot) : $74495ffac5d924b7$var$getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */ function $74495ffac5d924b7$var$getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: (0, $7zAkY.getElementsByTagName)(\"entry\", childs).map((item)=>{\n var _a;\n const { children: children } = item;\n const entry = {\n media: $74495ffac5d924b7$var$getMediaElements(children)\n };\n $74495ffac5d924b7$var$addConditionally(entry, \"id\", \"id\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = $74495ffac5d924b7$var$getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) entry.link = href;\n const description = $74495ffac5d924b7$var$fetch(\"summary\", children) || $74495ffac5d924b7$var$fetch(\"content\", children);\n if (description) entry.description = description;\n const pubDate = $74495ffac5d924b7$var$fetch(\"updated\", children);\n if (pubDate) entry.pubDate = new Date(pubDate);\n return entry;\n })\n };\n $74495ffac5d924b7$var$addConditionally(feed, \"id\", \"id\", childs);\n $74495ffac5d924b7$var$addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = $74495ffac5d924b7$var$getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) feed.link = href;\n $74495ffac5d924b7$var$addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = $74495ffac5d924b7$var$fetch(\"updated\", childs);\n if (updated) feed.updated = new Date(updated);\n $74495ffac5d924b7$var$addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */ function $74495ffac5d924b7$var$getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = $74495ffac5d924b7$var$getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: (0, $7zAkY.getElementsByTagName)(\"item\", feedRoot.children).map((item)=>{\n const { children: children } = item;\n const entry = {\n media: $74495ffac5d924b7$var$getMediaElements(children)\n };\n $74495ffac5d924b7$var$addConditionally(entry, \"id\", \"guid\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"title\", \"title\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"link\", \"link\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"description\", \"description\", children);\n const pubDate = $74495ffac5d924b7$var$fetch(\"pubDate\", children) || $74495ffac5d924b7$var$fetch(\"dc:date\", children);\n if (pubDate) entry.pubDate = new Date(pubDate);\n return entry;\n })\n };\n $74495ffac5d924b7$var$addConditionally(feed, \"title\", \"title\", childs);\n $74495ffac5d924b7$var$addConditionally(feed, \"link\", \"link\", childs);\n $74495ffac5d924b7$var$addConditionally(feed, \"description\", \"description\", childs);\n const updated = $74495ffac5d924b7$var$fetch(\"lastBuildDate\", childs);\n if (updated) feed.updated = new Date(updated);\n $74495ffac5d924b7$var$addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst $74495ffac5d924b7$var$MEDIA_KEYS_STRING = [\n \"url\",\n \"type\",\n \"lang\"\n];\nconst $74495ffac5d924b7$var$MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\"\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */ function $74495ffac5d924b7$var$getMediaElements(where) {\n return (0, $7zAkY.getElementsByTagName)(\"media:content\", where).map((elem)=>{\n const { attribs: attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"]\n };\n for (const attrib of $74495ffac5d924b7$var$MEDIA_KEYS_STRING)if (attribs[attrib]) media[attrib] = attribs[attrib];\n for (const attrib of $74495ffac5d924b7$var$MEDIA_KEYS_INT)if (attribs[attrib]) media[attrib] = parseInt(attribs[attrib], 10);\n if (attribs[\"expression\"]) media.expression = attribs[\"expression\"];\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */ function $74495ffac5d924b7$var$getOneElement(tagName, node) {\n return (0, $7zAkY.getElementsByTagName)(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */ function $74495ffac5d924b7$var$fetch(tagName, where, recurse = false) {\n return (0, $1LvIR.textContent)((0, $7zAkY.getElementsByTagName)(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */ function $74495ffac5d924b7$var$addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = $74495ffac5d924b7$var$fetch(tagName, where, recurse);\n if (val) obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */ function $74495ffac5d924b7$var$isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n\n});\n\n\n\nparcelRegister(\"4CCA2\", function(module, exports) {\n\"use strict\";\nvar $35d8a34091988186$var$isMergeableObject = function isMergeableObject(value) {\n return $35d8a34091988186$var$isNonNullObject(value) && !$35d8a34091988186$var$isSpecial(value);\n};\nfunction $35d8a34091988186$var$isNonNullObject(value) {\n return !!value && typeof value === \"object\";\n}\nfunction $35d8a34091988186$var$isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === \"[object RegExp]\" || stringValue === \"[object Date]\" || $35d8a34091988186$var$isReactElement(value);\n}\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar $35d8a34091988186$var$canUseSymbol = typeof Symbol === \"function\" && Symbol.for;\nvar $35d8a34091988186$var$REACT_ELEMENT_TYPE = $35d8a34091988186$var$canUseSymbol ? Symbol.for(\"react.element\") : 0xeac7;\nfunction $35d8a34091988186$var$isReactElement(value) {\n return value.$$typeof === $35d8a34091988186$var$REACT_ELEMENT_TYPE;\n}\nfunction $35d8a34091988186$var$emptyTarget(val) {\n return Array.isArray(val) ? [] : {};\n}\nfunction $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? $35d8a34091988186$var$deepmerge($35d8a34091988186$var$emptyTarget(value), value, options) : value;\n}\nfunction $35d8a34091988186$var$defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function(element) {\n return $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(element, options);\n });\n}\nfunction $35d8a34091988186$var$getMergeFunction(key, options) {\n if (!options.customMerge) return $35d8a34091988186$var$deepmerge;\n var customMerge = options.customMerge(key);\n return typeof customMerge === \"function\" ? customMerge : $35d8a34091988186$var$deepmerge;\n}\nfunction $35d8a34091988186$var$getEnumerableOwnPropertySymbols(target) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n return Object.propertyIsEnumerable.call(target, symbol);\n }) : [];\n}\nfunction $35d8a34091988186$var$getKeys(target) {\n return Object.keys(target).concat($35d8a34091988186$var$getEnumerableOwnPropertySymbols(target));\n}\nfunction $35d8a34091988186$var$propertyIsOnObject(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n}\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction $35d8a34091988186$var$propertyIsUnsafe(target, key) {\n return $35d8a34091988186$var$propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key) // and also unsafe if they're nonenumerable.\n );\n}\nfunction $35d8a34091988186$var$mergeObject(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) $35d8a34091988186$var$getKeys(target).forEach(function(key) {\n destination[key] = $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(target[key], options);\n });\n $35d8a34091988186$var$getKeys(source).forEach(function(key) {\n if ($35d8a34091988186$var$propertyIsUnsafe(target, key)) return;\n if ($35d8a34091988186$var$propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) destination[key] = $35d8a34091988186$var$getMergeFunction(key, options)(target[key], source[key], options);\n else destination[key] = $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(source[key], options);\n });\n return destination;\n}\nfunction $35d8a34091988186$var$deepmerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || $35d8a34091988186$var$defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || $35d8a34091988186$var$isMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = $35d8a34091988186$var$cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) return $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(source, options);\n else if (sourceIsArray) return options.arrayMerge(target, source, options);\n else return $35d8a34091988186$var$mergeObject(target, source, options);\n}\n$35d8a34091988186$var$deepmerge.all = function deepmergeAll(array, options) {\n if (!Array.isArray(array)) throw new Error(\"first argument should be an array\");\n return array.reduce(function(prev, next) {\n return $35d8a34091988186$var$deepmerge(prev, next, options);\n }, {});\n};\nvar $35d8a34091988186$var$deepmerge_1 = $35d8a34091988186$var$deepmerge;\nmodule.exports = $35d8a34091988186$var$deepmerge_1;\n\n});\n\n\n\n\n\nparcelRequire(\"742Ng\");\n})();\n//# sourceMappingURL=Search.js.map\n","import fuzzysort from 'fuzzysort';\nimport { IndexableFields, SearchTarget } from '../lib/types/Searchable';\n\nconst SEARCH_RESULTS_HIGHLIGHT_CLASS = 'highlight';\n\nenum SearchMode {\n NORMAL = 'normal',\n TITLE = 'title',\n CONTENT = 'content',\n // HEADING = 'heading',\n};\nconst SEARCH_PREFIX: Map = Object.freeze(\n new Map([\n ['!', SearchMode.TITLE],\n [':', SearchMode.CONTENT],\n // ['#', SearchMode.HEADING],\n ])\n);\nconst SEARCH_KEYS: Map = Object.freeze(\n new Map([\n [SearchMode.NORMAL, [IndexableFields.TITLE, IndexableFields.CONTENT]],\n [SearchMode.TITLE, [IndexableFields.TITLE]],\n [SearchMode.CONTENT, [IndexableFields.CONTENT]],\n // [SearchMode.HEADING, [IndexableFields.HEADING]],\n ])\n);\n\ntype CompiledSearchResult = {\n path: string;\n score: number;\n title: string;\n highlightedTitleChunks: string[];\n highlightedContentChunks: string[];\n};\n\nexport type SearchResponse = {\n searchMode: SearchMode;\n results: CompiledSearchResult[];\n usedCache: boolean;\n aborted: false;\n} | {\n aborted: true;\n};\n\nconst searchResultsCache: Map = new Map();\nasync function doSearch(query: string, searchTargets: SearchTarget[]): Promise {\n query = query.trim();\n const cacheResult = searchResultsCache.get(query);\n const searchMode = SEARCH_PREFIX.get(query[0]) ?? SearchMode.NORMAL;\n if (searchMode !== SearchMode.NORMAL) { query = query.slice(1).trim(); }\n return query === ''\n ? { aborted: true }\n : {\n aborted: false,\n searchMode: searchMode,\n results: cacheResult\n ?? await (async () => {\n const compiledResults: CompiledSearchResult[] = await compileSearchResults(searchMode, query, searchTargets);\n searchResultsCache.set(query, compiledResults);\n return compiledResults;\n })(),\n usedCache: cacheResult !== undefined\n };\n}\n\nasync function compileSearchResults(searchMode: SearchMode, query: string, searchTargets: SearchTarget[]): Promise {\n const compiledResults: CompiledSearchResult[] = [];\n\n //! PERFORMANCE\n const fuzzysortStartTime = performance.now();\n //! -----------\n const results = fuzzysort.go(query, searchTargets, {\n keys: SEARCH_KEYS.get(searchMode)\n ?? (() => { throw new Error(`Search keys not found for search mode ${searchMode}`); })(),\n });\n //! PERFORMANCE\n const fuzzysortEndTime = performance.now();\n //! -----------\n\n //! PERFORMANCE\n const compilationStartTime = performance.now();\n //! -----------\n results.forEach(result => {\n console.log(result);\n const { titleResult, contentResult } = (() => {\n switch (searchMode) {\n case SearchMode.NORMAL:\n return { titleResult: result[0], contentResult: result[1] };\n case SearchMode.TITLE:\n return { titleResult: result[0], contentResult: undefined };\n case SearchMode.CONTENT:\n return { titleResult: undefined, contentResult: result[0] };\n default:\n throw new Error(`Search mode ${searchMode} not implemented`);\n }\n })();\n compiledResults.push({\n path: result.obj.path,\n score: result.score,\n title: result.obj.title.target,\n highlightedTitleChunks:\n titleResult !== undefined\n ? getHighlighted(query, titleResult)\n : [result.obj.title.target],\n highlightedContentChunks:\n contentResult !== undefined\n ? getHighlighted(query, contentResult)\n : [getAbbreviated(result.obj.content.target)],\n });\n });\n //! PERFORMANCE\n const compilationEndTime = performance.now();\n console.log('Fuzzysort took', fuzzysortEndTime - fuzzysortStartTime, 'ms');\n console.log('Compilation took', compilationEndTime - compilationStartTime, 'ms');\n //! -----------\n return compiledResults;\n //\n function getHighlighted(query: string, result: Fuzzysort.Result): string[] {\n const OPEN_TAG = ``;\n const CLOSE_TAG = ' ';\n\n // preliminary highlight using fuzzysort highlight function\n // this only cares about the first match and ignores the rest\n const preHighlightedTokens = result.highlight((highlightText: string) => `${OPEN_TAG}${highlightText}${CLOSE_TAG}`);\n if (preHighlightedTokens.length === 0) { return []; }\n\n // highlight the rest, atomise them, and push them into the same array\n const TAGGED_REGEX = new RegExp(String.raw`^${OPEN_TAG}.*${CLOSE_TAG}$`, 'g');\n const comprehensiveTokens: string[] = getComprehensiveTokens(preHighlightedTokens);\n const [atomicTokens, tagTokenIndices]: [string[], number[]] = atomiseTokens(comprehensiveTokens);\n\n // condense the tokens\n const condensedTokens: string[] = condenseTokens(atomicTokens, tagTokenIndices);\n\n return condensedTokens;\n //\n function getComprehensiveTokens(inputTokens: string[]): string[] {\n const compTokens: string[] = [];\n inputTokens.forEach(token => {\n if (token.match(TAGGED_REGEX)) {\n // is tag\n compTokens.push(token);\n } else {\n // is sentences\n const taggedSentences = highlightMore(token);\n const tokenisedHighlightedSentences = tokeniseTaggedSentences(taggedSentences);\n compTokens.push(...tokenisedHighlightedSentences);\n }\n });\n return compTokens;\n //\n function highlightMore(text: string): string {\n const queries = query.split(' ')\n .filter(word => word.length > 0)\n .map(word => word.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n const comprehensiveQueryRegex = new RegExp(\n String.raw`(${queries.join('|')})`,\n 'gi'\n );\n return text.replace(comprehensiveQueryRegex, `${OPEN_TAG}$1${CLOSE_TAG}`);\n }\n function tokeniseTaggedSentences(taggedSentences: string): string[] {\n const tagSplitRegex = new RegExp(String.raw`(?=${OPEN_TAG})|(?<=${CLOSE_TAG})`, 'g');\n return taggedSentences.split(tagSplitRegex);\n }\n }\n function atomiseTokens(inputTokens: string[]): [string[], number[]] {\n const tokens: string[] = [];\n const tokenIndices: number[] = [];\n inputTokens.forEach(token => {\n if (token.match(TAGGED_REGEX)) {\n // is tag\n tokenIndices.push(tokens.length);\n tokens.push(token);\n } else {\n // is sentences\n tokens.push(...tokeniseSentences(token));\n }\n });\n return [tokens, tokenIndices];\n //\n function tokeniseSentences(sentences: string): string[] {\n const tokens = sentences.split(/(?<=\\n|\\.\\s|\\?\\s|!\\s)/g).filter(sentence => sentence.length > 0);\n const paddedTokens = replaceNewlinesWithEmptyElements(tokens);\n return paddedTokens;\n //\n function replaceNewlinesWithEmptyElements(tokens: string[]): string[] {\n for (let i = 0; i < tokens.length; i++) {\n const splitTokens = tokens[i].split('\\n');\n if (splitTokens.length > 1) {\n const withEmptyElements: string[] = interweaveEmptyElements(splitTokens);\n tokens.splice(i, 1, ...withEmptyElements);\n i += withEmptyElements.length - 1;\n }\n }\n return tokens;\n }\n function interweaveEmptyElements(splitTokens: string[]) {\n const interweaved: string[] = [];\n for (let j = 0; j < splitTokens.length; j++) {\n interweaved.push(splitTokens[j]);\n if (j < splitTokens.length - 1) { interweaved.push(''); }\n }\n return interweaved;\n }\n }\n }\n function condenseTokens(inputTokens: string[], tagIndices: number[]): string[] {\n const condensedTokens: string[] = [];\n let condensedTokenIndex = 0;\n while (condensedTokenIndex < inputTokens.length) {\n let currentCondensedToken = '';\n let position: PositionBooleans;\n while (isTruthy(position = tokenIsTagOrAdjacentToTag(condensedTokenIndex))) {\n const token = inputTokens[condensedTokenIndex];\n if (token === undefined) { break; }\n condensedTokenIndex++;\n //\n currentCondensedToken += token;\n if (!position.isBefore && position.isAfter) { break; }\n }\n if (currentCondensedToken.length > 0) {\n condensedTokens.push(currentCondensedToken.trim());\n } else {\n condensedTokenIndex++;\n }\n }\n return condensedTokens;\n //\n type PositionBooleans = { isBefore: boolean, isTag: boolean, isAfter: boolean };\n function tokenIsTagOrAdjacentToTag(index: number): PositionBooleans {\n return {\n isBefore: tagIndices.includes(index + 1),\n isTag: tagIndices.includes(index),\n isAfter: tagIndices.includes(index - 1),\n };\n }\n function isTruthy(position: PositionBooleans): boolean {\n return position.isBefore || position.isTag || position.isAfter;\n }\n }\n }\n function getAbbreviated(text: string): string {\n const MAX_LENGTH = 200;\n return text.length > MAX_LENGTH\n ? text.slice(0, MAX_LENGTH) + '...'\n : text;\n }\n}\n\nexport default class Search {\n static doSearch = doSearch;\n}","// https://github.com/farzher/fuzzysort v3.0.2\r\n\r\n// UMD (Universal Module Definition) for fuzzysort\r\n;((root, UMD) => {\r\n if(typeof define === 'function' && define.amd) define([], UMD)\r\n else if(typeof module === 'object' && module.exports) module.exports = UMD()\r\n else root['fuzzysort'] = UMD()\r\n})(this, _ => {\r\n 'use strict'\r\n\r\n var single = (search, target) => {\r\n if(!search || !target) return NULL\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n var searchBitflags = preparedSearch.bitflags\r\n if((searchBitflags & target._bitflags) !== searchBitflags) return NULL\r\n\r\n return algorithm(preparedSearch, target)\r\n }\r\n\r\n var go = (search, targets, options) => {\r\n if(!search) return options?.all ? all(targets, options) : noResults\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n var searchBitflags = preparedSearch.bitflags\r\n var containsSpace = preparedSearch.containsSpace\r\n\r\n var threshold = denormalizeScore( options?.threshold || 0 )\r\n var limit = options?.limit || INFINITY\r\n\r\n var resultsLen = 0; var limitedCount = 0\r\n var targetsLen = targets.length\r\n\r\n function push_result(result) {\r\n if(resultsLen < limit) { q.add(result); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(result._score > q.peek()._score) q.replaceTop(result)\r\n }\r\n }\r\n\r\n // This code is copy/pasted 3 times for performance reasons [options.key, options.keys, no keys]\r\n\r\n // options.key\r\n if(options?.key) {\r\n var key = options.key\r\n for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n var target = getValue(obj, key)\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n result.obj = obj\r\n push_result(result)\r\n }\r\n\r\n // options.keys\r\n } else if(options?.keys) {\r\n var keys = options.keys\r\n var keysLen = keys.length\r\n\r\n outer: for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n\r\n { // early out based on bitflags\r\n var keysBitflags = 0\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n var key = keys[keyI]\r\n var target = getValue(obj, key)\r\n if(!target) { tmpTargets[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n tmpTargets[keyI] = target\r\n\r\n keysBitflags |= target._bitflags\r\n }\r\n\r\n if((searchBitflags & keysBitflags) !== searchBitflags) continue\r\n }\r\n\r\n if(containsSpace) for(let i=0; i -1000) {\r\n if(keysSpacesBestScores[i] > NEGATIVE_INFINITY) {\r\n var tmp = (keysSpacesBestScores[i] + allowPartialMatchScores[i]) / 4/*bonus score for having multiple matches*/\r\n if(tmp > keysSpacesBestScores[i]) keysSpacesBestScores[i] = tmp\r\n }\r\n }\r\n if(allowPartialMatchScores[i] > keysSpacesBestScores[i]) keysSpacesBestScores[i] = allowPartialMatchScores[i]\r\n }\r\n }\r\n\r\n if(containsSpace) {\r\n for(let i=0; i -1000) {\r\n if(score > NEGATIVE_INFINITY) {\r\n var tmp = (score + result._score) / 4/*bonus score for having multiple matches*/\r\n if(tmp > score) score = tmp\r\n }\r\n }\r\n if(result._score > score) score = result._score\r\n }\r\n }\r\n\r\n objResults.obj = obj\r\n objResults._score = score\r\n if(options?.scoreFn) {\r\n score = options.scoreFn(objResults)\r\n if(!score) continue\r\n score = denormalizeScore(score)\r\n objResults._score = score\r\n }\r\n\r\n if(score < threshold) continue\r\n push_result(objResults)\r\n }\r\n\r\n // no keys\r\n } else {\r\n for(var i = 0; i < targetsLen; ++i) { var target = targets[i]\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n push_result(result)\r\n }\r\n }\r\n\r\n if(resultsLen === 0) return noResults\r\n var results = new Array(resultsLen)\r\n for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()\r\n results.total = resultsLen + limitedCount\r\n return results\r\n }\r\n\r\n\r\n // this is written as 1 function instead of 2 for minification. perf seems fine ...\r\n // except when minified. the perf is very slow\r\n var highlight = (result, open='', close=' ') => {\r\n var callback = typeof open === 'function' ? open : undefined\r\n\r\n var target = result.target\r\n var targetLen = target.length\r\n var indexes = result.indexes\r\n var highlighted = ''\r\n var matchI = 0\r\n var indexesI = 0\r\n var opened = false\r\n var parts = []\r\n\r\n for(var i = 0; i < targetLen; ++i) { var char = target[i]\r\n if(indexes[indexesI] === i) {\r\n ++indexesI\r\n if(!opened) { opened = true\r\n if(callback) {\r\n parts.push(highlighted); highlighted = ''\r\n } else {\r\n highlighted += open\r\n }\r\n }\r\n\r\n if(indexesI === indexes.length) {\r\n if(callback) {\r\n highlighted += char\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n parts.push(target.substr(i+1))\r\n } else {\r\n highlighted += char + close + target.substr(i+1)\r\n }\r\n break\r\n }\r\n } else {\r\n if(opened) { opened = false\r\n if(callback) {\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n } else {\r\n highlighted += close\r\n }\r\n }\r\n }\r\n highlighted += char\r\n }\r\n\r\n return callback ? parts : highlighted\r\n }\r\n\r\n\r\n var prepare = (target) => {\r\n if(typeof target === 'number') target = ''+target\r\n else if(typeof target !== 'string') target = ''\r\n var info = prepareLowerInfo(target)\r\n return new_result(target, {_targetLower:info._lower, _targetLowerCodes:info.lowerCodes, _bitflags:info.bitflags})\r\n }\r\n\r\n var cleanup = () => { preparedCache.clear(); preparedSearchCache.clear() }\r\n\r\n\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n\r\n\r\n class Result {\r\n get ['indexes']() { return this._indexes.slice(0, this._indexes.len).sort((a,b)=>a-b) }\r\n set ['indexes'](indexes) { return this._indexes = indexes }\r\n ['highlight'](open, close) { return highlight(this, open, close) }\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n class KeysResult extends Array {\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n var new_result = (target, options) => {\r\n const result = new Result()\r\n result['target'] = target\r\n result['obj'] = options.obj ?? NULL\r\n result._score = options._score ?? NEGATIVE_INFINITY\r\n result._indexes = options._indexes ?? []\r\n result._targetLower = options._targetLower ?? ''\r\n result._targetLowerCodes = options._targetLowerCodes ?? NULL\r\n result._nextBeginningIndexes = options._nextBeginningIndexes ?? NULL\r\n result._bitflags = options._bitflags ?? 0\r\n return result\r\n }\r\n\r\n\r\n var normalizeScore = score => {\r\n if(score === NEGATIVE_INFINITY) return 0\r\n if(score > 1) return score\r\n return Math.E ** ( ((-score + 1)**.04307 - 1) * -2)\r\n }\r\n var denormalizeScore = normalizedScore => {\r\n if(normalizedScore === 0) return NEGATIVE_INFINITY\r\n if(normalizedScore > 1) return normalizedScore\r\n return 1 - Math.pow((Math.log(normalizedScore) / -2 + 1), 1 / 0.04307)\r\n }\r\n\r\n\r\n var prepareSearch = (search) => {\r\n if(typeof search === 'number') search = ''+search\r\n else if(typeof search !== 'string') search = ''\r\n search = search.trim()\r\n var info = prepareLowerInfo(search)\r\n\r\n var spaceSearches = []\r\n if(info.containsSpace) {\r\n var searches = search.split(/\\s+/)\r\n searches = [...new Set(searches)] // distinct\r\n for(var i=0; i {\r\n if(target.length > 999) return prepare(target) // don't cache huge targets\r\n var targetPrepared = preparedCache.get(target)\r\n if(targetPrepared !== undefined) return targetPrepared\r\n targetPrepared = prepare(target)\r\n preparedCache.set(target, targetPrepared)\r\n return targetPrepared\r\n }\r\n var getPreparedSearch = (search) => {\r\n if(search.length > 999) return prepareSearch(search) // don't cache huge searches\r\n var searchPrepared = preparedSearchCache.get(search)\r\n if(searchPrepared !== undefined) return searchPrepared\r\n searchPrepared = prepareSearch(search)\r\n preparedSearchCache.set(search, searchPrepared)\r\n return searchPrepared\r\n }\r\n\r\n\r\n var all = (targets, options) => {\r\n var results = []; results.total = targets.length // this total can be wrong if some targets are skipped\r\n\r\n var limit = options?.limit || INFINITY\r\n\r\n if(options?.key) {\r\n for(var i=0;i= limit) return results\r\n }\r\n } else if(options?.keys) {\r\n for(var i=0;i= 0; --keyI) {\r\n var target = getValue(obj, options.keys[keyI])\r\n if(!target) { objResults[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n target._score = NEGATIVE_INFINITY\r\n target._indexes.len = 0\r\n objResults[keyI] = target\r\n }\r\n objResults.obj = obj\r\n objResults._score = NEGATIVE_INFINITY\r\n results.push(objResults); if(results.length >= limit) return results\r\n }\r\n } else {\r\n for(var i=0;i= limit) return results\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n\r\n var algorithm = (preparedSearch, prepared, allowSpaces=false, allowPartialMatch=false) => {\r\n if(allowSpaces===false && preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared, allowPartialMatch)\r\n\r\n var searchLower = preparedSearch._lower\r\n var searchLowerCodes = preparedSearch.lowerCodes\r\n var searchLowerCode = searchLowerCodes[0]\r\n var targetLowerCodes = prepared._targetLowerCodes\r\n var searchLen = searchLowerCodes.length\r\n var targetLen = targetLowerCodes.length\r\n var searchI = 0 // where we at\r\n var targetI = 0 // where you at\r\n var matchesSimpleLen = 0\r\n\r\n // very basic fuzzy match; to remove non-matching targets ASAP!\r\n // walk through target. find sequential matches.\r\n // if all chars aren't found then exit\r\n for(;;) {\r\n var isMatch = searchLowerCode === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesSimple[matchesSimpleLen++] = targetI\r\n ++searchI; if(searchI === searchLen) break\r\n searchLowerCode = searchLowerCodes[searchI]\r\n }\r\n ++targetI; if(targetI >= targetLen) return NULL // Failed to find searchI\r\n }\r\n\r\n var searchI = 0\r\n var successStrict = false\r\n var matchesStrictLen = 0\r\n\r\n var nextBeginningIndexes = prepared._nextBeginningIndexes\r\n if(nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target)\r\n targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]\r\n\r\n // Our target string successfully matched all characters in sequence!\r\n // Let's try a more advanced and strict test to improve the score\r\n // only count it as a match if it's consecutive or a beginning character!\r\n var backtrackCount = 0\r\n if(targetI !== targetLen) for(;;) {\r\n if(targetI >= targetLen) {\r\n // We failed to find a good spot for this search char, go back to the previous search char and force it forward\r\n if(searchI <= 0) break // We failed to push chars forward for a better match\r\n\r\n ++backtrackCount; if(backtrackCount > 200) break // exponential backtracking is taking too long, just give up and return a bad match\r\n\r\n --searchI\r\n var lastMatch = matchesStrict[--matchesStrictLen]\r\n targetI = nextBeginningIndexes[lastMatch]\r\n\r\n } else {\r\n var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesStrict[matchesStrictLen++] = targetI\r\n ++searchI; if(searchI === searchLen) { successStrict = true; break }\r\n ++targetI\r\n } else {\r\n targetI = nextBeginningIndexes[targetI]\r\n }\r\n }\r\n }\r\n\r\n // check if it's a substring match\r\n var substringIndex = searchLen <= 1 ? -1 : prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow\r\n var isSubstring = !!~substringIndex\r\n var isSubstringBeginning = !isSubstring ? false : substringIndex===0 || prepared._nextBeginningIndexes[substringIndex-1] === substringIndex\r\n\r\n // if it's a substring match but not at a beginning index, let's try to find a substring starting at a beginning index for a better score\r\n if(isSubstring && !isSubstringBeginning) {\r\n for(var i=0; i {\r\n var score = 0\r\n\r\n var extraMatchGroupCount = 0\r\n for(var i = 1; i < searchLen; ++i) {\r\n if(matches[i] - matches[i-1] !== 1) {score -= matches[i]; ++extraMatchGroupCount}\r\n }\r\n var unmatchedDistance = matches[searchLen-1] - matches[0] - (searchLen-1)\r\n\r\n score -= (12+unmatchedDistance) * extraMatchGroupCount // penality for more groups\r\n\r\n if(matches[0] !== 0) score -= matches[0]*matches[0]*.2 // penality for not starting near the beginning\r\n\r\n if(!successStrict) {\r\n score *= 1000\r\n } else {\r\n // successStrict on a target with too many beginning indexes loses points for being a bad target\r\n var uniqueBeginningIndexes = 1\r\n for(var i = nextBeginningIndexes[0]; i < targetLen; i=nextBeginningIndexes[i]) ++uniqueBeginningIndexes\r\n\r\n if(uniqueBeginningIndexes > 24) score *= (uniqueBeginningIndexes-24)*10 // quite arbitrary numbers here ...\r\n }\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n if(isSubstring) score /= 1+searchLen*searchLen*1 // bonus for being a full substring\r\n if(isSubstringBeginning) score /= 1+searchLen*searchLen*1 // bonus for substring starting on a beginningIndex\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n return score\r\n }\r\n\r\n if(!successStrict) {\r\n if(isSubstring) for(var i=0; i {\r\n var seen_indexes = new Set()\r\n var score = 0\r\n var result = NULL\r\n\r\n var first_seen_index_last_search = 0\r\n var searches = preparedSearch.spaceSearches\r\n var searchesLen = searches.length\r\n var changeslen = 0\r\n\r\n // Return _nextBeginningIndexes back to its normal state\r\n var resetNextBeginningIndexes = () => {\r\n for(let i=changeslen-1; i>=0; i--) target._nextBeginningIndexes[nextBeginningIndexesChanges[i*2 + 0]] = nextBeginningIndexesChanges[i*2 + 1]\r\n }\r\n\r\n var hasAtLeast1Match = false\r\n for(var i=0; i=0; i--) {\r\n if(toReplace !== target._nextBeginningIndexes[i]) break\r\n target._nextBeginningIndexes[i] = newBeginningIndex\r\n nextBeginningIndexesChanges[changeslen*2 + 0] = i\r\n nextBeginningIndexesChanges[changeslen*2 + 1] = toReplace\r\n changeslen++\r\n }\r\n }\r\n }\r\n\r\n score += result._score / searchesLen\r\n allowPartialMatchScores[i] = result._score / searchesLen\r\n\r\n // dock points based on order otherwise \"c man\" returns Manifest.cpp instead of CheatManager.h\r\n if(result._indexes[0] < first_seen_index_last_search) {\r\n score -= (first_seen_index_last_search - result._indexes[0]) * 2\r\n }\r\n first_seen_index_last_search = result._indexes[0]\r\n\r\n for(var j=0; j score) {\r\n if(allowPartialMatch) {\r\n for(var i=0; i {\r\n var strLen = str.length\r\n var lower = str.toLowerCase()\r\n var lowerCodes = [] // new Array(strLen) sparse array is too slow\r\n var bitflags = 0\r\n var containsSpace = false // space isn't stored in bitflags because of how searching with a space works\r\n\r\n for(var i = 0; i < strLen; ++i) {\r\n var lowerCode = lowerCodes[i] = lower.charCodeAt(i)\r\n\r\n if(lowerCode === 32) {\r\n containsSpace = true\r\n continue // it's important that we don't set any bitflags for space\r\n }\r\n\r\n var bit = lowerCode>=97&&lowerCode<=122 ? lowerCode-97 // alphabet\r\n : lowerCode>=48&&lowerCode<=57 ? 26 // numbers\r\n // 3 bits available\r\n : lowerCode<=127 ? 30 // other ascii\r\n : 31 // other utf8\r\n bitflags |= 1< {\r\n var targetLen = target.length\r\n var beginningIndexes = []; var beginningIndexesLen = 0\r\n var wasUpper = false\r\n var wasAlphanum = false\r\n for(var i = 0; i < targetLen; ++i) {\r\n var targetCode = target.charCodeAt(i)\r\n var isUpper = targetCode>=65&&targetCode<=90\r\n var isAlphanum = isUpper || targetCode>=97&&targetCode<=122 || targetCode>=48&&targetCode<=57\r\n var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum\r\n wasUpper = isUpper\r\n wasAlphanum = isAlphanum\r\n if(isBeginning) beginningIndexes[beginningIndexesLen++] = i\r\n }\r\n return beginningIndexes\r\n }\r\n var prepareNextBeginningIndexes = (target) => {\r\n var targetLen = target.length\r\n var beginningIndexes = prepareBeginningIndexes(target)\r\n var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow\r\n var lastIsBeginning = beginningIndexes[0]\r\n var lastIsBeginningI = 0\r\n for(var i = 0; i < targetLen; ++i) {\r\n if(lastIsBeginning > i) {\r\n nextBeginningIndexes[i] = lastIsBeginning\r\n } else {\r\n lastIsBeginning = beginningIndexes[++lastIsBeginningI]\r\n nextBeginningIndexes[i] = lastIsBeginning===undefined ? targetLen : lastIsBeginning\r\n }\r\n }\r\n return nextBeginningIndexes\r\n }\r\n\r\n var preparedCache = new Map()\r\n var preparedSearchCache = new Map()\r\n\r\n // the theory behind these being globals is to reduce garbage collection by not making new arrays\r\n var matchesSimple = []; var matchesStrict = []\r\n var nextBeginningIndexesChanges = [] // allows straw berry to match strawberry well, by modifying the end of a substring to be considered a beginning index for the rest of the search\r\n var keysSpacesBestScores = []; var allowPartialMatchScores = []\r\n var tmpTargets = []; var tmpResults = []\r\n\r\n // prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]\r\n // prop = 'key1.key2' 10ms\r\n // prop = ['key1', 'key2'] 27ms\r\n // prop = obj => obj.tags.join() ??ms\r\n var getValue = (obj, prop) => {\r\n var tmp = obj[prop]; if(tmp !== undefined) return tmp\r\n if(typeof prop === 'function') return prop(obj) // this should run first. but that makes string props slower\r\n var segs = prop\r\n if(!Array.isArray(prop)) segs = prop.split('.')\r\n var len = segs.length\r\n var i = -1\r\n while (obj && (++i < len)) obj = obj[segs[i]]\r\n return obj\r\n }\r\n\r\n var isPrepared = (x) => { return typeof x === 'object' && typeof x._bitflags === 'number' }\r\n var INFINITY = Infinity; var NEGATIVE_INFINITY = -INFINITY\r\n var noResults = []; noResults.total = 0\r\n var NULL = null\r\n\r\n var noTarget = prepare('')\r\n\r\n // Hacked version of https://github.com/lemire/FastPriorityQueue.js\r\n var fastpriorityqueue=r=>{var e=[],o=0,a={},v=r=>{for(var a=0,v=e[a],c=1;c>1]=e[a],c=1+(a<<1)}for(var f=a-1>>1;a>0&&v._score>1)e[a]=e[f];e[a]=v};return a.add=(r=>{var a=o;e[o++]=r;for(var v=a-1>>1;a>0&&r._score>1)e[a]=e[v];e[a]=r}),a.poll=(r=>{if(0!==o){var a=e[0];return e[0]=e[--o],v(),a}}),a.peek=(r=>{if(0!==o)return e[0]}),a.replaceTop=(r=>{e[0]=r,v()}),a}\r\n var q = fastpriorityqueue() // reuse this\r\n\r\n // fuzzysort is written this way for minification. all names are mangeled unless quoted\r\n return {'single':single, 'go':go, 'prepare':prepare, 'cleanup':cleanup}\r\n}) // UMD\r\n","import { PageData } from './PageData';\nimport { htmlToText } from 'html-to-text';\nimport fuzzysort from 'fuzzysort';\n\ntype SearchIndex = SearchIndexEntry[];\ntype SearchIndexEntry = {\n path: string;\n title: string;\n content: string;\n}\nexport enum IndexableFields {\n TITLE = 'title',\n CONTENT = 'content',\n}\nexport type SearchTarget = { path: string, title: Fuzzysort.Prepared, content: Fuzzysort.Prepared };\n\nfunction sanitiseRawContent(htmlPollutedRawContent: string): string {\n let sanitisedRawContent = htmlToText(htmlPollutedRawContent,\n {\n wordwrap: false,\n selectors: [\n { selector: '*', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'img', format: 'skip' },\n { selector: 'hr', format: 'skip' },\n { selector: 'blockquote', format: 'block' },\n { selector: 'a', options: { ignoreHref: true } },\n ],\n }\n );\n // sanitisedRawContent = sanitisedRawContent.replace(/\\s/g, ' ');\n // sanitisedRawContent = sanitisedRawContent.replace(/\\s{2,}/g, '\\n');\n sanitisedRawContent = sanitisedRawContent.replace(/\\n{2,}/g, '\\n');\n return sanitisedRawContent;\n}\n\nexport default class Searchable {\n static index: SearchIndex = [];\n private static _targets: SearchTarget[];\n\n static get targets(): SearchTarget[] {\n const targets: SearchTarget[] = [];\n this.index.forEach(entry => targets.push({\n path: entry.path,\n title: fuzzysort.prepare(entry.title),\n content: fuzzysort.prepare(entry.content.replace('', '').replace(' ', ''))\n }));\n this._targets = targets;\n return this._targets;\n }\n\n static addEntry(path: string, title: string, pageData: PageData) {\n this.index.push({\n path, title, content: sanitiseRawContent(\n pageData.htmlPollutedRawContent\n ?? (() => { throw new Error(`htmlPollutedRawContent not found for ${path}!`) })()\n )\n });\n }\n}","import { hp2Builder } from '@selderee/plugin-htmlparser2';\nimport { parseDocument } from 'htmlparser2';\nimport { DecisionTree } from 'selderee';\nimport merge from 'deepmerge';\nimport { render } from 'dom-serializer';\n\n/**\n * Make a recursive function that will only run to a given depth\n * and switches to an alternative function at that depth. \\\n * No limitation if `n` is `undefined` (Just wraps `f` in that case).\n *\n * @param { number | undefined } n Allowed depth of recursion. `undefined` for no limitation.\n * @param { Function } f Function that accepts recursive callback as the first argument.\n * @param { Function } [g] Function to run instead, when maximum depth was reached. Do nothing by default.\n * @returns { Function }\n */\nfunction limitedDepthRecursive (n, f, g = () => undefined) {\n if (n === undefined) {\n const f1 = function (...args) { return f(f1, ...args); };\n return f1;\n }\n if (n >= 0) {\n return function (...args) { return f(limitedDepthRecursive(n - 1, f, g), ...args); };\n }\n return g;\n}\n\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from each side.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */\nfunction trimCharacter (str, char) {\n let start = 0;\n let end = str.length;\n while (start < end && str[start] === char) { ++start; }\n while (end > start && str[end - 1] === char) { --end; }\n return (start > 0 || end < str.length)\n ? str.substring(start, end)\n : str;\n}\n\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from the end only.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */\nfunction trimCharacterEnd (str, char) {\n let end = str.length;\n while (end > 0 && str[end - 1] === char) { --end; }\n return (end < str.length)\n ? str.substring(0, end)\n : str;\n}\n\n/**\n * Return a new string will all characters replaced with unicode escape sequences.\n * This extreme kind of escaping can used to be safely compose regular expressions.\n *\n * @param { string } str A string to escape.\n * @returns { string } A string of unicode escape sequences.\n */\nfunction unicodeEscape (str) {\n return str.replace(/[\\s\\S]/g, c => '\\\\u' + c.charCodeAt().toString(16).padStart(4, '0'));\n}\n\n/**\n * Deduplicate an array by a given key callback.\n * Item properties are merged recursively and with the preference for last defined values.\n * Of items with the same key, merged item takes the place of the last item,\n * others are omitted.\n *\n * @param { any[] } items An array to deduplicate.\n * @param { (x: any) => string } getKey Callback to get a value that distinguishes unique items.\n * @returns { any[] }\n */\nfunction mergeDuplicatesPreferLast (items, getKey) {\n const map = new Map();\n for (let i = items.length; i-- > 0;) {\n const item = items[i];\n const key = getKey(item);\n map.set(\n key,\n (map.has(key))\n ? merge(item, map.get(key), { arrayMerge: overwriteMerge$1 })\n : item\n );\n }\n return [...map.values()].reverse();\n}\n\nconst overwriteMerge$1 = (acc, src, options) => [...src];\n\n/**\n * Get a nested property from an object.\n *\n * @param { object } obj The object to query for the value.\n * @param { string[] } path The path to the property.\n * @returns { any }\n */\nfunction get (obj, path) {\n for (const key of path) {\n if (!obj) { return undefined; }\n obj = obj[key];\n }\n return obj;\n}\n\n/**\n * Convert a number into alphabetic sequence representation (Sequence without zeroes).\n *\n * For example: `a, ..., z, aa, ..., zz, aaa, ...`.\n *\n * @param { number } num Number to convert. Must be >= 1.\n * @param { string } [baseChar = 'a'] Character for 1 in the sequence.\n * @param { number } [base = 26] Number of characters in the sequence.\n * @returns { string }\n */\nfunction numberToLetterSequence (num, baseChar = 'a', base = 26) {\n const digits = [];\n do {\n num -= 1;\n digits.push(num % base);\n num = (num / base) >> 0; // quick `floor`\n } while (num > 0);\n const baseCode = baseChar.charCodeAt(0);\n return digits\n .reverse()\n .map(n => String.fromCharCode(baseCode + n))\n .join('');\n}\n\nconst I = ['I', 'X', 'C', 'M'];\nconst V = ['V', 'L', 'D'];\n\n/**\n * Convert a number to it's Roman representation. No large numbers extension.\n *\n * @param { number } num Number to convert. `0 < num <= 3999`.\n * @returns { string }\n */\nfunction numberToRoman (num) {\n return [...(num) + '']\n .map(n => +n)\n .reverse()\n .map((v, i) => ((v % 5 < 4)\n ? (v < 5 ? '' : V[i]) + I[i].repeat(v % 5)\n : I[i] + (v < 5 ? V[i] : I[i + 1])))\n .reverse()\n .join('');\n}\n\n/**\n * Helps to build text from words.\n */\nclass InlineTextBuilder {\n /**\n * Creates an instance of InlineTextBuilder.\n *\n * If `maxLineLength` is not provided then it is either `options.wordwrap` or unlimited.\n *\n * @param { Options } options HtmlToText options.\n * @param { number } [ maxLineLength ] This builder will try to wrap text to fit this line length.\n */\n constructor (options, maxLineLength = undefined) {\n /** @type { string[][] } */\n this.lines = [];\n /** @type { string[] } */\n this.nextLineWords = [];\n this.maxLineLength = maxLineLength || options.wordwrap || Number.MAX_VALUE;\n this.nextLineAvailableChars = this.maxLineLength;\n this.wrapCharacters = get(options, ['longWordSplit', 'wrapCharacters']) || [];\n this.forceWrapOnLimit = get(options, ['longWordSplit', 'forceWrapOnLimit']) || false;\n\n this.stashedSpace = false;\n this.wordBreakOpportunity = false;\n }\n\n /**\n * Add a new word.\n *\n * @param { string } word A word to add.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n pushWord (word, noWrap = false) {\n if (this.nextLineAvailableChars <= 0 && !noWrap) {\n this.startNewLine();\n }\n const isLineStart = this.nextLineWords.length === 0;\n const cost = word.length + (isLineStart ? 0 : 1);\n if ((cost <= this.nextLineAvailableChars) || noWrap) { // Fits into available budget\n\n this.nextLineWords.push(word);\n this.nextLineAvailableChars -= cost;\n\n } else { // Does not fit - try to split the word\n\n // The word is moved to a new line - prefer to wrap between words.\n const [first, ...rest] = this.splitLongWord(word);\n if (!isLineStart) { this.startNewLine(); }\n this.nextLineWords.push(first);\n this.nextLineAvailableChars -= first.length;\n for (const part of rest) {\n this.startNewLine();\n this.nextLineWords.push(part);\n this.nextLineAvailableChars -= part.length;\n }\n\n }\n }\n\n /**\n * Pop a word from the currently built line.\n * This doesn't affect completed lines.\n *\n * @returns { string }\n */\n popWord () {\n const lastWord = this.nextLineWords.pop();\n if (lastWord !== undefined) {\n const isLineStart = this.nextLineWords.length === 0;\n const cost = lastWord.length + (isLineStart ? 0 : 1);\n this.nextLineAvailableChars += cost;\n }\n return lastWord;\n }\n\n /**\n * Concat a word to the last word already in the builder.\n * Adds a new word in case there are no words yet in the last line.\n *\n * @param { string } word A word to be concatenated.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n concatWord (word, noWrap = false) {\n if (this.wordBreakOpportunity && word.length > this.nextLineAvailableChars) {\n this.pushWord(word, noWrap);\n this.wordBreakOpportunity = false;\n } else {\n const lastWord = this.popWord();\n this.pushWord((lastWord) ? lastWord.concat(word) : word, noWrap);\n }\n }\n\n /**\n * Add current line (and more empty lines if provided argument > 1) to the list of complete lines and start a new one.\n *\n * @param { number } n Number of line breaks that will be added to the resulting string.\n */\n startNewLine (n = 1) {\n this.lines.push(this.nextLineWords);\n if (n > 1) {\n this.lines.push(...Array.from({ length: n - 1 }, () => []));\n }\n this.nextLineWords = [];\n this.nextLineAvailableChars = this.maxLineLength;\n }\n\n /**\n * No words in this builder.\n *\n * @returns { boolean }\n */\n isEmpty () {\n return this.lines.length === 0\n && this.nextLineWords.length === 0;\n }\n\n clear () {\n this.lines.length = 0;\n this.nextLineWords.length = 0;\n this.nextLineAvailableChars = this.maxLineLength;\n }\n\n /**\n * Join all lines of words inside the InlineTextBuilder into a complete string.\n *\n * @returns { string }\n */\n toString () {\n return [...this.lines, this.nextLineWords]\n .map(words => words.join(' '))\n .join('\\n');\n }\n\n /**\n * Split a long word up to fit within the word wrap limit.\n * Use either a character to split looking back from the word wrap limit,\n * or truncate to the word wrap limit.\n *\n * @param { string } word Input word.\n * @returns { string[] } Parts of the word.\n */\n splitLongWord (word) {\n const parts = [];\n let idx = 0;\n while (word.length > this.maxLineLength) {\n\n const firstLine = word.substring(0, this.maxLineLength);\n const remainingChars = word.substring(this.maxLineLength);\n\n const splitIndex = firstLine.lastIndexOf(this.wrapCharacters[idx]);\n\n if (splitIndex > -1) { // Found a character to split on\n\n word = firstLine.substring(splitIndex + 1) + remainingChars;\n parts.push(firstLine.substring(0, splitIndex + 1));\n\n } else { // Not found a character to split on\n\n idx++;\n if (idx < this.wrapCharacters.length) { // There is next character to try\n\n word = firstLine + remainingChars;\n\n } else { // No more characters to try\n\n if (this.forceWrapOnLimit) {\n parts.push(firstLine);\n word = remainingChars;\n if (word.length > this.maxLineLength) {\n continue;\n }\n } else {\n word = firstLine + remainingChars;\n }\n break;\n\n }\n\n }\n\n }\n parts.push(word); // Add remaining part to array\n return parts;\n }\n}\n\n/* eslint-disable max-classes-per-file */\n\n\nclass StackItem {\n constructor (next = null) { this.next = next; }\n\n getRoot () { return (this.next) ? this.next : this; }\n}\n\nclass BlockStackItem extends StackItem {\n constructor (options, next = null, leadingLineBreaks = 1, maxLineLength = undefined) {\n super(next);\n this.leadingLineBreaks = leadingLineBreaks;\n this.inlineTextBuilder = new InlineTextBuilder(options, maxLineLength);\n this.rawText = '';\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass ListStackItem extends BlockStackItem {\n constructor (\n options,\n next = null,\n {\n interRowLineBreaks = 1,\n leadingLineBreaks = 2,\n maxLineLength = undefined,\n maxPrefixLength = 0,\n prefixAlign = 'left',\n } = {}\n ) {\n super(options, next, leadingLineBreaks, maxLineLength);\n this.maxPrefixLength = maxPrefixLength;\n this.prefixAlign = prefixAlign;\n this.interRowLineBreaks = interRowLineBreaks;\n }\n}\n\nclass ListItemStackItem extends BlockStackItem {\n constructor (\n options,\n next = null,\n {\n leadingLineBreaks = 1,\n maxLineLength = undefined,\n prefix = '',\n } = {}\n ) {\n super(options, next, leadingLineBreaks, maxLineLength);\n this.prefix = prefix;\n }\n}\n\nclass TableStackItem extends StackItem {\n constructor (next = null) {\n super(next);\n this.rows = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TableRowStackItem extends StackItem {\n constructor (next = null) {\n super(next);\n this.cells = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TableCellStackItem extends StackItem {\n constructor (options, next = null, maxColumnWidth = undefined) {\n super(next);\n this.inlineTextBuilder = new InlineTextBuilder(options, maxColumnWidth);\n this.rawText = '';\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TransformerStackItem extends StackItem {\n constructor (next = null, transform) {\n super(next);\n this.transform = transform;\n }\n}\n\nfunction charactersToCodes (str) {\n return [...str]\n .map(c => '\\\\u' + c.charCodeAt(0).toString(16).padStart(4, '0'))\n .join('');\n}\n\n/**\n * Helps to handle HTML whitespaces.\n *\n * @class WhitespaceProcessor\n */\nclass WhitespaceProcessor {\n\n /**\n * Creates an instance of WhitespaceProcessor.\n *\n * @param { Options } options HtmlToText options.\n * @memberof WhitespaceProcessor\n */\n constructor (options) {\n this.whitespaceChars = (options.preserveNewlines)\n ? options.whitespaceCharacters.replace(/\\n/g, '')\n : options.whitespaceCharacters;\n const whitespaceCodes = charactersToCodes(this.whitespaceChars);\n this.leadingWhitespaceRe = new RegExp(`^[${whitespaceCodes}]`);\n this.trailingWhitespaceRe = new RegExp(`[${whitespaceCodes}]$`);\n this.allWhitespaceOrEmptyRe = new RegExp(`^[${whitespaceCodes}]*$`);\n this.newlineOrNonWhitespaceRe = new RegExp(`(\\\\n|[^\\\\n${whitespaceCodes}])`, 'g');\n this.newlineOrNonNewlineStringRe = new RegExp(`(\\\\n|[^\\\\n]+)`, 'g');\n\n if (options.preserveNewlines) {\n\n const wordOrNewlineRe = new RegExp(`\\\\n|[^\\\\n${whitespaceCodes}]+`, 'gm');\n\n /**\n * Shrink whitespaces and wrap text, add to the builder.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { (str: string) => string } [ transform ] A transform to be applied to words.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n this.shrinkWrapAdd = function (text, inlineTextBuilder, transform = (str => str), noWrap = false) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordOrNewlineRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else if (previouslyStashedSpace || this.testLeadingWhitespace(text)) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n } else {\n inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n }\n while ((m = wordOrNewlineRe.exec(text)) !== null) {\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch) || (this.testTrailingWhitespace(text));\n // No need to stash a space in case last added item was a new line,\n // but that won't affect anything later anyway.\n };\n\n } else {\n\n const wordRe = new RegExp(`[^${whitespaceCodes}]+`, 'g');\n\n this.shrinkWrapAdd = function (text, inlineTextBuilder, transform = (str => str), noWrap = false) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordRe.exec(text);\n if (m) {\n anyMatch = true;\n if (previouslyStashedSpace || this.testLeadingWhitespace(text)) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n } else {\n inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n }\n while ((m = wordRe.exec(text)) !== null) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch) || this.testTrailingWhitespace(text);\n };\n\n }\n }\n\n /**\n * Add text with only minimal processing.\n * Everything between newlines considered a single word.\n * No whitespace is trimmed.\n * Not affected by preserveNewlines option - `\\n` always starts a new line.\n *\n * `noWrap` argument is `true` by default - this won't start a new line\n * even if there is not enough space left in the current line.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n addLiteral (text, inlineTextBuilder, noWrap = true) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = this.newlineOrNonNewlineStringRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else if (previouslyStashedSpace) {\n inlineTextBuilder.pushWord(m[0], noWrap);\n } else {\n inlineTextBuilder.concatWord(m[0], noWrap);\n }\n while ((m = this.newlineOrNonNewlineStringRe.exec(text)) !== null) {\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else {\n inlineTextBuilder.pushWord(m[0], noWrap);\n }\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch);\n }\n\n /**\n * Test whether the given text starts with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testLeadingWhitespace (text) {\n return this.leadingWhitespaceRe.test(text);\n }\n\n /**\n * Test whether the given text ends with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testTrailingWhitespace (text) {\n return this.trailingWhitespaceRe.test(text);\n }\n\n /**\n * Test whether the given text contains any non-whitespace characters.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testContainsWords (text) {\n return !this.allWhitespaceOrEmptyRe.test(text);\n }\n\n /**\n * Return the number of newlines if there are no words.\n *\n * If any word is found then return zero regardless of the actual number of newlines.\n *\n * @param { string } text Input string.\n * @returns { number }\n */\n countNewlinesNoWords (text) {\n this.newlineOrNonWhitespaceRe.lastIndex = 0;\n let counter = 0;\n let match;\n while ((match = this.newlineOrNonWhitespaceRe.exec(text)) !== null) {\n if (match[0] === '\\n') {\n counter++;\n } else {\n return 0;\n }\n }\n return counter;\n }\n\n}\n\n/**\n * Helps to build text from inline and block elements.\n *\n * @class BlockTextBuilder\n */\nclass BlockTextBuilder {\n\n /**\n * Creates an instance of BlockTextBuilder.\n *\n * @param { Options } options HtmlToText options.\n * @param { import('selderee').Picker } picker Selectors decision tree picker.\n * @param { any} [metadata] Optional metadata for HTML document, for use in formatters.\n */\n constructor (options, picker, metadata = undefined) {\n this.options = options;\n this.picker = picker;\n this.metadata = metadata;\n this.whitespaceProcessor = new WhitespaceProcessor(options);\n /** @type { StackItem } */\n this._stackItem = new BlockStackItem(options);\n /** @type { TransformerStackItem } */\n this._wordTransformer = undefined;\n }\n\n /**\n * Put a word-by-word transform function onto the transformations stack.\n *\n * Mainly used for uppercasing. Can be bypassed to add unformatted text such as URLs.\n *\n * Word transformations applied before wrapping.\n *\n * @param { (str: string) => string } wordTransform Word transformation function.\n */\n pushWordTransform (wordTransform) {\n this._wordTransformer = new TransformerStackItem(this._wordTransformer, wordTransform);\n }\n\n /**\n * Remove a function from the word transformations stack.\n *\n * @returns { (str: string) => string } A function that was removed.\n */\n popWordTransform () {\n if (!this._wordTransformer) { return undefined; }\n const transform = this._wordTransformer.transform;\n this._wordTransformer = this._wordTransformer.next;\n return transform;\n }\n\n /**\n * Ignore wordwrap option in followup inline additions and disable automatic wrapping.\n */\n startNoWrap () {\n this._stackItem.isNoWrap = true;\n }\n\n /**\n * Return automatic wrapping to behavior defined by options.\n */\n stopNoWrap () {\n this._stackItem.isNoWrap = false;\n }\n\n /** @returns { (str: string) => string } */\n _getCombinedWordTransformer () {\n const wt = (this._wordTransformer)\n ? ((str) => applyTransformer(str, this._wordTransformer))\n : undefined;\n const ce = this.options.encodeCharacters;\n return (wt)\n ? ((ce) ? (str) => ce(wt(str)) : wt)\n : ce;\n }\n\n _popStackItem () {\n const item = this._stackItem;\n this._stackItem = item.next;\n return item;\n }\n\n /**\n * Add a line break into currently built block.\n */\n addLineBreak () {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n if (this._stackItem.isPre) {\n this._stackItem.rawText += '\\n';\n } else {\n this._stackItem.inlineTextBuilder.startNewLine();\n }\n }\n\n /**\n * Allow to break line in case directly following text will not fit.\n */\n addWordBreakOpportunity () {\n if (\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n ) {\n this._stackItem.inlineTextBuilder.wordBreakOpportunity = true;\n }\n }\n\n /**\n * Add a node inline into the currently built block.\n *\n * @param { string } str\n * Text content of a node to add.\n *\n * @param { object } [param1]\n * Object holding the parameters of the operation.\n *\n * @param { boolean } [param1.noWordTransform]\n * Ignore word transformers if there are any.\n * Don't encode characters as well.\n * (Use this for things like URL addresses).\n */\n addInline (str, { noWordTransform = false } = {}) {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n\n if (\n str.length === 0 || // empty string\n (\n this._stackItem.stashedLineBreaks && // stashed linebreaks make whitespace irrelevant\n !this.whitespaceProcessor.testContainsWords(str) // no words to add\n )\n ) { return; }\n\n if (this.options.preserveNewlines) {\n const newlinesNumber = this.whitespaceProcessor.countNewlinesNoWords(str);\n if (newlinesNumber > 0) {\n this._stackItem.inlineTextBuilder.startNewLine(newlinesNumber);\n // keep stashedLineBreaks unchanged\n return;\n }\n }\n\n if (this._stackItem.stashedLineBreaks) {\n this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n }\n this.whitespaceProcessor.shrinkWrapAdd(\n str,\n this._stackItem.inlineTextBuilder,\n (noWordTransform) ? undefined : this._getCombinedWordTransformer(),\n this._stackItem.isNoWrap\n );\n this._stackItem.stashedLineBreaks = 0; // inline text doesn't introduce line breaks\n }\n\n /**\n * Add a string inline into the currently built block.\n *\n * Use this for markup elements that don't have to adhere\n * to text layout rules.\n *\n * @param { string } str Text to add.\n */\n addLiteral (str) {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n\n if (str.length === 0) { return; }\n\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n\n if (this._stackItem.stashedLineBreaks) {\n this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n }\n this.whitespaceProcessor.addLiteral(\n str,\n this._stackItem.inlineTextBuilder,\n this._stackItem.isNoWrap\n );\n this._stackItem.stashedLineBreaks = 0;\n }\n\n /**\n * Start building a new block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any preceding block.\n *\n * @param { number } [param0.reservedLineLength]\n * Reserve this number of characters on each line for block markup.\n *\n * @param { boolean } [param0.isPre]\n * Should HTML whitespace be preserved inside this block.\n */\n openBlock ({ leadingLineBreaks = 1, reservedLineLength = 0, isPre = false } = {}) {\n const maxLineLength = Math.max(20, this._stackItem.inlineTextBuilder.maxLineLength - reservedLineLength);\n this._stackItem = new BlockStackItem(\n this.options,\n this._stackItem,\n leadingLineBreaks,\n maxLineLength\n );\n if (isPre) { this._stackItem.isPre = true; }\n }\n\n /**\n * Finalize currently built block, add it's content to the parent block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any following block.\n *\n * @param { (str: string) => string } [param0.blockTransform]\n * A function to transform the block text before adding to the parent block.\n * This happens after word wrap and should be used in combination with reserved line length\n * in order to keep line lengths correct.\n * Used for whole block markup.\n */\n closeBlock ({ trailingLineBreaks = 1, blockTransform = undefined } = {}) {\n const block = this._popStackItem();\n const blockText = (blockTransform) ? blockTransform(getText(block)) : getText(block);\n addText(this._stackItem, blockText, block.leadingLineBreaks, Math.max(block.stashedLineBreaks, trailingLineBreaks));\n }\n\n /**\n * Start building a new list.\n *\n * @param { object } [param0]\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.maxPrefixLength]\n * Length of the longest list item prefix.\n * If not supplied or too small then list items won't be aligned properly.\n *\n * @param { 'left' | 'right' } [param0.prefixAlign]\n * Specify how prefixes of different lengths have to be aligned\n * within a column.\n *\n * @param { number } [param0.interRowLineBreaks]\n * Minimum number of line breaks between list items.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any preceding block.\n */\n openList ({ maxPrefixLength = 0, prefixAlign = 'left', interRowLineBreaks = 1, leadingLineBreaks = 2 } = {}) {\n this._stackItem = new ListStackItem(this.options, this._stackItem, {\n interRowLineBreaks: interRowLineBreaks,\n leadingLineBreaks: leadingLineBreaks,\n maxLineLength: this._stackItem.inlineTextBuilder.maxLineLength,\n maxPrefixLength: maxPrefixLength,\n prefixAlign: prefixAlign\n });\n }\n\n /**\n * Start building a new list item.\n *\n * @param {object} param0\n * Object holding the parameters of the list item.\n *\n * @param { string } [param0.prefix]\n * Prefix for this list item (item number, bullet point, etc).\n */\n openListItem ({ prefix = '' } = {}) {\n if (!(this._stackItem instanceof ListStackItem)) {\n throw new Error('Can\\'t add a list item to something that is not a list! Check the formatter.');\n }\n const list = this._stackItem;\n const prefixLength = Math.max(prefix.length, list.maxPrefixLength);\n const maxLineLength = Math.max(20, list.inlineTextBuilder.maxLineLength - prefixLength);\n this._stackItem = new ListItemStackItem(this.options, list, {\n prefix: prefix,\n maxLineLength: maxLineLength,\n leadingLineBreaks: list.interRowLineBreaks\n });\n }\n\n /**\n * Finalize currently built list item, add it's content to the parent list.\n */\n closeListItem () {\n const listItem = this._popStackItem();\n const list = listItem.next;\n\n const prefixLength = Math.max(listItem.prefix.length, list.maxPrefixLength);\n const spacing = '\\n' + ' '.repeat(prefixLength);\n const prefix = (list.prefixAlign === 'right')\n ? listItem.prefix.padStart(prefixLength)\n : listItem.prefix.padEnd(prefixLength);\n const text = prefix + getText(listItem).replace(/\\n/g, spacing);\n\n addText(\n list,\n text,\n listItem.leadingLineBreaks,\n Math.max(listItem.stashedLineBreaks, list.interRowLineBreaks)\n );\n }\n\n /**\n * Finalize currently built list, add it's content to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any following block.\n */\n closeList ({ trailingLineBreaks = 2 } = {}) {\n const list = this._popStackItem();\n const text = getText(list);\n if (text) {\n addText(this._stackItem, text, list.leadingLineBreaks, trailingLineBreaks);\n }\n }\n\n /**\n * Start building a table.\n */\n openTable () {\n this._stackItem = new TableStackItem(this._stackItem);\n }\n\n /**\n * Start building a table row.\n */\n openTableRow () {\n if (!(this._stackItem instanceof TableStackItem)) {\n throw new Error('Can\\'t add a table row to something that is not a table! Check the formatter.');\n }\n this._stackItem = new TableRowStackItem(this._stackItem);\n }\n\n /**\n * Start building a table cell.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.maxColumnWidth]\n * Wrap cell content to this width. Fall back to global wordwrap value if undefined.\n */\n openTableCell ({ maxColumnWidth = undefined } = {}) {\n if (!(this._stackItem instanceof TableRowStackItem)) {\n throw new Error('Can\\'t add a table cell to something that is not a table row! Check the formatter.');\n }\n this._stackItem = new TableCellStackItem(this.options, this._stackItem, maxColumnWidth);\n }\n\n /**\n * Finalize currently built table cell and add it to parent table row's cells.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.colspan] How many columns this cell should occupy.\n * @param { number } [param0.rowspan] How many rows this cell should occupy.\n */\n closeTableCell ({ colspan = 1, rowspan = 1 } = {}) {\n const cell = this._popStackItem();\n const text = trimCharacter(getText(cell), '\\n');\n cell.next.cells.push({ colspan: colspan, rowspan: rowspan, text: text });\n }\n\n /**\n * Finalize currently built table row and add it to parent table's rows.\n */\n closeTableRow () {\n const row = this._popStackItem();\n row.next.rows.push(row.cells);\n }\n\n /**\n * Finalize currently built table and add the rendered text to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the table.\n *\n * @param { TablePrinter } param0.tableToString\n * A function to convert a table of stringified cells into a complete table.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This table should have at least this number of line breaks to separate if from any preceding block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This table should have at least this number of line breaks to separate it from any following block.\n */\n closeTable ({ tableToString, leadingLineBreaks = 2, trailingLineBreaks = 2 }) {\n const table = this._popStackItem();\n const output = tableToString(table.rows);\n if (output) {\n addText(this._stackItem, output, leadingLineBreaks, trailingLineBreaks);\n }\n }\n\n /**\n * Return the rendered text content of this builder.\n *\n * @returns { string }\n */\n toString () {\n return getText(this._stackItem.getRoot());\n // There should only be the root item if everything is closed properly.\n }\n\n}\n\nfunction getText (stackItem) {\n if (!(\n stackItem instanceof BlockStackItem\n || stackItem instanceof ListItemStackItem\n || stackItem instanceof TableCellStackItem\n )) {\n throw new Error('Only blocks, list items and table cells can be requested for text contents.');\n }\n return (stackItem.inlineTextBuilder.isEmpty())\n ? stackItem.rawText\n : stackItem.rawText + stackItem.inlineTextBuilder.toString();\n}\n\nfunction addText (stackItem, text, leadingLineBreaks, trailingLineBreaks) {\n if (!(\n stackItem instanceof BlockStackItem\n || stackItem instanceof ListItemStackItem\n || stackItem instanceof TableCellStackItem\n )) {\n throw new Error('Only blocks, list items and table cells can contain text.');\n }\n const parentText = getText(stackItem);\n const lineBreaks = Math.max(stackItem.stashedLineBreaks, leadingLineBreaks);\n stackItem.inlineTextBuilder.clear();\n if (parentText) {\n stackItem.rawText = parentText + '\\n'.repeat(lineBreaks) + text;\n } else {\n stackItem.rawText = text;\n stackItem.leadingLineBreaks = lineBreaks;\n }\n stackItem.stashedLineBreaks = trailingLineBreaks;\n}\n\n/**\n * @param { string } str A string to transform.\n * @param { TransformerStackItem } transformer A transformer item (with possible continuation).\n * @returns { string }\n */\nfunction applyTransformer (str, transformer) {\n return ((transformer) ? applyTransformer(transformer.transform(str), transformer.next) : str);\n}\n\n/**\n * Compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options (defaults, formatters, user options merged, deduplicated).\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */\nfunction compile$1 (options = {}) {\n const selectorsWithoutFormat = options.selectors.filter(s => !s.format);\n if (selectorsWithoutFormat.length) {\n throw new Error(\n 'Following selectors have no specified format: ' +\n selectorsWithoutFormat.map(s => `\\`${s.selector}\\``).join(', ')\n );\n }\n const picker = new DecisionTree(\n options.selectors.map(s => [s.selector, s])\n ).build(hp2Builder);\n\n if (typeof options.encodeCharacters !== 'function') {\n options.encodeCharacters = makeReplacerFromDict(options.encodeCharacters);\n }\n\n const baseSelectorsPicker = new DecisionTree(\n options.baseElements.selectors.map((s, i) => [s, i + 1])\n ).build(hp2Builder);\n function findBaseElements (dom) {\n return findBases(dom, options, baseSelectorsPicker);\n }\n\n const limitedWalk = limitedDepthRecursive(\n options.limits.maxDepth,\n recursiveWalk,\n function (dom, builder) {\n builder.addInline(options.limits.ellipsis || '');\n }\n );\n\n return function (html, metadata = undefined) {\n return process(html, metadata, options, picker, findBaseElements, limitedWalk);\n };\n}\n\n\n/**\n * Convert given HTML according to preprocessed options.\n *\n * @param { string } html HTML content to convert.\n * @param { any } metadata Optional metadata for HTML document, for use in formatters.\n * @param { Options } options HtmlToText options (preprocessed).\n * @param { import('selderee').Picker } picker\n * Tag definition picker for DOM nodes processing.\n * @param { (dom: DomNode[]) => DomNode[] } findBaseElements\n * Function to extract elements from HTML DOM\n * that will only be present in the output text.\n * @param { RecursiveCallback } walk Recursive callback.\n * @returns { string }\n */\nfunction process (html, metadata, options, picker, findBaseElements, walk) {\n const maxInputLength = options.limits.maxInputLength;\n if (maxInputLength && html && html.length > maxInputLength) {\n console.warn(\n `Input length ${html.length} is above allowed limit of ${maxInputLength}. Truncating without ellipsis.`\n );\n html = html.substring(0, maxInputLength);\n }\n\n const document = parseDocument(html, { decodeEntities: options.decodeEntities });\n const bases = findBaseElements(document.children);\n const builder = new BlockTextBuilder(options, picker, metadata);\n walk(bases, builder);\n return builder.toString();\n}\n\n\nfunction findBases (dom, options, baseSelectorsPicker) {\n const results = [];\n\n function recursiveWalk (walk, /** @type { DomNode[] } */ dom) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n for (const elem of dom) {\n if (elem.type !== 'tag') {\n continue;\n }\n const pickedSelectorIndex = baseSelectorsPicker.pick1(elem);\n if (pickedSelectorIndex > 0) {\n results.push({ selectorIndex: pickedSelectorIndex, element: elem });\n } else if (elem.children) {\n walk(elem.children);\n }\n if (results.length >= options.limits.maxBaseElements) {\n return;\n }\n }\n }\n\n const limitedWalk = limitedDepthRecursive(\n options.limits.maxDepth,\n recursiveWalk\n );\n limitedWalk(dom);\n\n if (options.baseElements.orderBy !== 'occurrence') { // 'selectors'\n results.sort((a, b) => a.selectorIndex - b.selectorIndex);\n }\n return (options.baseElements.returnDomByDefault && results.length === 0)\n ? dom\n : results.map(x => x.element);\n}\n\n/**\n * Function to walk through DOM nodes and accumulate their string representations.\n *\n * @param { RecursiveCallback } walk Recursive callback.\n * @param { DomNode[] } [dom] Nodes array to process.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @private\n */\nfunction recursiveWalk (walk, dom, builder) {\n if (!dom) { return; }\n\n const options = builder.options;\n\n const tooManyChildNodes = dom.length > options.limits.maxChildNodes;\n if (tooManyChildNodes) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n dom.push({\n data: options.limits.ellipsis,\n type: 'text'\n });\n }\n\n for (const elem of dom) {\n switch (elem.type) {\n case 'text': {\n builder.addInline(elem.data);\n break;\n }\n case 'tag': {\n const tagDefinition = builder.picker.pick1(elem);\n const format = options.formatters[tagDefinition.format];\n format(elem, walk, builder, tagDefinition.options || {});\n break;\n }\n }\n }\n\n return;\n}\n\n/**\n * @param { Object } dict\n * A dictionary where keys are characters to replace\n * and values are replacement strings.\n *\n * First code point from dict keys is used.\n * Compound emojis with ZWJ are not supported (not until Node 16).\n *\n * @returns { ((str: string) => string) | undefined }\n */\nfunction makeReplacerFromDict (dict) {\n if (!dict || Object.keys(dict).length === 0) {\n return undefined;\n }\n /** @type { [string, string][] } */\n const entries = Object.entries(dict).filter(([, v]) => v !== false);\n const regex = new RegExp(\n entries\n .map(([c]) => `(${unicodeEscape([...c][0])})`)\n .join('|'),\n 'g'\n );\n const values = entries.map(([, v]) => v);\n const replacer = (m, ...cgs) => values[cgs.findIndex(cg => cg)];\n return (str) => str.replace(regex, replacer);\n}\n\n/**\n * Dummy formatter that discards the input and does nothing.\n *\n * @type { FormatCallback }\n */\nfunction formatSkip (elem, walk, builder, formatOptions) {\n /* do nothing */\n}\n\n/**\n * Insert the given string literal inline instead of a tag.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineString (elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.string || '');\n}\n\n/**\n * Insert a block with the given string literal instead of a tag.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockString (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.addLiteral(formatOptions.string || '');\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process an inline-level element.\n *\n * @type { FormatCallback }\n */\nfunction formatInline (elem, walk, builder, formatOptions) {\n walk(elem.children, builder);\n}\n\n/**\n * Process a block-level container.\n *\n * @type { FormatCallback }\n */\nfunction formatBlock$1 (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\nfunction renderOpenTag (elem) {\n const attrs = (elem.attribs && elem.attribs.length)\n ? ' ' + Object.entries(elem.attribs)\n .map(([k, v]) => ((v === '') ? k : `${k}=${v.replace(/\"/g, '"')}`))\n .join(' ')\n : '';\n return `<${elem.name}${attrs}>`;\n}\n\nfunction renderCloseTag (elem) {\n return `${elem.name}>`;\n}\n\n/**\n * Render an element as inline HTML tag, walk through it's children.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineTag (elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral(renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral(renderCloseTag(elem));\n builder.stopNoWrap();\n}\n\n/**\n * Render an element as HTML block bag, walk through it's children.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockTag (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.startNoWrap();\n builder.addLiteral(renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral(renderCloseTag(elem));\n builder.stopNoWrap();\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Render an element with all it's children as inline HTML.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineHtml (elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral(\n render(elem, { decodeEntities: builder.options.decodeEntities })\n );\n builder.stopNoWrap();\n}\n\n/**\n * Render an element with all it's children as HTML block.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockHtml (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.startNoWrap();\n builder.addLiteral(\n render(elem, { decodeEntities: builder.options.decodeEntities })\n );\n builder.stopNoWrap();\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Render inline element wrapped with given strings.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineSurround (elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.prefix || '');\n walk(elem.children, builder);\n builder.addLiteral(formatOptions.suffix || '');\n}\n\nvar genericFormatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n block: formatBlock$1,\n blockHtml: formatBlockHtml,\n blockString: formatBlockString,\n blockTag: formatBlockTag,\n inline: formatInline,\n inlineHtml: formatInlineHtml,\n inlineString: formatInlineString,\n inlineSurround: formatInlineSurround,\n inlineTag: formatInlineTag,\n skip: formatSkip\n});\n\nfunction getRow (matrix, j) {\n if (!matrix[j]) { matrix[j] = []; }\n return matrix[j];\n}\n\nfunction findFirstVacantIndex (row, x = 0) {\n while (row[x]) { x++; }\n return x;\n}\n\nfunction transposeInPlace (matrix, maxSize) {\n for (let i = 0; i < maxSize; i++) {\n const rowI = getRow(matrix, i);\n for (let j = 0; j < i; j++) {\n const rowJ = getRow(matrix, j);\n if (rowI[j] || rowJ[i]) {\n const temp = rowI[j];\n rowI[j] = rowJ[i];\n rowJ[i] = temp;\n }\n }\n }\n}\n\nfunction putCellIntoLayout (cell, layout, baseRow, baseCol) {\n for (let r = 0; r < cell.rowspan; r++) {\n const layoutRow = getRow(layout, baseRow + r);\n for (let c = 0; c < cell.colspan; c++) {\n layoutRow[baseCol + c] = cell;\n }\n }\n}\n\nfunction getOrInitOffset (offsets, index) {\n if (offsets[index] === undefined) {\n offsets[index] = (index === 0) ? 0 : 1 + getOrInitOffset(offsets, index - 1);\n }\n return offsets[index];\n}\n\nfunction updateOffset (offsets, base, span, value) {\n offsets[base + span] = Math.max(\n getOrInitOffset(offsets, base + span),\n getOrInitOffset(offsets, base) + value\n );\n}\n\n/**\n * Render a table into a string.\n * Cells can contain multiline text and span across multiple rows and columns.\n *\n * Modifies cells to add lines array.\n *\n * @param { TablePrinterCell[][] } tableRows Table to render.\n * @param { number } rowSpacing Number of spaces between columns.\n * @param { number } colSpacing Number of empty lines between rows.\n * @returns { string }\n */\nfunction tableToString (tableRows, rowSpacing, colSpacing) {\n const layout = [];\n let colNumber = 0;\n const rowNumber = tableRows.length;\n const rowOffsets = [0];\n // Fill the layout table and row offsets row-by-row.\n for (let j = 0; j < rowNumber; j++) {\n const layoutRow = getRow(layout, j);\n const cells = tableRows[j];\n let x = 0;\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i];\n x = findFirstVacantIndex(layoutRow, x);\n putCellIntoLayout(cell, layout, j, x);\n x += cell.colspan;\n cell.lines = cell.text.split('\\n');\n const cellHeight = cell.lines.length;\n updateOffset(rowOffsets, j, cell.rowspan, cellHeight + rowSpacing);\n }\n colNumber = (layoutRow.length > colNumber) ? layoutRow.length : colNumber;\n }\n\n transposeInPlace(layout, (rowNumber > colNumber) ? rowNumber : colNumber);\n\n const outputLines = [];\n const colOffsets = [0];\n // Fill column offsets and output lines column-by-column.\n for (let x = 0; x < colNumber; x++) {\n let y = 0;\n let cell;\n const rowsInThisColumn = Math.min(rowNumber, layout[x].length);\n while (y < rowsInThisColumn) {\n cell = layout[x][y];\n if (cell) {\n if (!cell.rendered) {\n let cellWidth = 0;\n for (let j = 0; j < cell.lines.length; j++) {\n const line = cell.lines[j];\n const lineOffset = rowOffsets[y] + j;\n outputLines[lineOffset] = (outputLines[lineOffset] || '').padEnd(colOffsets[x]) + line;\n cellWidth = (line.length > cellWidth) ? line.length : cellWidth;\n }\n updateOffset(colOffsets, x, cell.colspan, cellWidth + colSpacing);\n cell.rendered = true;\n }\n y += cell.rowspan;\n } else {\n const lineOffset = rowOffsets[y];\n outputLines[lineOffset] = (outputLines[lineOffset] || '');\n y++;\n }\n }\n }\n\n return outputLines.join('\\n');\n}\n\n/**\n * Process a line-break.\n *\n * @type { FormatCallback }\n */\nfunction formatLineBreak (elem, walk, builder, formatOptions) {\n builder.addLineBreak();\n}\n\n/**\n * Process a `wbr` tag (word break opportunity).\n *\n * @type { FormatCallback }\n */\nfunction formatWbr (elem, walk, builder, formatOptions) {\n builder.addWordBreakOpportunity();\n}\n\n/**\n * Process a horizontal line.\n *\n * @type { FormatCallback }\n */\nfunction formatHorizontalLine (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.addInline('-'.repeat(formatOptions.length || builder.options.wordwrap || 40));\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a paragraph.\n *\n * @type { FormatCallback }\n */\nfunction formatParagraph (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a preformatted content.\n *\n * @type { FormatCallback }\n */\nfunction formatPre (elem, walk, builder, formatOptions) {\n builder.openBlock({\n isPre: true,\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a heading.\n *\n * @type { FormatCallback }\n */\nfunction formatHeading (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n if (formatOptions.uppercase !== false) {\n builder.pushWordTransform(str => str.toUpperCase());\n walk(elem.children, builder);\n builder.popWordTransform();\n } else {\n walk(elem.children, builder);\n }\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a blockquote.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockquote (elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2,\n reservedLineLength: 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2,\n blockTransform: str => ((formatOptions.trimEmptyLines !== false) ? trimCharacter(str, '\\n') : str)\n .split('\\n')\n .map(line => '> ' + line)\n .join('\\n')\n });\n}\n\nfunction withBrackets (str, brackets) {\n if (!brackets) { return str; }\n\n const lbr = (typeof brackets[0] === 'string')\n ? brackets[0]\n : '[';\n const rbr = (typeof brackets[1] === 'string')\n ? brackets[1]\n : ']';\n return lbr + str + rbr;\n}\n\nfunction pathRewrite (path, rewriter, baseUrl, metadata, elem) {\n const modifiedPath = (typeof rewriter === 'function')\n ? rewriter(path, metadata, elem)\n : path;\n return (modifiedPath[0] === '/' && baseUrl)\n ? trimCharacterEnd(baseUrl, '/') + modifiedPath\n : modifiedPath;\n}\n\n/**\n * Process an image.\n *\n * @type { FormatCallback }\n */\nfunction formatImage (elem, walk, builder, formatOptions) {\n const attribs = elem.attribs || {};\n const alt = (attribs.alt)\n ? attribs.alt\n : '';\n const src = (!attribs.src)\n ? ''\n : pathRewrite(attribs.src, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n const text = (!src)\n ? alt\n : (!alt)\n ? withBrackets(src, formatOptions.linkBrackets)\n : alt + ' ' + withBrackets(src, formatOptions.linkBrackets);\n\n builder.addInline(text, { noWordTransform: true });\n}\n\n// a img baseUrl\n// a img pathRewrite\n// a img linkBrackets\n\n// a ignoreHref: false\n// ignoreText ?\n// a noAnchorUrl: true\n// can be replaced with selector\n// a hideLinkHrefIfSameAsText: false\n// how to compare, what to show (text, href, normalized) ?\n// a mailto protocol removed without options\n\n// a protocols: mailto, tel, ...\n// can be matched with selector?\n\n// anchors, protocols - only if no pathRewrite fn is provided\n\n// normalize-url ?\n\n// a\n// a[href^=\"#\"] - format:skip by default\n// a[href^=\"mailto:\"] - ?\n\n/**\n * Process an anchor.\n *\n * @type { FormatCallback }\n */\nfunction formatAnchor (elem, walk, builder, formatOptions) {\n function getHref () {\n if (formatOptions.ignoreHref) { return ''; }\n if (!elem.attribs || !elem.attribs.href) { return ''; }\n let href = elem.attribs.href.replace(/^mailto:/, '');\n if (formatOptions.noAnchorUrl && href[0] === '#') { return ''; }\n href = pathRewrite(href, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n return href;\n }\n const href = getHref();\n if (!href) {\n walk(elem.children, builder);\n } else {\n let text = '';\n builder.pushWordTransform(\n str => {\n if (str) { text += str; }\n return str;\n }\n );\n walk(elem.children, builder);\n builder.popWordTransform();\n\n const hideSameLink = formatOptions.hideLinkHrefIfSameAsText && href === text;\n if (!hideSameLink) {\n builder.addInline(\n (!text)\n ? href\n : ' ' + withBrackets(href, formatOptions.linkBrackets),\n { noWordTransform: true }\n );\n }\n }\n}\n\n/**\n * @param { DomNode } elem List items with their prefixes.\n * @param { RecursiveCallback } walk Recursive callback to process child nodes.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @param { FormatOptions } formatOptions Options specific to a formatter.\n * @param { () => string } nextPrefixCallback Function that returns increasing index each time it is called.\n */\nfunction formatList (elem, walk, builder, formatOptions, nextPrefixCallback) {\n const isNestedList = get(elem, ['parent', 'name']) === 'li';\n\n // With Roman numbers, index length is not as straightforward as with Arabic numbers or letters,\n // so the dumb length comparison is the most robust way to get the correct value.\n let maxPrefixLength = 0;\n const listItems = (elem.children || [])\n // it might be more accurate to check only for html spaces here, but no significant benefit\n .filter(child => child.type !== 'text' || !/^\\s*$/.test(child.data))\n .map(function (child) {\n if (child.name !== 'li') {\n return { node: child, prefix: '' };\n }\n const prefix = (isNestedList)\n ? nextPrefixCallback().trimStart()\n : nextPrefixCallback();\n if (prefix.length > maxPrefixLength) { maxPrefixLength = prefix.length; }\n return { node: child, prefix: prefix };\n });\n if (!listItems.length) { return; }\n\n builder.openList({\n interRowLineBreaks: 1,\n leadingLineBreaks: isNestedList ? 1 : (formatOptions.leadingLineBreaks || 2),\n maxPrefixLength: maxPrefixLength,\n prefixAlign: 'left'\n });\n\n for (const { node, prefix } of listItems) {\n builder.openListItem({ prefix: prefix });\n walk([node], builder);\n builder.closeListItem();\n }\n\n builder.closeList({ trailingLineBreaks: isNestedList ? 1 : (formatOptions.trailingLineBreaks || 2) });\n}\n\n/**\n * Process an unordered list.\n *\n * @type { FormatCallback }\n */\nfunction formatUnorderedList (elem, walk, builder, formatOptions) {\n const prefix = formatOptions.itemPrefix || ' * ';\n return formatList(elem, walk, builder, formatOptions, () => prefix);\n}\n\n/**\n * Process an ordered list.\n *\n * @type { FormatCallback }\n */\nfunction formatOrderedList (elem, walk, builder, formatOptions) {\n let nextIndex = Number(elem.attribs.start || '1');\n const indexFunction = getOrderedListIndexFunction(elem.attribs.type);\n const nextPrefixCallback = () => ' ' + indexFunction(nextIndex++) + '. ';\n return formatList(elem, walk, builder, formatOptions, nextPrefixCallback);\n}\n\n/**\n * Return a function that can be used to generate index markers of a specified format.\n *\n * @param { string } [olType='1'] Marker type.\n * @returns { (i: number) => string }\n */\nfunction getOrderedListIndexFunction (olType = '1') {\n switch (olType) {\n case 'a': return (i) => numberToLetterSequence(i, 'a');\n case 'A': return (i) => numberToLetterSequence(i, 'A');\n case 'i': return (i) => numberToRoman(i).toLowerCase();\n case 'I': return (i) => numberToRoman(i);\n case '1':\n default: return (i) => (i).toString();\n }\n}\n\n/**\n * Given a list of class and ID selectors (prefixed with '.' and '#'),\n * return them as separate lists of names without prefixes.\n *\n * @param { string[] } selectors Class and ID selectors (`[\".class\", \"#id\"]` etc).\n * @returns { { classes: string[], ids: string[] } }\n */\nfunction splitClassesAndIds (selectors) {\n const classes = [];\n const ids = [];\n for (const selector of selectors) {\n if (selector.startsWith('.')) {\n classes.push(selector.substring(1));\n } else if (selector.startsWith('#')) {\n ids.push(selector.substring(1));\n }\n }\n return { classes: classes, ids: ids };\n}\n\nfunction isDataTable (attr, tables) {\n if (tables === true) { return true; }\n if (!attr) { return false; }\n\n const { classes, ids } = splitClassesAndIds(tables);\n const attrClasses = (attr['class'] || '').split(' ');\n const attrIds = (attr['id'] || '').split(' ');\n\n return attrClasses.some(x => classes.includes(x)) || attrIds.some(x => ids.includes(x));\n}\n\n/**\n * Process a table (either as a container or as a data table, depending on options).\n *\n * @type { FormatCallback }\n */\nfunction formatTable (elem, walk, builder, formatOptions) {\n return isDataTable(elem.attribs, builder.options.tables)\n ? formatDataTable(elem, walk, builder, formatOptions)\n : formatBlock(elem, walk, builder, formatOptions);\n}\n\nfunction formatBlock (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks });\n}\n\n/**\n * Process a data table.\n *\n * @type { FormatCallback }\n */\nfunction formatDataTable (elem, walk, builder, formatOptions) {\n builder.openTable();\n elem.children.forEach(walkTable);\n builder.closeTable({\n tableToString: (rows) => tableToString(rows, formatOptions.rowSpacing ?? 0, formatOptions.colSpacing ?? 3),\n leadingLineBreaks: formatOptions.leadingLineBreaks,\n trailingLineBreaks: formatOptions.trailingLineBreaks\n });\n\n function formatCell (cellNode) {\n const colspan = +get(cellNode, ['attribs', 'colspan']) || 1;\n const rowspan = +get(cellNode, ['attribs', 'rowspan']) || 1;\n builder.openTableCell({ maxColumnWidth: formatOptions.maxColumnWidth });\n walk(cellNode.children, builder);\n builder.closeTableCell({ colspan: colspan, rowspan: rowspan });\n }\n\n function walkTable (elem) {\n if (elem.type !== 'tag') { return; }\n\n const formatHeaderCell = (formatOptions.uppercaseHeaderCells !== false)\n ? (cellNode) => {\n builder.pushWordTransform(str => str.toUpperCase());\n formatCell(cellNode);\n builder.popWordTransform();\n }\n : formatCell;\n\n switch (elem.name) {\n case 'thead':\n case 'tbody':\n case 'tfoot':\n case 'center':\n elem.children.forEach(walkTable);\n return;\n\n case 'tr': {\n builder.openTableRow();\n for (const childOfTr of elem.children) {\n if (childOfTr.type !== 'tag') { continue; }\n switch (childOfTr.name) {\n case 'th': {\n formatHeaderCell(childOfTr);\n break;\n }\n case 'td': {\n formatCell(childOfTr);\n break;\n }\n // do nothing\n }\n }\n builder.closeTableRow();\n break;\n }\n // do nothing\n }\n }\n}\n\nvar textFormatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n anchor: formatAnchor,\n blockquote: formatBlockquote,\n dataTable: formatDataTable,\n heading: formatHeading,\n horizontalLine: formatHorizontalLine,\n image: formatImage,\n lineBreak: formatLineBreak,\n orderedList: formatOrderedList,\n paragraph: formatParagraph,\n pre: formatPre,\n table: formatTable,\n unorderedList: formatUnorderedList,\n wbr: formatWbr\n});\n\n/**\n * Default options.\n *\n * @constant\n * @type { Options }\n * @default\n * @private\n */\nconst DEFAULT_OPTIONS = {\n baseElements: {\n selectors: [ 'body' ],\n orderBy: 'selectors', // 'selectors' | 'occurrence'\n returnDomByDefault: true\n },\n decodeEntities: true,\n encodeCharacters: {},\n formatters: {},\n limits: {\n ellipsis: '...',\n maxBaseElements: undefined,\n maxChildNodes: undefined,\n maxDepth: undefined,\n maxInputLength: (1 << 24) // 16_777_216\n },\n longWordSplit: {\n forceWrapOnLimit: false,\n wrapCharacters: []\n },\n preserveNewlines: false,\n selectors: [\n { selector: '*', format: 'inline' },\n {\n selector: 'a',\n format: 'anchor',\n options: {\n baseUrl: null,\n hideLinkHrefIfSameAsText: false,\n ignoreHref: false,\n linkBrackets: ['[', ']'],\n noAnchorUrl: true\n }\n },\n { selector: 'article', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'aside', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'blockquote',\n format: 'blockquote',\n options: { leadingLineBreaks: 2, trailingLineBreaks: 2, trimEmptyLines: true }\n },\n { selector: 'br', format: 'lineBreak' },\n { selector: 'div', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'footer', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'form', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'h1', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h2', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h3', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h4', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h5', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h6', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'header', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'hr',\n format: 'horizontalLine',\n options: { leadingLineBreaks: 2, length: undefined, trailingLineBreaks: 2 }\n },\n {\n selector: 'img',\n format: 'image',\n options: { baseUrl: null, linkBrackets: ['[', ']'] }\n },\n { selector: 'main', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'nav', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'ol',\n format: 'orderedList',\n options: { leadingLineBreaks: 2, trailingLineBreaks: 2 }\n },\n { selector: 'p', format: 'paragraph', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'pre', format: 'pre', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'section', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'table',\n format: 'table',\n options: {\n colSpacing: 3,\n leadingLineBreaks: 2,\n maxColumnWidth: 60,\n rowSpacing: 0,\n trailingLineBreaks: 2,\n uppercaseHeaderCells: true\n }\n },\n {\n selector: 'ul',\n format: 'unorderedList',\n options: { itemPrefix: ' * ', leadingLineBreaks: 2, trailingLineBreaks: 2 }\n },\n { selector: 'wbr', format: 'wbr' },\n ],\n tables: [], // deprecated\n whitespaceCharacters: ' \\t\\r\\n\\f\\u200b',\n wordwrap: 80\n};\n\nconst concatMerge = (acc, src, options) => [...acc, ...src];\nconst overwriteMerge = (acc, src, options) => [...src];\nconst selectorsMerge = (acc, src, options) => (\n (acc.some(s => typeof s === 'object'))\n ? concatMerge(acc, src) // selectors\n : overwriteMerge(acc, src) // baseElements.selectors\n);\n\n/**\n * Preprocess options, compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options.\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */\nfunction compile (options = {}) {\n options = merge(\n DEFAULT_OPTIONS,\n options,\n {\n arrayMerge: overwriteMerge,\n customMerge: (key) => ((key === 'selectors') ? selectorsMerge : undefined)\n }\n );\n options.formatters = Object.assign({}, genericFormatters, textFormatters, options.formatters);\n options.selectors = mergeDuplicatesPreferLast(options.selectors, (s => s.selector));\n\n handleDeprecatedOptions(options);\n\n return compile$1(options);\n}\n\n/**\n * Convert given HTML content to plain text string.\n *\n * @param { string } html HTML content to convert.\n * @param { Options } [options = {}] HtmlToText options.\n * @param { any } [metadata] Optional metadata for HTML document, for use in formatters.\n * @returns { string } Plain text string.\n * @static\n *\n * @example\n * const { convert } = require('html-to-text');\n * const text = convert('Hello World ', {\n * wordwrap: 130\n * });\n * console.log(text); // HELLO WORLD\n */\nfunction convert (html, options = {}, metadata = undefined) {\n return compile(options)(html, metadata);\n}\n\n/**\n * Map previously existing and now deprecated options to the new options layout.\n * This is a subject for cleanup in major releases.\n *\n * @param { Options } options HtmlToText options.\n */\nfunction handleDeprecatedOptions (options) {\n if (options.tags) {\n const tagDefinitions = Object.entries(options.tags).map(\n ([selector, definition]) => ({ ...definition, selector: selector || '*' })\n );\n options.selectors.push(...tagDefinitions);\n options.selectors = mergeDuplicatesPreferLast(options.selectors, (s => s.selector));\n }\n\n function set (obj, path, value) {\n const valueKey = path.pop();\n for (const key of path) {\n let nested = obj[key];\n if (!nested) {\n nested = {};\n obj[key] = nested;\n }\n obj = nested;\n }\n obj[valueKey] = value;\n }\n\n if (options['baseElement']) {\n const baseElement = options['baseElement'];\n set(\n options,\n ['baseElements', 'selectors'],\n (Array.isArray(baseElement) ? baseElement : [baseElement])\n );\n }\n if (options['returnDomByDefault'] !== undefined) {\n set(options, ['baseElements', 'returnDomByDefault'], options['returnDomByDefault']);\n }\n\n for (const definition of options.selectors) {\n if (definition.format === 'anchor' && get(definition, ['options', 'noLinkBrackets'])) {\n set(definition, ['options', 'linkBrackets'], false);\n }\n }\n}\n\nexport { compile, convert, convert as htmlToText };\n","import { isTag } from 'domhandler';\nimport { Picker } from 'selderee';\n\nfunction hp2Builder(nodes) {\n return new Picker(handleArray(nodes));\n}\nfunction handleArray(nodes) {\n const matchers = nodes.map(handleNode);\n return (el, ...tail) => matchers.flatMap(m => m(el, ...tail));\n}\nfunction handleNode(node) {\n switch (node.type) {\n case 'terminal': {\n const result = [node.valueContainer];\n return (el, ...tail) => result;\n }\n case 'tagName':\n return handleTagName(node);\n case 'attrValue':\n return handleAttrValueName(node);\n case 'attrPresence':\n return handleAttrPresenceName(node);\n case 'pushElement':\n return handlePushElementNode(node);\n case 'popElement':\n return handlePopElementNode(node);\n }\n}\nfunction handleTagName(node) {\n const variants = {};\n for (const variant of node.variants) {\n variants[variant.value] = handleArray(variant.cont);\n }\n return (el, ...tail) => {\n const continuation = variants[el.name];\n return (continuation) ? continuation(el, ...tail) : [];\n };\n}\nfunction handleAttrPresenceName(node) {\n const attrName = node.name;\n const continuation = handleArray(node.cont);\n return (el, ...tail) => (Object.prototype.hasOwnProperty.call(el.attribs, attrName))\n ? continuation(el, ...tail)\n : [];\n}\nfunction handleAttrValueName(node) {\n const callbacks = [];\n for (const matcher of node.matchers) {\n const predicate = matcher.predicate;\n const continuation = handleArray(matcher.cont);\n callbacks.push((attr, el, ...tail) => (predicate(attr) ? continuation(el, ...tail) : []));\n }\n const attrName = node.name;\n return (el, ...tail) => {\n const attr = el.attribs[attrName];\n return (attr || attr === '')\n ? callbacks.flatMap(cb => cb(attr, el, ...tail))\n : [];\n };\n}\nfunction handlePushElementNode(node) {\n const continuation = handleArray(node.cont);\n const leftElementGetter = (node.combinator === '+')\n ? getPrecedingElement\n : getParentElement;\n return (el, ...tail) => {\n const next = leftElementGetter(el);\n if (next === null) {\n return [];\n }\n return continuation(next, el, ...tail);\n };\n}\nconst getPrecedingElement = (el) => {\n const prev = el.prev;\n if (prev === null) {\n return null;\n }\n return (isTag(prev)) ? prev : getPrecedingElement(prev);\n};\nconst getParentElement = (el) => {\n const parent = el.parent;\n return (parent && isTag(parent)) ? parent : null;\n};\nfunction handlePopElementNode(node) {\n const continuation = handleArray(node.cont);\n return (el, next, ...tail) => continuation(next, ...tail);\n}\n\nexport { hp2Builder };\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for `.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this.state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? State.BeforeSpecialS\n : State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeEntity(c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === CharCodes.Number) {\n this.state = State.BeforeNumericEntity;\n }\n else if (c === CharCodes.Amp) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n }\n stateInNamedEntity(c) {\n this.entityExcess += 1;\n this.trieIndex = determineBranch(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n const masked = this.trieCurrent & BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {\n this.trieIndex += valueLength;\n }\n else {\n // Add 1 as we have already incremented the excess\n const entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) {\n this.emitNamedEntity();\n }\n }\n }\n }\n emitNamedEntity() {\n this.state = this.baseState;\n if (this.entityResult === 0) {\n return;\n }\n const valueLength = (this.entityTrie[this.entityResult] & BinTrieFlags.VALUE_LENGTH) >>\n 14;\n switch (valueLength) {\n case 1: {\n this.emitCodePoint(this.entityTrie[this.entityResult] &\n ~BinTrieFlags.VALUE_LENGTH);\n break;\n }\n case 2: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n }\n case 3: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n }\n stateBeforeNumericEntity(c) {\n if ((c | 0x20) === CharCodes.LowerX) {\n this.entityExcess++;\n this.state = State.InHexEntity;\n }\n else {\n this.state = State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n }\n emitNumericEntity(strict) {\n const entityStart = this.index - this.entityExcess - 1;\n const numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint(replaceCodePoint(this.entityResult));\n }\n this.state = this.baseState;\n }\n stateInNumericEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n stateInHexEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else if (isHexDigit(c)) {\n this.entityResult =\n this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n allowLegacyEntity() {\n return (!this.xmlMode &&\n (this.baseState === State.Text ||\n this.baseState === State.InSpecialTag));\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InNamedEntity: {\n this.stateInNamedEntity(c);\n break;\n }\n case State.BeforeEntity: {\n this.stateBeforeEntity(c);\n break;\n }\n case State.InHexEntity: {\n this.stateInHexEntity(c);\n break;\n }\n case State.InNumericEntity: {\n this.stateInNumericEntity(c);\n break;\n }\n default: {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InNamedEntity) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InNumericEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InHexEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitPartial(start, endIndex) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribdata(start, endIndex);\n }\n else {\n this.cbs.ontext(start, endIndex);\n }\n }\n emitCodePoint(cp) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribentity(cp);\n }\n else {\n this.cbs.ontextentity(cp);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map",null,"\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;\nvar decode_data_html_js_1 = __importDefault(require(\"./generated/decode-data-html.js\"));\nexports.htmlDecodeTree = decode_data_html_js_1.default;\nvar decode_data_xml_js_1 = __importDefault(require(\"./generated/decode-data-xml.js\"));\nexports.xmlDecodeTree = decode_data_xml_js_1.default;\nvar decode_codepoint_js_1 = __importStar(require(\"./decode_codepoint.js\"));\nexports.decodeCodePoint = decode_codepoint_js_1.default;\nvar decode_codepoint_js_2 = require(\"./decode_codepoint.js\");\nObject.defineProperty(exports, \"replaceCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } });\nObject.defineProperty(exports, \"fromCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } });\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nvar TO_LOWER_BIT = 32;\nvar BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nvar DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nvar EntityDecoder = /** @class */ (function () {\n function EntityDecoder(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n EntityDecoder.prototype.startEntity = function (decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n };\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.write = function (str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n };\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericStart = function (str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n };\n EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) {\n if (start !== end) {\n var digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n };\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericHex = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n };\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericDecimal = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n };\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n };\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNamedEntity = function (str, offset) {\n var decodeTree = this.decodeTree;\n var current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n var char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n };\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () {\n var _a;\n var _b = this, result = _b.result, decodeTree = _b.decodeTree;\n var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n };\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) {\n var decodeTree = this.decodeTree;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n };\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.end = function () {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n };\n return EntityDecoder;\n}());\nexports.EntityDecoder = EntityDecoder;\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n var ret = \"\";\n var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); });\n return function decodeWithTrie(str, decodeMode) {\n var lastIndex = 0;\n var offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n var len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n var result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nfunction determineBranch(decodeTree, current, nodeIdx, char) {\n var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n var jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n var value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n var lo = nodeIdx;\n var hi = lo + branchCount - 1;\n while (lo <= hi) {\n var mid = (lo + hi) >>> 1;\n var midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nexports.determineBranch = determineBranch;\nvar htmlDecoder = getDecoder(decode_data_html_js_1.default);\nvar xmlDecoder = getDecoder(decode_data_xml_js_1.default);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nfunction decodeHTML(str, mode) {\n if (mode === void 0) { mode = DecodingMode.Legacy; }\n return htmlDecoder(str, mode);\n}\nexports.decodeHTML = decodeHTML;\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\nexports.decodeHTMLAttribute = decodeHTMLAttribute;\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeHTMLStrict = decodeHTMLStrict;\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeXML = decodeXML;\n//# sourceMappingURL=decode.js.map",null,"\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-html.js.map",null,"\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-xml.js.map",null,"\"use strict\";\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replaceCodePoint = exports.fromCodePoint = void 0;\nvar decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexports.fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nfunction replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nexports.replaceCodePoint = replaceCodePoint;\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nfunction decodeCodePoint(codePoint) {\n return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));\n}\nexports.default = decodeCodePoint;\n//# sourceMappingURL=decode_codepoint.js.map",null,"import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n",null,"import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for ` ` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring ``.\n this.sequenceIndex = Number(c === $75d60ee9abed1dd4$var$CharCodes.Lt);\n }\n stateCDATASequence(c) {\n if (c === $75d60ee9abed1dd4$var$Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === $75d60ee9abed1dd4$var$Sequences.Cdata.length) {\n this.state = $75d60ee9abed1dd4$var$State.InCommentLike;\n this.currentSequence = $75d60ee9abed1dd4$var$Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n } else {\n this.sequenceIndex = 0;\n this.state = $75d60ee9abed1dd4$var$State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */ fastForwardTo(c) {\n while(++this.index < this.buffer.length + this.offset){\n if (this.buffer.charCodeAt(this.index - this.offset) === c) return true;\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */ this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */ stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === $75d60ee9abed1dd4$var$Sequences.CdataEnd) this.cbs.oncdata(this.sectionStart, this.index, 2);\n else this.cbs.oncomment(this.sectionStart, this.index, 2);\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = $75d60ee9abed1dd4$var$State.Text;\n }\n } else if (this.sequenceIndex === 0) // Fast-forward to the first character of the sequence\n {\n if (this.fastForwardTo(this.currentSequence[0])) this.sequenceIndex = 1;\n } else if (c !== this.currentSequence[this.sequenceIndex - 1]) // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */ isTagStartChar(c) {\n return this.xmlMode ? !$75d60ee9abed1dd4$var$isEndOfTagSection(c) : $75d60ee9abed1dd4$var$isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = $75d60ee9abed1dd4$var$State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.ExclamationMark) {\n this.state = $75d60ee9abed1dd4$var$State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.Questionmark) {\n this.state = $75d60ee9abed1dd4$var$State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n } else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === $75d60ee9abed1dd4$var$Sequences.TitleEnd[2]) this.startSpecial($75d60ee9abed1dd4$var$Sequences.TitleEnd, 3);\n else this.state = !this.xmlMode && lower === $75d60ee9abed1dd4$var$Sequences.ScriptEnd[2] ? $75d60ee9abed1dd4$var$State.BeforeSpecialS : $75d60ee9abed1dd4$var$State.InTagName;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.Slash) this.state = $75d60ee9abed1dd4$var$State.BeforeClosingTagName;\n else {\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if ($75d60ee9abed1dd4$var$isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if ($75d60ee9abed1dd4$var$isWhitespace(c)) ;\n else if (c === $75d60ee9abed1dd4$var$CharCodes.Gt) this.state = $75d60ee9abed1dd4$var$State.Text;\n else {\n this.state = this.isTagStartChar(c) ? $75d60ee9abed1dd4$var$State.InClosingTagName : $75d60ee9abed1dd4$var$State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || $75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = $75d60ee9abed1dd4$var$State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.baseState = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = $75d60ee9abed1dd4$var$State.InSpecialTag;\n this.sequenceIndex = 0;\n } else this.state = $75d60ee9abed1dd4$var$State.Text;\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.Slash) this.state = $75d60ee9abed1dd4$var$State.InSelfClosingTag;\n else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.state = $75d60ee9abed1dd4$var$State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.baseState = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n } else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Eq || $75d60ee9abed1dd4$var$isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = $75d60ee9abed1dd4$var$State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Eq) this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeValue;\n else if (c === $75d60ee9abed1dd4$var$CharCodes.Slash || c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onattribend($75d60ee9abed1dd4$export$cbf5509cea2ad22.NoValue, this.index);\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n } else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.cbs.onattribend($75d60ee9abed1dd4$export$cbf5509cea2ad22.NoValue, this.index);\n this.state = $75d60ee9abed1dd4$var$State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.DoubleQuote) {\n this.state = $75d60ee9abed1dd4$var$State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.SingleQuote) {\n this.state = $75d60ee9abed1dd4$var$State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n } else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = $75d60ee9abed1dd4$var$State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === $75d60ee9abed1dd4$var$CharCodes.DoubleQuote ? $75d60ee9abed1dd4$export$cbf5509cea2ad22.Double : $75d60ee9abed1dd4$export$cbf5509cea2ad22.Single, this.index);\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n } else if (this.decodeEntities && c === $75d60ee9abed1dd4$var$CharCodes.Amp) {\n this.baseState = this.state;\n this.state = $75d60ee9abed1dd4$var$State.BeforeEntity;\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, $75d60ee9abed1dd4$var$CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, $75d60ee9abed1dd4$var$CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if ($75d60ee9abed1dd4$var$isWhitespace(c) || c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend($75d60ee9abed1dd4$export$cbf5509cea2ad22.Unquoted, this.index);\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n } else if (this.decodeEntities && c === $75d60ee9abed1dd4$var$CharCodes.Amp) {\n this.baseState = this.state;\n this.state = $75d60ee9abed1dd4$var$State.BeforeEntity;\n }\n }\n stateBeforeDeclaration(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.OpeningSquareBracket) {\n this.state = $75d60ee9abed1dd4$var$State.CDATASequence;\n this.sequenceIndex = 0;\n } else this.state = c === $75d60ee9abed1dd4$var$CharCodes.Dash ? $75d60ee9abed1dd4$var$State.BeforeComment : $75d60ee9abed1dd4$var$State.InDeclaration;\n }\n stateInDeclaration(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Dash) {\n this.state = $75d60ee9abed1dd4$var$State.InCommentLike;\n this.currentSequence = $75d60ee9abed1dd4$var$Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n } else this.state = $75d60ee9abed1dd4$var$State.InDeclaration;\n }\n stateInSpecialComment(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === $75d60ee9abed1dd4$var$Sequences.ScriptEnd[3]) this.startSpecial($75d60ee9abed1dd4$var$Sequences.ScriptEnd, 4);\n else if (lower === $75d60ee9abed1dd4$var$Sequences.StyleEnd[3]) this.startSpecial($75d60ee9abed1dd4$var$Sequences.StyleEnd, 4);\n else {\n this.state = $75d60ee9abed1dd4$var$State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeEntity(c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === $75d60ee9abed1dd4$var$CharCodes.Number) this.state = $75d60ee9abed1dd4$var$State.BeforeNumericEntity;\n else if (c === $75d60ee9abed1dd4$var$CharCodes.Amp) ;\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = $75d60ee9abed1dd4$var$State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n }\n stateInNamedEntity(c) {\n this.entityExcess += 1;\n this.trieIndex = (0, $1KiJy.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n const masked = this.trieCurrent & (0, $1KiJy.BinTrieFlags).VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== $75d60ee9abed1dd4$var$CharCodes.Semi) this.trieIndex += valueLength;\n else {\n // Add 1 as we have already incremented the excess\n const entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) this.emitPartial(this.sectionStart, entityStart);\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) this.emitNamedEntity();\n }\n }\n }\n emitNamedEntity() {\n this.state = this.baseState;\n if (this.entityResult === 0) return;\n const valueLength = (this.entityTrie[this.entityResult] & (0, $1KiJy.BinTrieFlags).VALUE_LENGTH) >> 14;\n switch(valueLength){\n case 1:\n this.emitCodePoint(this.entityTrie[this.entityResult] & ~(0, $1KiJy.BinTrieFlags).VALUE_LENGTH);\n break;\n case 2:\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n case 3:\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n stateBeforeNumericEntity(c) {\n if ((c | 0x20) === $75d60ee9abed1dd4$var$CharCodes.LowerX) {\n this.entityExcess++;\n this.state = $75d60ee9abed1dd4$var$State.InHexEntity;\n } else {\n this.state = $75d60ee9abed1dd4$var$State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n }\n emitNumericEntity(strict) {\n const entityStart = this.index - this.entityExcess - 1;\n const numberStart = entityStart + 2 + Number(this.state === $75d60ee9abed1dd4$var$State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) this.emitPartial(this.sectionStart, entityStart);\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint((0, $1KiJy.replaceCodePoint)(this.entityResult));\n }\n this.state = this.baseState;\n }\n stateInNumericEntity(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Semi) this.emitNumericEntity(true);\n else if ($75d60ee9abed1dd4$var$isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - $75d60ee9abed1dd4$var$CharCodes.Zero);\n this.entityExcess++;\n } else {\n if (this.allowLegacyEntity()) this.emitNumericEntity(false);\n else this.state = this.baseState;\n this.index--;\n }\n }\n stateInHexEntity(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Semi) this.emitNumericEntity(true);\n else if ($75d60ee9abed1dd4$var$isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - $75d60ee9abed1dd4$var$CharCodes.Zero);\n this.entityExcess++;\n } else if ($75d60ee9abed1dd4$var$isHexDigit(c)) {\n this.entityResult = this.entityResult * 16 + ((c | 0x20) - $75d60ee9abed1dd4$var$CharCodes.LowerA + 10);\n this.entityExcess++;\n } else {\n if (this.allowLegacyEntity()) this.emitNumericEntity(false);\n else this.state = this.baseState;\n this.index--;\n }\n }\n allowLegacyEntity() {\n return !this.xmlMode && (this.baseState === $75d60ee9abed1dd4$var$State.Text || this.baseState === $75d60ee9abed1dd4$var$State.InSpecialTag);\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */ cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === $75d60ee9abed1dd4$var$State.Text || this.state === $75d60ee9abed1dd4$var$State.InSpecialTag && this.sequenceIndex === 0) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n } else if (this.state === $75d60ee9abed1dd4$var$State.InAttributeValueDq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueSq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */ parse() {\n while(this.shouldContinue()){\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch(this.state){\n case $75d60ee9abed1dd4$var$State.Text:\n this.stateText(c);\n break;\n case $75d60ee9abed1dd4$var$State.SpecialStartSequence:\n this.stateSpecialStartSequence(c);\n break;\n case $75d60ee9abed1dd4$var$State.InSpecialTag:\n this.stateInSpecialTag(c);\n break;\n case $75d60ee9abed1dd4$var$State.CDATASequence:\n this.stateCDATASequence(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeValueDq:\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeName:\n this.stateInAttributeName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InCommentLike:\n this.stateInCommentLike(c);\n break;\n case $75d60ee9abed1dd4$var$State.InSpecialComment:\n this.stateInSpecialComment(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeAttributeName:\n this.stateBeforeAttributeName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InTagName:\n this.stateInTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InClosingTagName:\n this.stateInClosingTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeTagName:\n this.stateBeforeTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.AfterAttributeName:\n this.stateAfterAttributeName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeValueSq:\n this.stateInAttributeValueSingleQuotes(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeAttributeValue:\n this.stateBeforeAttributeValue(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeClosingTagName:\n this.stateBeforeClosingTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.AfterClosingTagName:\n this.stateAfterClosingTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeSpecialS:\n this.stateBeforeSpecialS(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeValueNq:\n this.stateInAttributeValueNoQuotes(c);\n break;\n case $75d60ee9abed1dd4$var$State.InSelfClosingTag:\n this.stateInSelfClosingTag(c);\n break;\n case $75d60ee9abed1dd4$var$State.InDeclaration:\n this.stateInDeclaration(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeDeclaration:\n this.stateBeforeDeclaration(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeComment:\n this.stateBeforeComment(c);\n break;\n case $75d60ee9abed1dd4$var$State.InProcessingInstruction:\n this.stateInProcessingInstruction(c);\n break;\n case $75d60ee9abed1dd4$var$State.InNamedEntity:\n this.stateInNamedEntity(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeEntity:\n this.stateBeforeEntity(c);\n break;\n case $75d60ee9abed1dd4$var$State.InHexEntity:\n this.stateInHexEntity(c);\n break;\n case $75d60ee9abed1dd4$var$State.InNumericEntity:\n this.stateInNumericEntity(c);\n break;\n default:\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === $75d60ee9abed1dd4$var$State.InNamedEntity) this.emitNamedEntity();\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */ handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.state === $75d60ee9abed1dd4$var$State.InCommentLike) {\n if (this.currentSequence === $75d60ee9abed1dd4$var$Sequences.CdataEnd) this.cbs.oncdata(this.sectionStart, endIndex, 0);\n else this.cbs.oncomment(this.sectionStart, endIndex, 0);\n } else if (this.state === $75d60ee9abed1dd4$var$State.InNumericEntity && this.allowLegacyEntity()) this.emitNumericEntity(false);\n else if (this.state === $75d60ee9abed1dd4$var$State.InHexEntity && this.allowLegacyEntity()) this.emitNumericEntity(false);\n else if (this.state === $75d60ee9abed1dd4$var$State.InTagName || this.state === $75d60ee9abed1dd4$var$State.BeforeAttributeName || this.state === $75d60ee9abed1dd4$var$State.BeforeAttributeValue || this.state === $75d60ee9abed1dd4$var$State.AfterAttributeName || this.state === $75d60ee9abed1dd4$var$State.InAttributeName || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueSq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueDq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueNq || this.state === $75d60ee9abed1dd4$var$State.InClosingTagName) ;\n else this.cbs.ontext(this.sectionStart, endIndex);\n }\n emitPartial(start, endIndex) {\n if (this.baseState !== $75d60ee9abed1dd4$var$State.Text && this.baseState !== $75d60ee9abed1dd4$var$State.InSpecialTag) this.cbs.onattribdata(start, endIndex);\n else this.cbs.ontext(start, endIndex);\n }\n emitCodePoint(cp) {\n if (this.baseState !== $75d60ee9abed1dd4$var$State.Text && this.baseState !== $75d60ee9abed1dd4$var$State.InSpecialTag) this.cbs.onattribentity(cp);\n else this.cbs.ontextentity(cp);\n }\n}\n\n});\nparcelRegister(\"1KiJy\", function(module, exports) {\n\"use strict\";\nvar $14589e7572d0431f$var$__createBinding = module.exports && module.exports.__createBinding || (Object.create ? function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {\n enumerable: true,\n get: function() {\n return m[k];\n }\n };\n Object.defineProperty(o, k2, desc);\n} : function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar $14589e7572d0431f$var$__setModuleDefault = module.exports && module.exports.__setModuleDefault || (Object.create ? function(o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function(o, v) {\n o[\"default\"] = v;\n});\nvar $14589e7572d0431f$var$__importStar = module.exports && module.exports.__importStar || function(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) {\n for(var k in mod)if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) $14589e7572d0431f$var$__createBinding(result, mod, k);\n }\n $14589e7572d0431f$var$__setModuleDefault(result, mod);\n return result;\n};\nvar $14589e7572d0431f$var$__importDefault = module.exports && module.exports.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.decodeXML = module.exports.decodeHTMLStrict = module.exports.decodeHTMLAttribute = module.exports.decodeHTML = module.exports.determineBranch = module.exports.EntityDecoder = module.exports.DecodingMode = module.exports.BinTrieFlags = module.exports.fromCodePoint = module.exports.replaceCodePoint = module.exports.decodeCodePoint = module.exports.xmlDecodeTree = module.exports.htmlDecodeTree = void 0;\n\nvar $14589e7572d0431f$var$decode_data_html_js_1 = $14589e7572d0431f$var$__importDefault((parcelRequire(\"5sG9R\")));\nmodule.exports.htmlDecodeTree = $14589e7572d0431f$var$decode_data_html_js_1.default;\n\nvar $14589e7572d0431f$var$decode_data_xml_js_1 = $14589e7572d0431f$var$__importDefault((parcelRequire(\"cziBi\")));\nmodule.exports.xmlDecodeTree = $14589e7572d0431f$var$decode_data_xml_js_1.default;\n\nvar $14589e7572d0431f$var$decode_codepoint_js_1 = $14589e7572d0431f$var$__importStar((parcelRequire(\"6DwAw\")));\nmodule.exports.decodeCodePoint = $14589e7572d0431f$var$decode_codepoint_js_1.default;\n\nObject.defineProperty(module.exports, \"replaceCodePoint\", {\n enumerable: true,\n get: function() {\n return (parcelRequire(\"6DwAw\")).replaceCodePoint;\n }\n});\nObject.defineProperty(module.exports, \"fromCodePoint\", {\n enumerable: true,\n get: function() {\n return (parcelRequire(\"6DwAw\")).fromCodePoint;\n }\n});\nvar $14589e7572d0431f$var$CharCodes;\n(function(CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})($14589e7572d0431f$var$CharCodes || ($14589e7572d0431f$var$CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */ var $14589e7572d0431f$var$TO_LOWER_BIT = 32;\nvar $14589e7572d0431f$var$BinTrieFlags;\n(function(BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})($14589e7572d0431f$var$BinTrieFlags = module.exports.BinTrieFlags || (module.exports.BinTrieFlags = {}));\nfunction $14589e7572d0431f$var$isNumber(code) {\n return code >= $14589e7572d0431f$var$CharCodes.ZERO && code <= $14589e7572d0431f$var$CharCodes.NINE;\n}\nfunction $14589e7572d0431f$var$isHexadecimalCharacter(code) {\n return code >= $14589e7572d0431f$var$CharCodes.UPPER_A && code <= $14589e7572d0431f$var$CharCodes.UPPER_F || code >= $14589e7572d0431f$var$CharCodes.LOWER_A && code <= $14589e7572d0431f$var$CharCodes.LOWER_F;\n}\nfunction $14589e7572d0431f$var$isAsciiAlphaNumeric(code) {\n return code >= $14589e7572d0431f$var$CharCodes.UPPER_A && code <= $14589e7572d0431f$var$CharCodes.UPPER_Z || code >= $14589e7572d0431f$var$CharCodes.LOWER_A && code <= $14589e7572d0431f$var$CharCodes.LOWER_Z || $14589e7572d0431f$var$isNumber(code);\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */ function $14589e7572d0431f$var$isEntityInAttributeInvalidEnd(code) {\n return code === $14589e7572d0431f$var$CharCodes.EQUALS || $14589e7572d0431f$var$isAsciiAlphaNumeric(code);\n}\nvar $14589e7572d0431f$var$EntityDecoderState;\n(function(EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})($14589e7572d0431f$var$EntityDecoderState || ($14589e7572d0431f$var$EntityDecoderState = {}));\nvar $14589e7572d0431f$var$DecodingMode;\n(function(DecodingMode) {\n /** Entities in text nodes that can end with any character. */ DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */ DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */ DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})($14589e7572d0431f$var$DecodingMode = module.exports.DecodingMode || (module.exports.DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */ var $14589e7572d0431f$var$EntityDecoder = /** @class */ function() {\n function EntityDecoder(/** The tree used to decode entities. */ decodeTree, /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */ emitCodePoint, /** An object that is used to produce errors. */ errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */ this.state = $14589e7572d0431f$var$EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */ this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */ this.result = 0;\n /** The current index in the decode tree. */ this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */ this.excess = 1;\n /** The mode in which the decoder is operating. */ this.decodeMode = $14589e7572d0431f$var$DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */ EntityDecoder.prototype.startEntity = function(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = $14589e7572d0431f$var$EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n };\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ EntityDecoder.prototype.write = function(str, offset) {\n switch(this.state){\n case $14589e7572d0431f$var$EntityDecoderState.EntityStart:\n if (str.charCodeAt(offset) === $14589e7572d0431f$var$CharCodes.NUM) {\n this.state = $14589e7572d0431f$var$EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = $14589e7572d0431f$var$EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n case $14589e7572d0431f$var$EntityDecoderState.NumericStart:\n return this.stateNumericStart(str, offset);\n case $14589e7572d0431f$var$EntityDecoderState.NumericDecimal:\n return this.stateNumericDecimal(str, offset);\n case $14589e7572d0431f$var$EntityDecoderState.NumericHex:\n return this.stateNumericHex(str, offset);\n case $14589e7572d0431f$var$EntityDecoderState.NamedEntity:\n return this.stateNamedEntity(str, offset);\n }\n };\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ EntityDecoder.prototype.stateNumericStart = function(str, offset) {\n if (offset >= str.length) return -1;\n if ((str.charCodeAt(offset) | $14589e7572d0431f$var$TO_LOWER_BIT) === $14589e7572d0431f$var$CharCodes.LOWER_X) {\n this.state = $14589e7572d0431f$var$EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = $14589e7572d0431f$var$EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n };\n EntityDecoder.prototype.addToNumericResult = function(str, start, end, base) {\n if (start !== end) {\n var digitCount = end - start;\n this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n };\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ EntityDecoder.prototype.stateNumericHex = function(str, offset) {\n var startIdx = offset;\n while(offset < str.length){\n var char = str.charCodeAt(offset);\n if ($14589e7572d0431f$var$isNumber(char) || $14589e7572d0431f$var$isHexadecimalCharacter(char)) offset += 1;\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n };\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ EntityDecoder.prototype.stateNumericDecimal = function(str, offset) {\n var startIdx = offset;\n while(offset < str.length){\n var char = str.charCodeAt(offset);\n if ($14589e7572d0431f$var$isNumber(char)) offset += 1;\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n };\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */ EntityDecoder.prototype.emitNumericEntity = function(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === $14589e7572d0431f$var$CharCodes.SEMI) this.consumed += 1;\n else if (this.decodeMode === $14589e7572d0431f$var$DecodingMode.Strict) return 0;\n this.emitCodePoint((0, $14589e7572d0431f$var$decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== $14589e7572d0431f$var$CharCodes.SEMI) this.errors.missingSemicolonAfterCharacterReference();\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n };\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ EntityDecoder.prototype.stateNamedEntity = function(str, offset) {\n var decodeTree = this.decodeTree;\n var current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n var valueLength = (current & $14589e7572d0431f$var$BinTrieFlags.VALUE_LENGTH) >> 14;\n for(; offset < str.length; offset++, this.excess++){\n var char = str.charCodeAt(offset);\n this.treeIndex = $14589e7572d0431f$var$determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) return this.result === 0 || // If we are parsing an attribute\n this.decodeMode === $14589e7572d0431f$var$DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 || // And there should be no invalid characters.\n $14589e7572d0431f$var$isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();\n current = decodeTree[this.treeIndex];\n valueLength = (current & $14589e7572d0431f$var$BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === $14589e7572d0431f$var$CharCodes.SEMI) return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== $14589e7572d0431f$var$DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n };\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */ EntityDecoder.prototype.emitNotTerminatedNamedEntity = function() {\n var _a;\n var _b = this, result = _b.result, decodeTree = _b.decodeTree;\n var valueLength = (decodeTree[result] & $14589e7572d0431f$var$BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 || _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n };\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */ EntityDecoder.prototype.emitNamedEntityData = function(result, valueLength, consumed) {\n var decodeTree = this.decodeTree;\n this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~$14589e7572d0431f$var$BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed);\n if (valueLength === 3) // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n return consumed;\n };\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */ EntityDecoder.prototype.end = function() {\n var _a;\n switch(this.state){\n case $14589e7572d0431f$var$EntityDecoderState.NamedEntity:\n // Emit a named entity if we have one.\n return this.result !== 0 && (this.decodeMode !== $14589e7572d0431f$var$DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;\n // Otherwise, emit a numeric entity if we have one.\n case $14589e7572d0431f$var$EntityDecoderState.NumericDecimal:\n return this.emitNumericEntity(0, 2);\n case $14589e7572d0431f$var$EntityDecoderState.NumericHex:\n return this.emitNumericEntity(0, 3);\n case $14589e7572d0431f$var$EntityDecoderState.NumericStart:\n (_a = this.errors) === null || _a === void 0 || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n case $14589e7572d0431f$var$EntityDecoderState.EntityStart:\n // Return 0 if we have no entity.\n return 0;\n }\n };\n return EntityDecoder;\n}();\nmodule.exports.EntityDecoder = $14589e7572d0431f$var$EntityDecoder;\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */ function $14589e7572d0431f$var$getDecoder(decodeTree) {\n var ret = \"\";\n var decoder = new $14589e7572d0431f$var$EntityDecoder(decodeTree, function(str) {\n return ret += (0, $14589e7572d0431f$var$decode_codepoint_js_1.fromCodePoint)(str);\n });\n return function decodeWithTrie(str, decodeMode) {\n var lastIndex = 0;\n var offset = 0;\n while((offset = str.indexOf(\"&\", offset)) >= 0){\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n var len = decoder.write(str, // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n var result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */ function $14589e7572d0431f$var$determineBranch(decodeTree, current, nodeIdx, char) {\n var branchCount = (current & $14589e7572d0431f$var$BinTrieFlags.BRANCH_LENGTH) >> 7;\n var jumpOffset = current & $14589e7572d0431f$var$BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n var value = char - jumpOffset;\n return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n var lo = nodeIdx;\n var hi = lo + branchCount - 1;\n while(lo <= hi){\n var mid = lo + hi >>> 1;\n var midVal = decodeTree[mid];\n if (midVal < char) lo = mid + 1;\n else if (midVal > char) hi = mid - 1;\n else return decodeTree[mid + branchCount];\n }\n return -1;\n}\nmodule.exports.determineBranch = $14589e7572d0431f$var$determineBranch;\nvar $14589e7572d0431f$var$htmlDecoder = $14589e7572d0431f$var$getDecoder($14589e7572d0431f$var$decode_data_html_js_1.default);\nvar $14589e7572d0431f$var$xmlDecoder = $14589e7572d0431f$var$getDecoder($14589e7572d0431f$var$decode_data_xml_js_1.default);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */ function $14589e7572d0431f$var$decodeHTML(str, mode) {\n if (mode === void 0) mode = $14589e7572d0431f$var$DecodingMode.Legacy;\n return $14589e7572d0431f$var$htmlDecoder(str, mode);\n}\nmodule.exports.decodeHTML = $14589e7572d0431f$var$decodeHTML;\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */ function $14589e7572d0431f$var$decodeHTMLAttribute(str) {\n return $14589e7572d0431f$var$htmlDecoder(str, $14589e7572d0431f$var$DecodingMode.Attribute);\n}\nmodule.exports.decodeHTMLAttribute = $14589e7572d0431f$var$decodeHTMLAttribute;\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */ function $14589e7572d0431f$var$decodeHTMLStrict(str) {\n return $14589e7572d0431f$var$htmlDecoder(str, $14589e7572d0431f$var$DecodingMode.Strict);\n}\nmodule.exports.decodeHTMLStrict = $14589e7572d0431f$var$decodeHTMLStrict;\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */ function $14589e7572d0431f$var$decodeXML(str) {\n return $14589e7572d0431f$var$xmlDecoder(str, $14589e7572d0431f$var$DecodingMode.Strict);\n}\nmodule.exports.decodeXML = $14589e7572d0431f$var$decodeXML;\n\n});\nparcelRegister(\"5sG9R\", function(module, exports) {\n\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.default = new Uint16Array(// prettier-ignore\n'\\u1D41<\\xd5\\u0131\\u028A\\u049D\\u057B\\u05D0\\u0675\\u06DE\\u07A2\\u07D6\\u080F\\u0A4A\\u0A91\\u0DA1\\u0E6D\\u0F09\\u0F26\\u10CA\\u1228\\u12E1\\u1415\\u149D\\u14C3\\u14DF\\u1525\\0\\0\\0\\0\\0\\0\\u156B\\u16CD\\u198D\\u1C12\\u1DDD\\u1F7E\\u2060\\u21B0\\u228D\\u23C0\\u23FB\\u2442\\u2824\\u2912\\u2D08\\u2E48\\u2FCE\\u3016\\u32BA\\u3639\\u37AC\\u38FE\\u3A28\\u3A71\\u3AE0\\u3B2E\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803B\\xc6\\u40C6P\\u803B&\\u4026cute\\u803B\\xc1\\u40C1reve;\\u4102\\u0100iyx}rc\\u803B\\xc2\\u40C2;\\u4410r;\\uC000\\ud835\\udd04rave\\u803B\\xc0\\u40C0pha;\\u4391acr;\\u4100d;\\u6A53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uC000\\ud835\\udd38plyFunction;\\u6061ing\\u803B\\xc5\\u40C5\\u0100cs\\xbe\\xc3r;\\uC000\\ud835\\udc9cign;\\u6254ilde\\u803B\\xc3\\u40C3ml\\u803B\\xc4\\u40C4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011C\\u0122\\u0127\\u012A\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6AE7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010B\\u0114ause;\\u6235noullis;\\u612Ca;\\u4392r;\\uC000\\ud835\\udd05pf;\\uC000\\ud835\\udd39eve;\\u42D8c\\xf2\\u0113mpeq;\\u624E\\u0700HOacdefhilorsu\\u014D\\u0151\\u0156\\u0180\\u019E\\u01A2\\u01B5\\u01B7\\u01BA\\u01DC\\u0215\\u0273\\u0278\\u027Ecy;\\u4427PY\\u803B\\xa9\\u40A9\\u0180cpy\\u015D\\u0162\\u017Aute;\\u4106\\u0100;i\\u0167\\u0168\\u62D2talDifferentialD;\\u6145leys;\\u612D\\u0200aeio\\u0189\\u018E\\u0194\\u0198ron;\\u410Cdil\\u803B\\xc7\\u40C7rc;\\u4108nint;\\u6230ot;\\u410A\\u0100dn\\u01A7\\u01ADilla;\\u40B8terDot;\\u40B7\\xf2\\u017Fi;\\u43A7rcle\\u0200DMPT\\u01C7\\u01CB\\u01D1\\u01D6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01E2\\u01F8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020FoubleQuote;\\u601Duote;\\u6019\\u0200lnpu\\u021E\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6A74\\u0180git\\u022F\\u0236\\u023Aruent;\\u6261nt;\\u622FourIntegral;\\u622E\\u0100fr\\u024C\\u024E;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6A2Fcr;\\uC000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62D3ap;\\u624D\\u0580DJSZacefios\\u02A0\\u02AC\\u02B0\\u02B4\\u02B8\\u02CB\\u02D7\\u02E1\\u02E6\\u0333\\u048D\\u0100;o\\u0179\\u02A5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440F\\u0180grs\\u02BF\\u02C4\\u02C7ger;\\u6021r;\\u61A1hv;\\u6AE4\\u0100ay\\u02D0\\u02D5ron;\\u410E;\\u4414l\\u0100;t\\u02DD\\u02DE\\u6207a;\\u4394r;\\uC000\\ud835\\udd07\\u0100af\\u02EB\\u0327\\u0100cm\\u02F0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031Ccute;\\u40B4o\\u0174\\u030B\\u030D;\\u42D9bleAcute;\\u42DDrave;\\u4060ilde;\\u42DCond;\\u62C4ferentialD;\\u6146\\u0470\\u033D\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uC000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034D\\u40A8ot;\\u60DCqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03CF\\u03E2\\u03F8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037B\\xbb\\u0349nArrow;\\u61D3\\u0100eo\\u0387\\u03A4ft\\u0180ART\\u0390\\u0396\\u03A1rrow;\\u61D0ightArrow;\\u61D4e\\xe5\\u02CAng\\u0100LR\\u03AB\\u03C4eft\\u0100AR\\u03B3\\u03B9rrow;\\u67F8ightArrow;\\u67FAightArrow;\\u67F9ight\\u0100AT\\u03D8\\u03DErrow;\\u61D2ee;\\u62A8p\\u0241\\u03E9\\0\\0\\u03EFrrow;\\u61D1ownArrow;\\u61D5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042A\\u0430\\u045E\\u047F\\u037Crrow\\u0180;BU\\u041D\\u041E\\u0422\\u6193ar;\\u6913pArrow;\\u61F5reve;\\u4311eft\\u02D2\\u043A\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695Eector\\u0100;B\\u0459\\u045A\\u61BDar;\\u6956ight\\u01D4\\u0467\\0\\u0471eeVector;\\u695Fector\\u0100;B\\u047A\\u047B\\u61C1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62A4rrow;\\u61A7\\u0100ct\\u0492\\u0497r;\\uC000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04BD\\u04C0\\u04C4\\u04CB\\u04DE\\u04E2\\u04E7\\u04EE\\u04F5\\u0521\\u052F\\u0536\\u0552\\u055D\\u0560\\u0565G;\\u414AH\\u803B\\xd0\\u40D0cute\\u803B\\xc9\\u40C9\\u0180aiy\\u04D2\\u04D7\\u04DCron;\\u411Arc\\u803B\\xca\\u40CA;\\u442Dot;\\u4116r;\\uC000\\ud835\\udd08rave\\u803B\\xc8\\u40C8ement;\\u6208\\u0100ap\\u04FA\\u04FEcr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65FBerySmallSquare;\\u65AB\\u0100gp\\u0526\\u052Aon;\\u4118f;\\uC000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053C\\u0549l\\u0100;T\\u0542\\u0543\\u6A75ilde;\\u6242librium;\\u61CC\\u0100ci\\u0557\\u055Ar;\\u6130m;\\u6A73a;\\u4397ml\\u803B\\xcb\\u40CB\\u0100ip\\u056A\\u056Fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058D\\u05B2\\u05CCy;\\u4424r;\\uC000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05A3mallSquare;\\u65FCerySmallSquare;\\u65AA\\u0370\\u05BA\\0\\u05BF\\0\\0\\u05C4f;\\uC000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05CB\\u0600JTabcdfgorst\\u05E8\\u05EC\\u05EF\\u05FA\\u0600\\u0612\\u0616\\u061B\\u061D\\u0623\\u066C\\u0672cy;\\u4403\\u803B>\\u403Emma\\u0100;d\\u05F7\\u05F8\\u4393;\\u43DCreve;\\u411E\\u0180eiy\\u0607\\u060C\\u0610dil;\\u4122rc;\\u411C;\\u4413ot;\\u4120r;\\uC000\\ud835\\udd0a;\\u62D9pf;\\uC000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064E\\u0656\\u065B\\u0666qual\\u0100;L\\u063E\\u063F\\u6265ess;\\u62DBullEqual;\\u6267reater;\\u6AA2ess;\\u6277lantEqual;\\u6A7Eilde;\\u6273cr;\\uC000\\ud835\\udca2;\\u626B\\u0400Aacfiosu\\u0685\\u068B\\u0696\\u069B\\u069E\\u06AA\\u06BE\\u06CARDcy;\\u442A\\u0100ct\\u0690\\u0694ek;\\u42C7;\\u405Eirc;\\u4124r;\\u610ClbertSpace;\\u610B\\u01F0\\u06AF\\0\\u06B2f;\\u610DizontalLine;\\u6500\\u0100ct\\u06C3\\u06C5\\xf2\\u06A9rok;\\u4126mp\\u0144\\u06D0\\u06D8ownHum\\xf0\\u012Fqual;\\u624F\\u0700EJOacdfgmnostu\\u06FA\\u06FE\\u0703\\u0707\\u070E\\u071A\\u071E\\u0721\\u0728\\u0744\\u0778\\u078B\\u078F\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803B\\xcd\\u40CD\\u0100iy\\u0713\\u0718rc\\u803B\\xce\\u40CE;\\u4418ot;\\u4130r;\\u6111rave\\u803B\\xcc\\u40CC\\u0180;ap\\u0720\\u072F\\u073F\\u0100cg\\u0734\\u0737r;\\u412AinaryI;\\u6148lie\\xf3\\u03DD\\u01F4\\u0749\\0\\u0762\\u0100;e\\u074D\\u074E\\u622C\\u0100gr\\u0753\\u0758ral;\\u622Bsection;\\u62C2isible\\u0100CT\\u076C\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077F\\u0783\\u0788on;\\u412Ef;\\uC000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01EB\\u079A\\0\\u079Ecy;\\u4406l\\u803B\\xcf\\u40CF\\u0280cfosu\\u07AC\\u07B7\\u07BC\\u07C2\\u07D0\\u0100iy\\u07B1\\u07B5rc;\\u4134;\\u4419r;\\uC000\\ud835\\udd0dpf;\\uC000\\ud835\\udd41\\u01E3\\u07C7\\0\\u07CCr;\\uC000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07E4\\u07E8\\u07EC\\u07F1\\u07FD\\u0802\\u0808cy;\\u4425cy;\\u440Cppa;\\u439A\\u0100ey\\u07F6\\u07FBdil;\\u4136;\\u441Ar;\\uC000\\ud835\\udd0epf;\\uC000\\ud835\\udd42cr;\\uC000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082C\\u0850\\u0863\\u09B3\\u09B8\\u09C7\\u09CD\\u0A37\\u0A47cy;\\u4409\\u803B<\\u403C\\u0280cmnpr\\u0837\\u083C\\u0841\\u0844\\u084Dute;\\u4139bda;\\u439Bg;\\u67EAlacetrf;\\u6112r;\\u619E\\u0180aey\\u0857\\u085C\\u0861ron;\\u413Ddil;\\u413B;\\u441B\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087E\\u08A9\\u08B1\\u08E0\\u08E6\\u08FC\\u092F\\u095B\\u0390\\u096A\\u0100nr\\u0883\\u088FgleBracket;\\u67E8row\\u0180;BR\\u0899\\u089A\\u089E\\u6190ar;\\u61E4ightArrow;\\u61C6eiling;\\u6308o\\u01F5\\u08B7\\0\\u08C3bleBracket;\\u67E6n\\u01D4\\u08C8\\0\\u08D2eeVector;\\u6961ector\\u0100;B\\u08DB\\u08DC\\u61C3ar;\\u6959loor;\\u630Aight\\u0100AV\\u08EF\\u08F5rrow;\\u6194ector;\\u694E\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090A\\u0910\\u62A3rrow;\\u61A4ector;\\u695Aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62B2ar;\\u69CFqual;\\u62B4p\\u0180DTV\\u0937\\u0942\\u094CownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61BFar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61BCar;\\u6952ight\\xe1\\u039Cs\\u0300EFGLST\\u097E\\u098B\\u0995\\u099D\\u09A2\\u09ADqualGreater;\\u62DAullEqual;\\u6266reater;\\u6276ess;\\u6AA1lantEqual;\\u6A7Dilde;\\u6272r;\\uC000\\ud835\\udd0f\\u0100;e\\u09BD\\u09BE\\u62D8ftarrow;\\u61DAidot;\\u413F\\u0180npw\\u09D4\\u0A16\\u0A1Bg\\u0200LRlr\\u09DE\\u09F7\\u0A02\\u0A10eft\\u0100AR\\u09E6\\u09ECrrow;\\u67F5ightArrow;\\u67F7ightArrow;\\u67F6eft\\u0100ar\\u03B3\\u0A0Aight\\xe1\\u03BFight\\xe1\\u03CAf;\\uC000\\ud835\\udd43er\\u0100LR\\u0A22\\u0A2CeftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0A3E\\u0A40\\u0A42\\xf2\\u084C;\\u61B0rok;\\u4141;\\u626A\\u0400acefiosu\\u0A5A\\u0A5D\\u0A60\\u0A77\\u0A7C\\u0A85\\u0A8B\\u0A8Ep;\\u6905y;\\u441C\\u0100dl\\u0A65\\u0A6FiumSpace;\\u605Flintrf;\\u6133r;\\uC000\\ud835\\udd10nusPlus;\\u6213pf;\\uC000\\ud835\\udd44c\\xf2\\u0A76;\\u439C\\u0480Jacefostu\\u0AA3\\u0AA7\\u0AAD\\u0AC0\\u0B14\\u0B19\\u0D91\\u0D97\\u0D9Ecy;\\u440Acute;\\u4143\\u0180aey\\u0AB4\\u0AB9\\u0ABEron;\\u4147dil;\\u4145;\\u441D\\u0180gsw\\u0AC7\\u0AF0\\u0B0Eative\\u0180MTV\\u0AD3\\u0ADF\\u0AE8ediumSpace;\\u600Bhi\\u0100cn\\u0AE6\\u0AD8\\xeb\\u0AD9eryThi\\xee\\u0AD9ted\\u0100GL\\u0AF8\\u0B06reaterGreate\\xf2\\u0673essLes\\xf3\\u0A48Line;\\u400Ar;\\uC000\\ud835\\udd11\\u0200Bnpt\\u0B22\\u0B28\\u0B37\\u0B3Areak;\\u6060BreakingSpace;\\u40A0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0B55\\u0B56\\u0B6A\\u0B7C\\u0BA1\\u0BEB\\u0C04\\u0C5E\\u0C84\\u0CA6\\u0CD8\\u0D61\\u0D85\\u6AEC\\u0100ou\\u0B5B\\u0B64ngruent;\\u6262pCap;\\u626DoubleVerticalBar;\\u6226\\u0180lqx\\u0B83\\u0B8A\\u0B9Bement;\\u6209ual\\u0100;T\\u0B92\\u0B93\\u6260ilde;\\uC000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0BB6\\u0BB7\\u0BBD\\u0BC9\\u0BD3\\u0BD8\\u0BE5\\u626Fqual;\\u6271ullEqual;\\uC000\\u2267\\u0338reater;\\uC000\\u226B\\u0338ess;\\u6279lantEqual;\\uC000\\u2A7E\\u0338ilde;\\u6275ump\\u0144\\u0BF2\\u0BFDownHump;\\uC000\\u224E\\u0338qual;\\uC000\\u224F\\u0338e\\u0100fs\\u0C0A\\u0C27tTriangle\\u0180;BE\\u0C1A\\u0C1B\\u0C21\\u62EAar;\\uC000\\u29CF\\u0338qual;\\u62ECs\\u0300;EGLST\\u0C35\\u0C36\\u0C3C\\u0C44\\u0C4B\\u0C58\\u626Equal;\\u6270reater;\\u6278ess;\\uC000\\u226A\\u0338lantEqual;\\uC000\\u2A7D\\u0338ilde;\\u6274ested\\u0100GL\\u0C68\\u0C79reaterGreater;\\uC000\\u2AA2\\u0338essLess;\\uC000\\u2AA1\\u0338recedes\\u0180;ES\\u0C92\\u0C93\\u0C9B\\u6280qual;\\uC000\\u2AAF\\u0338lantEqual;\\u62E0\\u0100ei\\u0CAB\\u0CB9verseElement;\\u620CghtTriangle\\u0180;BE\\u0CCB\\u0CCC\\u0CD2\\u62EBar;\\uC000\\u29D0\\u0338qual;\\u62ED\\u0100qu\\u0CDD\\u0D0CuareSu\\u0100bp\\u0CE8\\u0CF9set\\u0100;E\\u0CF0\\u0CF3\\uC000\\u228F\\u0338qual;\\u62E2erset\\u0100;E\\u0D03\\u0D06\\uC000\\u2290\\u0338qual;\\u62E3\\u0180bcp\\u0D13\\u0D24\\u0D4Eset\\u0100;E\\u0D1B\\u0D1E\\uC000\\u2282\\u20D2qual;\\u6288ceeds\\u0200;EST\\u0D32\\u0D33\\u0D3B\\u0D46\\u6281qual;\\uC000\\u2AB0\\u0338lantEqual;\\u62E1ilde;\\uC000\\u227F\\u0338erset\\u0100;E\\u0D58\\u0D5B\\uC000\\u2283\\u20D2qual;\\u6289ilde\\u0200;EFT\\u0D6E\\u0D6F\\u0D75\\u0D7F\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uC000\\ud835\\udca9ilde\\u803B\\xd1\\u40D1;\\u439D\\u0700Eacdfgmoprstuv\\u0DBD\\u0DC2\\u0DC9\\u0DD5\\u0DDB\\u0DE0\\u0DE7\\u0DFC\\u0E02\\u0E20\\u0E22\\u0E32\\u0E3F\\u0E44lig;\\u4152cute\\u803B\\xd3\\u40D3\\u0100iy\\u0DCE\\u0DD3rc\\u803B\\xd4\\u40D4;\\u441Eblac;\\u4150r;\\uC000\\ud835\\udd12rave\\u803B\\xd2\\u40D2\\u0180aei\\u0DEE\\u0DF2\\u0DF6cr;\\u414Cga;\\u43A9cron;\\u439Fpf;\\uC000\\ud835\\udd46enCurly\\u0100DQ\\u0E0E\\u0E1AoubleQuote;\\u601Cuote;\\u6018;\\u6A54\\u0100cl\\u0E27\\u0E2Cr;\\uC000\\ud835\\udcaaash\\u803B\\xd8\\u40D8i\\u016C\\u0E37\\u0E3Cde\\u803B\\xd5\\u40D5es;\\u6A37ml\\u803B\\xd6\\u40D6er\\u0100BP\\u0E4B\\u0E60\\u0100ar\\u0E50\\u0E53r;\\u603Eac\\u0100ek\\u0E5A\\u0E5C;\\u63DEet;\\u63B4arenthesis;\\u63DC\\u0480acfhilors\\u0E7F\\u0E87\\u0E8A\\u0E8F\\u0E92\\u0E94\\u0E9D\\u0EB0\\u0EFCrtialD;\\u6202y;\\u441Fr;\\uC000\\ud835\\udd13i;\\u43A6;\\u43A0usMinus;\\u40B1\\u0100ip\\u0EA2\\u0EADncareplan\\xe5\\u069Df;\\u6119\\u0200;eio\\u0EB9\\u0EBA\\u0EE0\\u0EE4\\u6ABBcedes\\u0200;EST\\u0EC8\\u0EC9\\u0ECF\\u0EDA\\u627Aqual;\\u6AAFlantEqual;\\u627Cilde;\\u627Eme;\\u6033\\u0100dp\\u0EE9\\u0EEEuct;\\u620Fortion\\u0100;a\\u0225\\u0EF9l;\\u621D\\u0100ci\\u0F01\\u0F06r;\\uC000\\ud835\\udcab;\\u43A8\\u0200Ufos\\u0F11\\u0F16\\u0F1B\\u0F1FOT\\u803B\"\\u4022r;\\uC000\\ud835\\udd14pf;\\u611Acr;\\uC000\\ud835\\udcac\\u0600BEacefhiorsu\\u0F3E\\u0F43\\u0F47\\u0F60\\u0F73\\u0FA7\\u0FAA\\u0FAD\\u1096\\u10A9\\u10B4\\u10BEarr;\\u6910G\\u803B\\xae\\u40AE\\u0180cnr\\u0F4E\\u0F53\\u0F56ute;\\u4154g;\\u67EBr\\u0100;t\\u0F5C\\u0F5D\\u61A0l;\\u6916\\u0180aey\\u0F67\\u0F6C\\u0F71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0F78\\u0F79\\u611Cerse\\u0100EU\\u0F82\\u0F99\\u0100lq\\u0F87\\u0F8Eement;\\u620Builibrium;\\u61CBpEquilibrium;\\u696Fr\\xbb\\u0F79o;\\u43A1ght\\u0400ACDFTUVa\\u0FC1\\u0FEB\\u0FF3\\u1022\\u1028\\u105B\\u1087\\u03D8\\u0100nr\\u0FC6\\u0FD2gleBracket;\\u67E9row\\u0180;BL\\u0FDC\\u0FDD\\u0FE1\\u6192ar;\\u61E5eftArrow;\\u61C4eiling;\\u6309o\\u01F5\\u0FF9\\0\\u1005bleBracket;\\u67E7n\\u01D4\\u100A\\0\\u1014eeVector;\\u695Dector\\u0100;B\\u101D\\u101E\\u61C2ar;\\u6955loor;\\u630B\\u0100er\\u102D\\u1043e\\u0180;AV\\u1035\\u1036\\u103C\\u62A2rrow;\\u61A6ector;\\u695Biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62B3ar;\\u69D0qual;\\u62B5p\\u0180DTV\\u1063\\u106E\\u1078ownVector;\\u694FeeVector;\\u695Cector\\u0100;B\\u1082\\u1083\\u61BEar;\\u6954ector\\u0100;B\\u1091\\u1092\\u61C0ar;\\u6953\\u0100pu\\u109B\\u109Ef;\\u611DndImplies;\\u6970ightarrow;\\u61DB\\u0100ch\\u10B9\\u10BCr;\\u611B;\\u61B1leDelayed;\\u69F4\\u0680HOacfhimoqstu\\u10E4\\u10F1\\u10F7\\u10FD\\u1119\\u111E\\u1151\\u1156\\u1161\\u1167\\u11B5\\u11BB\\u11BF\\u0100Cc\\u10E9\\u10EEHcy;\\u4429y;\\u4428FTcy;\\u442Ccute;\\u415A\\u0280;aeiy\\u1108\\u1109\\u110E\\u1113\\u1117\\u6ABCron;\\u4160dil;\\u415Erc;\\u415C;\\u4421r;\\uC000\\ud835\\udd16ort\\u0200DLRU\\u112A\\u1134\\u113E\\u1149ownArrow\\xbb\\u041EeftArrow\\xbb\\u089AightArrow\\xbb\\u0FDDpArrow;\\u6191gma;\\u43A3allCircle;\\u6218pf;\\uC000\\ud835\\udd4a\\u0272\\u116D\\0\\0\\u1170t;\\u621Aare\\u0200;ISU\\u117B\\u117C\\u1189\\u11AF\\u65A1ntersection;\\u6293u\\u0100bp\\u118F\\u119Eset\\u0100;E\\u1197\\u1198\\u628Fqual;\\u6291erset\\u0100;E\\u11A8\\u11A9\\u6290qual;\\u6292nion;\\u6294cr;\\uC000\\ud835\\udcaear;\\u62C6\\u0200bcmp\\u11C8\\u11DB\\u1209\\u120B\\u0100;s\\u11CD\\u11CE\\u62D0et\\u0100;E\\u11CD\\u11D5qual;\\u6286\\u0100ch\\u11E0\\u1205eeds\\u0200;EST\\u11ED\\u11EE\\u11F4\\u11FF\\u627Bqual;\\u6AB0lantEqual;\\u627Dilde;\\u627FTh\\xe1\\u0F8C;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62D1rset\\u0100;E\\u121C\\u121D\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123E\\u1244\\u1249\\u1255\\u125E\\u1271\\u1276\\u129F\\u12C2\\u12C8\\u12D1ORN\\u803B\\xde\\u40DEADE;\\u6122\\u0100Hc\\u124E\\u1252cy;\\u440By;\\u4426\\u0100bu\\u125A\\u125C;\\u4009;\\u43A4\\u0180aey\\u1265\\u126A\\u126Fron;\\u4164dil;\\u4162;\\u4422r;\\uC000\\ud835\\udd17\\u0100ei\\u127B\\u1289\\u01F2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128E\\u1298kSpace;\\uC000\\u205F\\u200ASpace;\\u6009lde\\u0200;EFT\\u12AB\\u12AC\\u12B2\\u12BC\\u623Cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uC000\\ud835\\udd4bipleDot;\\u60DB\\u0100ct\\u12D6\\u12DBr;\\uC000\\ud835\\udcafrok;\\u4166\\u0AE1\\u12F7\\u130E\\u131A\\u1326\\0\\u132C\\u1331\\0\\0\\0\\0\\0\\u1338\\u133D\\u1377\\u1385\\0\\u13FF\\u1404\\u140A\\u1410\\u0100cr\\u12FB\\u1301ute\\u803B\\xda\\u40DAr\\u0100;o\\u1307\\u1308\\u619Fcir;\\u6949r\\u01E3\\u1313\\0\\u1316y;\\u440Eve;\\u416C\\u0100iy\\u131E\\u1323rc\\u803B\\xdb\\u40DB;\\u4423blac;\\u4170r;\\uC000\\ud835\\udd18rave\\u803B\\xd9\\u40D9acr;\\u416A\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135D\\u0100ar\\u134D\\u1350r;\\u405Fac\\u0100ek\\u1357\\u1359;\\u63DFet;\\u63B5arenthesis;\\u63DDon\\u0100;P\\u1370\\u1371\\u62C3lus;\\u628E\\u0100gp\\u137B\\u137Fon;\\u4172f;\\uC000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13AE\\u13B8\\u13C4\\u03E8\\u13D2\\u13D7\\u13F3rrow\\u0180;BD\\u1150\\u13A0\\u13A4ar;\\u6912ownArrow;\\u61C5ownArrow;\\u6195quilibrium;\\u696Eee\\u0100;A\\u13CB\\u13CC\\u62A5rrow;\\u61A5own\\xe1\\u03F3er\\u0100LR\\u13DE\\u13E8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13F9\\u13FA\\u43D2on;\\u43A5ing;\\u416Ecr;\\uC000\\ud835\\udcb0ilde;\\u4168ml\\u803B\\xdc\\u40DC\\u0480Dbcdefosv\\u1427\\u142C\\u1430\\u1433\\u143E\\u1485\\u148A\\u1490\\u1496ash;\\u62ABar;\\u6AEBy;\\u4412ash\\u0100;l\\u143B\\u143C\\u62A9;\\u6AE6\\u0100er\\u1443\\u1445;\\u62C1\\u0180bty\\u144C\\u1450\\u147Aar;\\u6016\\u0100;i\\u144F\\u1455cal\\u0200BLST\\u1461\\u1465\\u146A\\u1474ar;\\u6223ine;\\u407Ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600Ar;\\uC000\\ud835\\udd19pf;\\uC000\\ud835\\udd4dcr;\\uC000\\ud835\\udcb1dash;\\u62AA\\u0280cefos\\u14A7\\u14AC\\u14B1\\u14B6\\u14BCirc;\\u4174dge;\\u62C0r;\\uC000\\ud835\\udd1apf;\\uC000\\ud835\\udd4ecr;\\uC000\\ud835\\udcb2\\u0200fios\\u14CB\\u14D0\\u14D2\\u14D8r;\\uC000\\ud835\\udd1b;\\u439Epf;\\uC000\\ud835\\udd4fcr;\\uC000\\ud835\\udcb3\\u0480AIUacfosu\\u14F1\\u14F5\\u14F9\\u14FD\\u1504\\u150F\\u1514\\u151A\\u1520cy;\\u442Fcy;\\u4407cy;\\u442Ecute\\u803B\\xdd\\u40DD\\u0100iy\\u1509\\u150Drc;\\u4176;\\u442Br;\\uC000\\ud835\\udd1cpf;\\uC000\\ud835\\udd50cr;\\uC000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153F\\u154B\\u154F\\u155D\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417D;\\u4417ot;\\u417B\\u01F2\\u1554\\0\\u155BoWidt\\xe8\\u0AD9a;\\u4396r;\\u6128pf;\\u6124cr;\\uC000\\ud835\\udcb5\\u0BE1\\u1583\\u158A\\u1590\\0\\u15B0\\u15B6\\u15BF\\0\\0\\0\\0\\u15C6\\u15DB\\u15EB\\u165F\\u166D\\0\\u1695\\u169B\\u16B2\\u16B9\\0\\u16BEcute\\u803B\\xe1\\u40E1reve;\\u4103\\u0300;Ediuy\\u159C\\u159D\\u15A1\\u15A3\\u15A8\\u15AD\\u623E;\\uC000\\u223E\\u0333;\\u623Frc\\u803B\\xe2\\u40E2te\\u80BB\\xb4\\u0306;\\u4430lig\\u803B\\xe6\\u40E6\\u0100;r\\xb2\\u15BA;\\uC000\\ud835\\udd1erave\\u803B\\xe0\\u40E0\\u0100ep\\u15CA\\u15D6\\u0100fp\\u15CF\\u15D4sym;\\u6135\\xe8\\u15D3ha;\\u43B1\\u0100ap\\u15DFc\\u0100cl\\u15E4\\u15E7r;\\u4101g;\\u6A3F\\u0264\\u15F0\\0\\0\\u160A\\u0280;adsv\\u15FA\\u15FB\\u15FF\\u1601\\u1607\\u6227nd;\\u6A55;\\u6A5Clope;\\u6A58;\\u6A5A\\u0380;elmrsz\\u1618\\u1619\\u161B\\u161E\\u163F\\u164F\\u1659\\u6220;\\u69A4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163A\\u163C\\u163E;\\u69A8;\\u69A9;\\u69AA;\\u69AB;\\u69AC;\\u69AD;\\u69AE;\\u69AFt\\u0100;v\\u1645\\u1646\\u621Fb\\u0100;d\\u164C\\u164D\\u62BE;\\u699D\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637C\\u0100gp\\u1663\\u1667on;\\u4105f;\\uC000\\ud835\\udd52\\u0380;Eaeiop\\u12C1\\u167B\\u167D\\u1682\\u1684\\u1687\\u168A;\\u6A70cir;\\u6A6F;\\u624Ad;\\u624Bs;\\u4027rox\\u0100;e\\u12C1\\u1692\\xf1\\u1683ing\\u803B\\xe5\\u40E5\\u0180cty\\u16A1\\u16A6\\u16A8r;\\uC000\\ud835\\udcb6;\\u402Amp\\u0100;e\\u12C1\\u16AF\\xf1\\u0288ilde\\u803B\\xe3\\u40E3ml\\u803B\\xe4\\u40E4\\u0100ci\\u16C2\\u16C8onin\\xf4\\u0272nt;\\u6A11\\u0800Nabcdefiklnoprsu\\u16ED\\u16F1\\u1730\\u173C\\u1743\\u1748\\u1778\\u177D\\u17E0\\u17E6\\u1839\\u1850\\u170D\\u193D\\u1948\\u1970ot;\\u6AED\\u0100cr\\u16F6\\u171Ek\\u0200ceps\\u1700\\u1705\\u170D\\u1713ong;\\u624Cpsilon;\\u43F6rime;\\u6035im\\u0100;e\\u171A\\u171B\\u623Dq;\\u62CD\\u0176\\u1722\\u1726ee;\\u62BDed\\u0100;g\\u172C\\u172D\\u6305e\\xbb\\u172Drk\\u0100;t\\u135C\\u1737brk;\\u63B6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601E\\u0280cmprt\\u1753\\u175B\\u1761\\u1764\\u1768aus\\u0100;e\\u010A\\u0109ptyv;\\u69B0s\\xe9\\u170Cno\\xf5\\u0113\\u0180ahw\\u176F\\u1771\\u1773;\\u43B2;\\u6136een;\\u626Cr;\\uC000\\ud835\\udd1fg\\u0380costuvw\\u178D\\u179D\\u17B3\\u17C1\\u17D5\\u17DB\\u17DE\\u0180aiu\\u1794\\u1796\\u179A\\xf0\\u0760rc;\\u65EFp\\xbb\\u1371\\u0180dpt\\u17A4\\u17A8\\u17ADot;\\u6A00lus;\\u6A01imes;\\u6A02\\u0271\\u17B9\\0\\0\\u17BEcup;\\u6A06ar;\\u6605riangle\\u0100du\\u17CD\\u17D2own;\\u65BDp;\\u65B3plus;\\u6A04e\\xe5\\u1444\\xe5\\u14ADarow;\\u690D\\u0180ako\\u17ED\\u1826\\u1835\\u0100cn\\u17F2\\u1823k\\u0180lst\\u17FA\\u05AB\\u1802ozenge;\\u69EBriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181D\\u65B4own;\\u65BEeft;\\u65C2ight;\\u65B8k;\\u6423\\u01B1\\u182B\\0\\u1833\\u01B2\\u182F\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183E\\u184D\\u0100;q\\u1843\\u1846\\uC000=\\u20E5uiv;\\uC000\\u2261\\u20E5t;\\u6310\\u0200ptwx\\u1859\\u185E\\u1867\\u186Cf;\\uC000\\ud835\\udd53\\u0100;t\\u13CB\\u1863om\\xbb\\u13CCtie;\\u62C8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18AA\\u18BB\\u18D7\\u18DB\\u18EC\\u18FF\\u1905\\u190A\\u1910\\u1921\\u0200LRlr\\u188E\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18A1\\u18A2\\u18A4\\u18A6\\u18A8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18B3\\u18B5\\u18B7\\u18B9;\\u655D;\\u655A;\\u655C;\\u6559\\u0380;HLRhlr\\u18CA\\u18CB\\u18CD\\u18CF\\u18D1\\u18D3\\u18D5\\u6551;\\u656C;\\u6563;\\u6560;\\u656B;\\u6562;\\u655Fox;\\u69C9\\u0200LRlr\\u18E4\\u18E6\\u18E8\\u18EA;\\u6555;\\u6552;\\u6510;\\u650C\\u0280;DUdu\\u06BD\\u18F7\\u18F9\\u18FB\\u18FD;\\u6565;\\u6568;\\u652C;\\u6534inus;\\u629Flus;\\u629Eimes;\\u62A0\\u0200LRlr\\u1919\\u191B\\u191D\\u191F;\\u655B;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193B\\u6502;\\u656A;\\u6561;\\u655E;\\u653C;\\u6524;\\u651C\\u0100ev\\u0123\\u1942bar\\u803B\\xa6\\u40A6\\u0200ceio\\u1951\\u1956\\u195A\\u1960r;\\uC000\\ud835\\udcb7mi;\\u604Fm\\u0100;e\\u171A\\u171Cl\\u0180;bh\\u1968\\u1969\\u196B\\u405C;\\u69C5sub;\\u67C8\\u016C\\u1974\\u197El\\u0100;e\\u1979\\u197A\\u6022t\\xbb\\u197Ap\\u0180;Ee\\u012F\\u1985\\u1987;\\u6AAE\\u0100;q\\u06DC\\u06DB\\u0CE1\\u19A7\\0\\u19E8\\u1A11\\u1A15\\u1A32\\0\\u1A37\\u1A50\\0\\0\\u1AB4\\0\\0\\u1AC1\\0\\0\\u1B21\\u1B2E\\u1B4D\\u1B52\\0\\u1BFD\\0\\u1C0C\\u0180cpr\\u19AD\\u19B2\\u19DDute;\\u4107\\u0300;abcds\\u19BF\\u19C0\\u19C4\\u19CA\\u19D5\\u19D9\\u6229nd;\\u6A44rcup;\\u6A49\\u0100au\\u19CF\\u19D2p;\\u6A4Bp;\\u6A47ot;\\u6A40;\\uC000\\u2229\\uFE00\\u0100eo\\u19E2\\u19E5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19F0\\u19FB\\u1A01\\u1A05\\u01F0\\u19F5\\0\\u19F8s;\\u6A4Don;\\u410Ddil\\u803B\\xe7\\u40E7rc;\\u4109ps\\u0100;s\\u1A0C\\u1A0D\\u6A4Cm;\\u6A50ot;\\u410B\\u0180dmn\\u1A1B\\u1A20\\u1A26il\\u80BB\\xb8\\u01ADptyv;\\u69B2t\\u8100\\xa2;e\\u1A2D\\u1A2E\\u40A2r\\xe4\\u01B2r;\\uC000\\ud835\\udd20\\u0180cei\\u1A3D\\u1A40\\u1A4Dy;\\u4447ck\\u0100;m\\u1A47\\u1A48\\u6713ark\\xbb\\u1A48;\\u43C7r\\u0380;Ecefms\\u1A5F\\u1A60\\u1A62\\u1A6B\\u1AA4\\u1AAA\\u1AAE\\u65CB;\\u69C3\\u0180;el\\u1A69\\u1A6A\\u1A6D\\u42C6q;\\u6257e\\u0261\\u1A74\\0\\0\\u1A88rrow\\u0100lr\\u1A7C\\u1A81eft;\\u61BAight;\\u61BB\\u0280RSacd\\u1A92\\u1A94\\u1A96\\u1A9A\\u1A9F\\xbb\\u0F47;\\u64C8st;\\u629Birc;\\u629Aash;\\u629Dnint;\\u6A10id;\\u6AEFcir;\\u69C2ubs\\u0100;u\\u1ABB\\u1ABC\\u6663it\\xbb\\u1ABC\\u02EC\\u1AC7\\u1AD4\\u1AFA\\0\\u1B0Aon\\u0100;e\\u1ACD\\u1ACE\\u403A\\u0100;q\\xc7\\xc6\\u026D\\u1AD9\\0\\0\\u1AE2a\\u0100;t\\u1ADE\\u1ADF\\u402C;\\u4040\\u0180;fl\\u1AE8\\u1AE9\\u1AEB\\u6201\\xee\\u1160e\\u0100mx\\u1AF1\\u1AF6ent\\xbb\\u1AE9e\\xf3\\u024D\\u01E7\\u1AFE\\0\\u1B07\\u0100;d\\u12BB\\u1B02ot;\\u6A6Dn\\xf4\\u0246\\u0180fry\\u1B10\\u1B14\\u1B17;\\uC000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1B1Dr;\\u6117\\u0100ao\\u1B25\\u1B29rr;\\u61B5ss;\\u6717\\u0100cu\\u1B32\\u1B37r;\\uC000\\ud835\\udcb8\\u0100bp\\u1B3C\\u1B44\\u0100;e\\u1B41\\u1B42\\u6ACF;\\u6AD1\\u0100;e\\u1B49\\u1B4A\\u6AD0;\\u6AD2dot;\\u62EF\\u0380delprvw\\u1B60\\u1B6C\\u1B77\\u1B82\\u1BAC\\u1BD4\\u1BF9arr\\u0100lr\\u1B68\\u1B6A;\\u6938;\\u6935\\u0270\\u1B72\\0\\0\\u1B75r;\\u62DEc;\\u62DFarr\\u0100;p\\u1B7F\\u1B80\\u61B6;\\u693D\\u0300;bcdos\\u1B8F\\u1B90\\u1B96\\u1BA1\\u1BA5\\u1BA8\\u622Arcap;\\u6A48\\u0100au\\u1B9B\\u1B9Ep;\\u6A46p;\\u6A4Aot;\\u628Dr;\\u6A45;\\uC000\\u222A\\uFE00\\u0200alrv\\u1BB5\\u1BBF\\u1BDE\\u1BE3rr\\u0100;m\\u1BBC\\u1BBD\\u61B7;\\u693Cy\\u0180evw\\u1BC7\\u1BD4\\u1BD8q\\u0270\\u1BCE\\0\\0\\u1BD2re\\xe3\\u1B73u\\xe3\\u1B75ee;\\u62CEedge;\\u62CFen\\u803B\\xa4\\u40A4earrow\\u0100lr\\u1BEE\\u1BF3eft\\xbb\\u1B80ight\\xbb\\u1BBDe\\xe4\\u1BDD\\u0100ci\\u1C01\\u1C07onin\\xf4\\u01F7nt;\\u6231lcty;\\u632D\\u0980AHabcdefhijlorstuwz\\u1C38\\u1C3B\\u1C3F\\u1C5D\\u1C69\\u1C75\\u1C8A\\u1C9E\\u1CAC\\u1CB7\\u1CFB\\u1CFF\\u1D0D\\u1D7B\\u1D91\\u1DAB\\u1DBB\\u1DC6\\u1DCDr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1C48\\u1C4D\\u1C52\\u1C54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1C5A\\u1C5B\\u6010\\xbb\\u090A\\u016B\\u1C61\\u1C67arow;\\u690Fa\\xe3\\u0315\\u0100ay\\u1C6E\\u1C73ron;\\u410F;\\u4434\\u0180;ao\\u0332\\u1C7C\\u1C84\\u0100gr\\u02BF\\u1C81r;\\u61CAtseq;\\u6A77\\u0180glm\\u1C91\\u1C94\\u1C98\\u803B\\xb0\\u40B0ta;\\u43B4ptyv;\\u69B1\\u0100ir\\u1CA3\\u1CA8sht;\\u697F;\\uC000\\ud835\\udd21ar\\u0100lr\\u1CB3\\u1CB5\\xbb\\u08DC\\xbb\\u101E\\u0280aegsv\\u1CC2\\u0378\\u1CD6\\u1CDC\\u1CE0m\\u0180;os\\u0326\\u1CCA\\u1CD4nd\\u0100;s\\u0326\\u1CD1uit;\\u6666amma;\\u43DDin;\\u62F2\\u0180;io\\u1CE7\\u1CE8\\u1CF8\\u40F7de\\u8100\\xf7;o\\u1CE7\\u1CF0ntimes;\\u62C7n\\xf8\\u1CF7cy;\\u4452c\\u026F\\u1D06\\0\\0\\u1D0Arn;\\u631Eop;\\u630D\\u0280lptuw\\u1D18\\u1D1D\\u1D22\\u1D49\\u1D55lar;\\u4024f;\\uC000\\ud835\\udd55\\u0280;emps\\u030B\\u1D2D\\u1D37\\u1D3D\\u1D42q\\u0100;d\\u0352\\u1D33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62A1blebarwedg\\xe5\\xfan\\u0180adh\\u112E\\u1D5D\\u1D67ownarrow\\xf3\\u1C83arpoon\\u0100lr\\u1D72\\u1D76ef\\xf4\\u1CB4igh\\xf4\\u1CB6\\u0162\\u1D7F\\u1D85karo\\xf7\\u0F42\\u026F\\u1D8A\\0\\0\\u1D8Ern;\\u631Fop;\\u630C\\u0180cot\\u1D98\\u1DA3\\u1DA6\\u0100ry\\u1D9D\\u1DA1;\\uC000\\ud835\\udcb9;\\u4455l;\\u69F6rok;\\u4111\\u0100dr\\u1DB0\\u1DB4ot;\\u62F1i\\u0100;f\\u1DBA\\u1816\\u65BF\\u0100ah\\u1DC0\\u1DC3r\\xf2\\u0429a\\xf2\\u0FA6angle;\\u69A6\\u0100ci\\u1DD2\\u1DD5y;\\u445Fgrarr;\\u67FF\\u0900Dacdefglmnopqrstux\\u1E01\\u1E09\\u1E19\\u1E38\\u0578\\u1E3C\\u1E49\\u1E61\\u1E7E\\u1EA5\\u1EAF\\u1EBD\\u1EE1\\u1F2A\\u1F37\\u1F44\\u1F4E\\u1F5A\\u0100Do\\u1E06\\u1D34o\\xf4\\u1C89\\u0100cs\\u1E0E\\u1E14ute\\u803B\\xe9\\u40E9ter;\\u6A6E\\u0200aioy\\u1E22\\u1E27\\u1E31\\u1E36ron;\\u411Br\\u0100;c\\u1E2D\\u1E2E\\u6256\\u803B\\xea\\u40EAlon;\\u6255;\\u444Dot;\\u4117\\u0100Dr\\u1E41\\u1E45ot;\\u6252;\\uC000\\ud835\\udd22\\u0180;rs\\u1E50\\u1E51\\u1E57\\u6A9Aave\\u803B\\xe8\\u40E8\\u0100;d\\u1E5C\\u1E5D\\u6A96ot;\\u6A98\\u0200;ils\\u1E6A\\u1E6B\\u1E72\\u1E74\\u6A99nters;\\u63E7;\\u6113\\u0100;d\\u1E79\\u1E7A\\u6A95ot;\\u6A97\\u0180aps\\u1E85\\u1E89\\u1E97cr;\\u4113ty\\u0180;sv\\u1E92\\u1E93\\u1E95\\u6205et\\xbb\\u1E93p\\u01001;\\u1E9D\\u1EA4\\u0133\\u1EA1\\u1EA3;\\u6004;\\u6005\\u6003\\u0100gs\\u1EAA\\u1EAC;\\u414Bp;\\u6002\\u0100gp\\u1EB4\\u1EB8on;\\u4119f;\\uC000\\ud835\\udd56\\u0180als\\u1EC4\\u1ECE\\u1ED2r\\u0100;s\\u1ECA\\u1ECB\\u62D5l;\\u69E3us;\\u6A71i\\u0180;lv\\u1EDA\\u1EDB\\u1EDF\\u43B5on\\xbb\\u1EDB;\\u43F5\\u0200csuv\\u1EEA\\u1EF3\\u1F0B\\u1F23\\u0100io\\u1EEF\\u1E31rc\\xbb\\u1E2E\\u0269\\u1EF9\\0\\0\\u1EFB\\xed\\u0548ant\\u0100gl\\u1F02\\u1F06tr\\xbb\\u1E5Dess\\xbb\\u1E7A\\u0180aei\\u1F12\\u1F16\\u1F1Als;\\u403Dst;\\u625Fv\\u0100;D\\u0235\\u1F20D;\\u6A78parsl;\\u69E5\\u0100Da\\u1F2F\\u1F33ot;\\u6253rr;\\u6971\\u0180cdi\\u1F3E\\u1F41\\u1EF8r;\\u612Fo\\xf4\\u0352\\u0100ah\\u1F49\\u1F4B;\\u43B7\\u803B\\xf0\\u40F0\\u0100mr\\u1F53\\u1F57l\\u803B\\xeb\\u40EBo;\\u60AC\\u0180cip\\u1F61\\u1F64\\u1F67l;\\u4021s\\xf4\\u056E\\u0100eo\\u1F6C\\u1F74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09E1\\u1F92\\0\\u1F9E\\0\\u1FA1\\u1FA7\\0\\0\\u1FC6\\u1FCC\\0\\u1FD3\\0\\u1FE6\\u1FEA\\u2000\\0\\u2008\\u205Allingdotse\\xf1\\u1E44y;\\u4444male;\\u6640\\u0180ilr\\u1FAD\\u1FB3\\u1FC1lig;\\u8000\\uFB03\\u0269\\u1FB9\\0\\0\\u1FBDg;\\u8000\\uFB00ig;\\u8000\\uFB04;\\uC000\\ud835\\udd23lig;\\u8000\\uFB01lig;\\uC000fj\\u0180alt\\u1FD9\\u1FDC\\u1FE1t;\\u666Dig;\\u8000\\uFB02ns;\\u65B1of;\\u4192\\u01F0\\u1FEE\\0\\u1FF3f;\\uC000\\ud835\\udd57\\u0100ak\\u05BF\\u1FF7\\u0100;v\\u1FFC\\u1FFD\\u62D4;\\u6AD9artint;\\u6A0D\\u0100ao\\u200C\\u2055\\u0100cs\\u2011\\u2052\\u03B1\\u201A\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03B2\\u2022\\u2025\\u2027\\u202A\\u202C\\0\\u202E\\u803B\\xbd\\u40BD;\\u6153\\u803B\\xbc\\u40BC;\\u6155;\\u6159;\\u615B\\u01B3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02B4\\u203E\\u2041\\0\\0\\u2043\\u803B\\xbe\\u40BE;\\u6157;\\u615C5;\\u6158\\u01B6\\u204C\\0\\u204E;\\u615A;\\u615D8;\\u615El;\\u6044wn;\\u6322cr;\\uC000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209F\\u20A5\\u20B0\\u20B4\\u20F0\\u20F5\\u20FA\\u20FF\\u2103\\u2112\\u2138\\u0317\\u213E\\u2152\\u219E\\u0100;l\\u064D\\u2087;\\u6A8C\\u0180cmp\\u2090\\u2095\\u209Dute;\\u41F5ma\\u0100;d\\u209C\\u1CDA\\u43B3;\\u6A86reve;\\u411F\\u0100iy\\u20AA\\u20AErc;\\u411D;\\u4433ot;\\u4121\\u0200;lqs\\u063E\\u0642\\u20BD\\u20C9\\u0180;qs\\u063E\\u064C\\u20C4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20D2\\u20D5\\u20E5c;\\u6AA9ot\\u0100;o\\u20DC\\u20DD\\u6A80\\u0100;l\\u20E2\\u20E3\\u6A82;\\u6A84\\u0100;e\\u20EA\\u20ED\\uC000\\u22DB\\uFE00s;\\u6A94r;\\uC000\\ud835\\udd24\\u0100;g\\u0673\\u061Bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065A\\u210C\\u210E\\u2110;\\u6A92;\\u6AA5;\\u6AA4\\u0200Eaes\\u211B\\u211D\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6A8Arox\\xbb\\u2124\\u0100;q\\u212E\\u212F\\u6A88\\u0100;q\\u212E\\u211Bim;\\u62E7pf;\\uC000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610Am\\u0180;el\\u066B\\u214E\\u2150;\\u6A8E;\\u6A90\\u8300>;cdlqr\\u05EE\\u2160\\u216A\\u216E\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6AA7r;\\u6A7Aot;\\u62D7Par;\\u6995uest;\\u6A7C\\u0280adels\\u2184\\u216A\\u2190\\u0656\\u219B\\u01F0\\u2189\\0\\u218Epro\\xf8\\u209Er;\\u6978q\\u0100lq\\u063F\\u2196les\\xf3\\u2088i\\xed\\u066B\\u0100en\\u21A3\\u21ADrtneqq;\\uC000\\u2269\\uFE00\\xc5\\u21AA\\u0500Aabcefkosy\\u21C4\\u21C7\\u21F1\\u21F5\\u21FA\\u2218\\u221D\\u222F\\u2268\\u227Dr\\xf2\\u03A0\\u0200ilmr\\u21D0\\u21D4\\u21D7\\u21DBrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06A9\\u0100dr\\u21E0\\u21E4cy;\\u444A\\u0180;cw\\u08F4\\u21EB\\u21EFir;\\u6948;\\u61ADar;\\u610Firc;\\u4125\\u0180alr\\u2201\\u220E\\u2213rts\\u0100;u\\u2209\\u220A\\u6665it\\xbb\\u220Alip;\\u6026con;\\u62B9r;\\uC000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223A\\u223E\\u2243\\u225E\\u2263rr;\\u61FFtht;\\u623Bk\\u0100lr\\u2249\\u2253eftarrow;\\u61A9ightarrow;\\u61AAf;\\uC000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226F\\u2274\\u2278r;\\uC000\\ud835\\udcbdas\\xe8\\u21F4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1C5B\\u0AE1\\u22A3\\0\\u22AA\\0\\u22B8\\u22C5\\u22CE\\0\\u22D5\\u22F3\\0\\0\\u22F8\\u2322\\u2367\\u2362\\u237F\\0\\u2386\\u23AA\\u23B4cute\\u803B\\xed\\u40ED\\u0180;iy\\u0771\\u22B0\\u22B5rc\\u803B\\xee\\u40EE;\\u4438\\u0100cx\\u22BC\\u22BFy;\\u4435cl\\u803B\\xa1\\u40A1\\u0100fr\\u039F\\u22C9;\\uC000\\ud835\\udd26rave\\u803B\\xec\\u40EC\\u0200;ino\\u073E\\u22DD\\u22E9\\u22EE\\u0100in\\u22E2\\u22E6nt;\\u6A0Ct;\\u622Dfin;\\u69DCta;\\u6129lig;\\u4133\\u0180aop\\u22FE\\u231A\\u231D\\u0180cgt\\u2305\\u2308\\u2317r;\\u412B\\u0180elp\\u071F\\u230F\\u2313in\\xe5\\u078Ear\\xf4\\u0720h;\\u4131f;\\u62B7ed;\\u41B5\\u0280;cfot\\u04F4\\u232C\\u2331\\u233D\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621Eie;\\u69DDdo\\xf4\\u2319\\u0280;celp\\u0757\\u234C\\u2350\\u235B\\u2361al;\\u62BA\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234Darhk;\\u6A17rod;\\u6A3C\\u0200cgpt\\u236F\\u2372\\u2376\\u237By;\\u4451on;\\u412Ff;\\uC000\\ud835\\udd5aa;\\u43B9uest\\u803B\\xbf\\u40BF\\u0100ci\\u238A\\u238Fr;\\uC000\\ud835\\udcben\\u0280;Edsv\\u04F4\\u239B\\u239D\\u23A1\\u04F3;\\u62F9ot;\\u62F5\\u0100;v\\u23A6\\u23A7\\u62F4;\\u62F3\\u0100;i\\u0777\\u23AElde;\\u4129\\u01EB\\u23B8\\0\\u23BCcy;\\u4456l\\u803B\\xef\\u40EF\\u0300cfmosu\\u23CC\\u23D7\\u23DC\\u23E1\\u23E7\\u23F5\\u0100iy\\u23D1\\u23D5rc;\\u4135;\\u4439r;\\uC000\\ud835\\udd27ath;\\u4237pf;\\uC000\\ud835\\udd5b\\u01E3\\u23EC\\0\\u23F1r;\\uC000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240B\\u2416\\u2422\\u2427\\u242D\\u2431\\u2435\\u243Bppa\\u0100;v\\u2413\\u2414\\u43BA;\\u43F0\\u0100ey\\u241B\\u2420dil;\\u4137;\\u443Ar;\\uC000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445Cpf;\\uC000\\ud835\\udd5ccr;\\uC000\\ud835\\udcc0\\u0B80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248D\\u2491\\u250E\\u253D\\u255A\\u2580\\u264E\\u265E\\u2665\\u2679\\u267D\\u269A\\u26B2\\u26D8\\u275D\\u2768\\u278B\\u27C0\\u2801\\u2812\\u0180art\\u2477\\u247A\\u247Cr\\xf2\\u09C6\\xf2\\u0395ail;\\u691Barr;\\u690E\\u0100;g\\u0994\\u248B;\\u6A8Bar;\\u6962\\u0963\\u24A5\\0\\u24AA\\0\\u24B1\\0\\0\\0\\0\\0\\u24B5\\u24BA\\0\\u24C6\\u24C8\\u24CD\\0\\u24F9ute;\\u413Amptyv;\\u69B4ra\\xee\\u084Cbda;\\u43BBg\\u0180;dl\\u088E\\u24C1\\u24C3;\\u6991\\xe5\\u088E;\\u6A85uo\\u803B\\xab\\u40ABr\\u0400;bfhlpst\\u0899\\u24DE\\u24E6\\u24E9\\u24EB\\u24EE\\u24F1\\u24F5\\u0100;f\\u089D\\u24E3s;\\u691Fs;\\u691D\\xeb\\u2252p;\\u61ABl;\\u6939im;\\u6973l;\\u61A2\\u0180;ae\\u24FF\\u2500\\u2504\\u6AABil;\\u6919\\u0100;s\\u2509\\u250A\\u6AAD;\\uC000\\u2AAD\\uFE00\\u0180abr\\u2515\\u2519\\u251Drr;\\u690Crk;\\u6772\\u0100ak\\u2522\\u252Cc\\u0100ek\\u2528\\u252A;\\u407B;\\u405B\\u0100es\\u2531\\u2533;\\u698Bl\\u0100du\\u2539\\u253B;\\u698F;\\u698D\\u0200aeuy\\u2546\\u254B\\u2556\\u2558ron;\\u413E\\u0100di\\u2550\\u2554il;\\u413C\\xec\\u08B0\\xe2\\u2529;\\u443B\\u0200cqrs\\u2563\\u2566\\u256D\\u257Da;\\u6936uo\\u0100;r\\u0E19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694Bh;\\u61B2\\u0280;fgqs\\u258B\\u258C\\u0989\\u25F3\\u25FF\\u6264t\\u0280ahlrt\\u2598\\u25A4\\u25B7\\u25C2\\u25E8rrow\\u0100;t\\u0899\\u25A1a\\xe9\\u24F6arpoon\\u0100du\\u25AF\\u25B4own\\xbb\\u045Ap\\xbb\\u0966eftarrows;\\u61C7ight\\u0180ahs\\u25CD\\u25D6\\u25DErrow\\u0100;s\\u08F4\\u08A7arpoon\\xf3\\u0F98quigarro\\xf7\\u21F0hreetimes;\\u62CB\\u0180;qs\\u258B\\u0993\\u25FAlan\\xf4\\u09AC\\u0280;cdgs\\u09AC\\u260A\\u260D\\u261D\\u2628c;\\u6AA8ot\\u0100;o\\u2614\\u2615\\u6A7F\\u0100;r\\u261A\\u261B\\u6A81;\\u6A83\\u0100;e\\u2622\\u2625\\uC000\\u22DA\\uFE00s;\\u6A93\\u0280adegs\\u2633\\u2639\\u263D\\u2649\\u264Bppro\\xf8\\u24C6ot;\\u62D6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248C\\xf4\\u099Bi\\xed\\u09B2\\u0180ilr\\u2655\\u08E1\\u265Asht;\\u697C;\\uC000\\ud835\\udd29\\u0100;E\\u099C\\u2663;\\u6A91\\u0161\\u2669\\u2676r\\u0100du\\u25B2\\u266E\\u0100;l\\u0965\\u2673;\\u696Alk;\\u6584cy;\\u4459\\u0280;acht\\u0A48\\u2688\\u268B\\u2691\\u2696r\\xf2\\u25C1orne\\xf2\\u1D08ard;\\u696Bri;\\u65FA\\u0100io\\u269F\\u26A4dot;\\u4140ust\\u0100;a\\u26AC\\u26AD\\u63B0che\\xbb\\u26AD\\u0200Eaes\\u26BB\\u26BD\\u26C9\\u26D4;\\u6268p\\u0100;p\\u26C3\\u26C4\\u6A89rox\\xbb\\u26C4\\u0100;q\\u26CE\\u26CF\\u6A87\\u0100;q\\u26CE\\u26BBim;\\u62E6\\u0400abnoptwz\\u26E9\\u26F4\\u26F7\\u271A\\u272F\\u2741\\u2747\\u2750\\u0100nr\\u26EE\\u26F1g;\\u67ECr;\\u61FDr\\xeb\\u08C1g\\u0180lmr\\u26FF\\u270D\\u2714eft\\u0100ar\\u09E6\\u2707ight\\xe1\\u09F2apsto;\\u67FCight\\xe1\\u09FDparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24EDight;\\u61AC\\u0180afl\\u2736\\u2739\\u273Dr;\\u6985;\\uC000\\ud835\\udd5dus;\\u6A2Dimes;\\u6A34\\u0161\\u274B\\u274Fst;\\u6217\\xe1\\u134E\\u0180;ef\\u2757\\u2758\\u1800\\u65CAnge\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277C\\u2785\\u2787r\\xf2\\u08A8orne\\xf2\\u1D8Car\\u0100;d\\u0F98\\u2783;\\u696D;\\u600Eri;\\u62BF\\u0300achiqt\\u2798\\u279D\\u0A40\\u27A2\\u27AE\\u27BBquo;\\u6039r;\\uC000\\ud835\\udcc1m\\u0180;eg\\u09B2\\u27AA\\u27AC;\\u6A8D;\\u6A8F\\u0100bu\\u252A\\u27B3o\\u0100;r\\u0E1F\\u27B9;\\u601Arok;\\u4142\\u8400<;cdhilqr\\u082B\\u27D2\\u2639\\u27DC\\u27E0\\u27E5\\u27EA\\u27F0\\u0100ci\\u27D7\\u27D9;\\u6AA6r;\\u6A79re\\xe5\\u25F2mes;\\u62C9arr;\\u6976uest;\\u6A7B\\u0100Pi\\u27F5\\u27F9ar;\\u6996\\u0180;ef\\u2800\\u092D\\u181B\\u65C3r\\u0100du\\u2807\\u280Dshar;\\u694Ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uC000\\u2268\\uFE00\\xc5\\u281E\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288E\\u2893\\u28A0\\u28A5\\u28A8\\u28DA\\u28E2\\u28E4\\u0A83\\u28F3\\u2902Dot;\\u623A\\u0200clpr\\u284E\\u2852\\u2863\\u287Dr\\u803B\\xaf\\u40AF\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285E\\u285F\\u6720se\\xbb\\u285F\\u0100;s\\u103B\\u2868to\\u0200;dlu\\u103B\\u2873\\u2877\\u287Bow\\xee\\u048Cef\\xf4\\u090F\\xf0\\u13D1ker;\\u65AE\\u0100oy\\u2887\\u288Cmma;\\u6A29;\\u443Cash;\\u6014asuredangle\\xbb\\u1626r;\\uC000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28AF\\u28B4\\u28C9ro\\u803B\\xb5\\u40B5\\u0200;acd\\u1464\\u28BD\\u28C0\\u28C4s\\xf4\\u16A7ir;\\u6AF0ot\\u80BB\\xb7\\u01B5us\\u0180;bd\\u28D2\\u1903\\u28D3\\u6212\\u0100;u\\u1D3C\\u28D8;\\u6A2A\\u0163\\u28DE\\u28E1p;\\u6ADB\\xf2\\u2212\\xf0\\u0A81\\u0100dp\\u28E9\\u28EEels;\\u62A7f;\\uC000\\ud835\\udd5e\\u0100ct\\u28F8\\u28FDr;\\uC000\\ud835\\udcc2pos\\xbb\\u159D\\u0180;lm\\u2909\\u290A\\u290D\\u43BCtimap;\\u62B8\\u0C00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297E\\u2989\\u2998\\u29DA\\u29E9\\u2A15\\u2A1A\\u2A58\\u2A5D\\u2A83\\u2A95\\u2AA4\\u2AA8\\u2B04\\u2B07\\u2B44\\u2B7F\\u2BAE\\u2C34\\u2C67\\u2C7C\\u2CE9\\u0100gt\\u2947\\u294B;\\uC000\\u22D9\\u0338\\u0100;v\\u2950\\u0BCF\\uC000\\u226B\\u20D2\\u0180elt\\u295A\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61CDightarrow;\\u61CE;\\uC000\\u22D8\\u0338\\u0100;v\\u297B\\u0C47\\uC000\\u226A\\u20D2ightarrow;\\u61CF\\u0100Dd\\u298E\\u2993ash;\\u62AFash;\\u62AE\\u0280bcnpt\\u29A3\\u29A7\\u29AC\\u29B1\\u29CCla\\xbb\\u02DEute;\\u4144g;\\uC000\\u2220\\u20D2\\u0280;Eiop\\u0D84\\u29BC\\u29C0\\u29C5\\u29C8;\\uC000\\u2A70\\u0338d;\\uC000\\u224B\\u0338s;\\u4149ro\\xf8\\u0D84ur\\u0100;a\\u29D3\\u29D4\\u666El\\u0100;s\\u29D3\\u0B38\\u01F3\\u29DF\\0\\u29E3p\\u80BB\\xa0\\u0B37mp\\u0100;e\\u0BF9\\u0C00\\u0280aeouy\\u29F4\\u29FE\\u2A03\\u2A10\\u2A13\\u01F0\\u29F9\\0\\u29FB;\\u6A43on;\\u4148dil;\\u4146ng\\u0100;d\\u0D7E\\u2A0Aot;\\uC000\\u2A6D\\u0338p;\\u6A42;\\u443Dash;\\u6013\\u0380;Aadqsx\\u0B92\\u2A29\\u2A2D\\u2A3B\\u2A41\\u2A45\\u2A50rr;\\u61D7r\\u0100hr\\u2A33\\u2A36k;\\u6924\\u0100;o\\u13F2\\u13F0ot;\\uC000\\u2250\\u0338ui\\xf6\\u0B63\\u0100ei\\u2A4A\\u2A4Ear;\\u6928\\xed\\u0B98ist\\u0100;s\\u0BA0\\u0B9Fr;\\uC000\\ud835\\udd2b\\u0200Eest\\u0BC5\\u2A66\\u2A79\\u2A7C\\u0180;qs\\u0BBC\\u2A6D\\u0BE1\\u0180;qs\\u0BBC\\u0BC5\\u2A74lan\\xf4\\u0BE2i\\xed\\u0BEA\\u0100;r\\u0BB6\\u2A81\\xbb\\u0BB7\\u0180Aap\\u2A8A\\u2A8D\\u2A91r\\xf2\\u2971rr;\\u61AEar;\\u6AF2\\u0180;sv\\u0F8D\\u2A9C\\u0F8C\\u0100;d\\u2AA1\\u2AA2\\u62FC;\\u62FAcy;\\u445A\\u0380AEadest\\u2AB7\\u2ABA\\u2ABE\\u2AC2\\u2AC5\\u2AF6\\u2AF9r\\xf2\\u2966;\\uC000\\u2266\\u0338rr;\\u619Ar;\\u6025\\u0200;fqs\\u0C3B\\u2ACE\\u2AE3\\u2AEFt\\u0100ar\\u2AD4\\u2AD9rro\\xf7\\u2AC1ightarro\\xf7\\u2A90\\u0180;qs\\u0C3B\\u2ABA\\u2AEAlan\\xf4\\u0C55\\u0100;s\\u0C55\\u2AF4\\xbb\\u0C36i\\xed\\u0C5D\\u0100;r\\u0C35\\u2AFEi\\u0100;e\\u0C1A\\u0C25i\\xe4\\u0D90\\u0100pt\\u2B0C\\u2B11f;\\uC000\\ud835\\udd5f\\u8180\\xac;in\\u2B19\\u2B1A\\u2B36\\u40ACn\\u0200;Edv\\u0B89\\u2B24\\u2B28\\u2B2E;\\uC000\\u22F9\\u0338ot;\\uC000\\u22F5\\u0338\\u01E1\\u0B89\\u2B33\\u2B35;\\u62F7;\\u62F6i\\u0100;v\\u0CB8\\u2B3C\\u01E1\\u0CB8\\u2B41\\u2B43;\\u62FE;\\u62FD\\u0180aor\\u2B4B\\u2B63\\u2B69r\\u0200;ast\\u0B7B\\u2B55\\u2B5A\\u2B5Flle\\xec\\u0B7Bl;\\uC000\\u2AFD\\u20E5;\\uC000\\u2202\\u0338lint;\\u6A14\\u0180;ce\\u0C92\\u2B70\\u2B73u\\xe5\\u0CA5\\u0100;c\\u0C98\\u2B78\\u0100;e\\u0C92\\u2B7D\\xf1\\u0C98\\u0200Aait\\u2B88\\u2B8B\\u2B9D\\u2BA7r\\xf2\\u2988rr\\u0180;cw\\u2B94\\u2B95\\u2B99\\u619B;\\uC000\\u2933\\u0338;\\uC000\\u219D\\u0338ghtarrow\\xbb\\u2B95ri\\u0100;e\\u0CCB\\u0CD6\\u0380chimpqu\\u2BBD\\u2BCD\\u2BD9\\u2B04\\u0B78\\u2BE4\\u2BEF\\u0200;cer\\u0D32\\u2BC6\\u0D37\\u2BC9u\\xe5\\u0D45;\\uC000\\ud835\\udcc3ort\\u026D\\u2B05\\0\\0\\u2BD6ar\\xe1\\u2B56m\\u0100;e\\u0D6E\\u2BDF\\u0100;q\\u0D74\\u0D73su\\u0100bp\\u2BEB\\u2BED\\xe5\\u0CF8\\xe5\\u0D0B\\u0180bcp\\u2BF6\\u2C11\\u2C19\\u0200;Ees\\u2BFF\\u2C00\\u0D22\\u2C04\\u6284;\\uC000\\u2AC5\\u0338et\\u0100;e\\u0D1B\\u2C0Bq\\u0100;q\\u0D23\\u2C00c\\u0100;e\\u0D32\\u2C17\\xf1\\u0D38\\u0200;Ees\\u2C22\\u2C23\\u0D5F\\u2C27\\u6285;\\uC000\\u2AC6\\u0338et\\u0100;e\\u0D58\\u2C2Eq\\u0100;q\\u0D60\\u2C23\\u0200gilr\\u2C3D\\u2C3F\\u2C45\\u2C47\\xec\\u0BD7lde\\u803B\\xf1\\u40F1\\xe7\\u0C43iangle\\u0100lr\\u2C52\\u2C5Ceft\\u0100;e\\u0C1A\\u2C5A\\xf1\\u0C26ight\\u0100;e\\u0CCB\\u2C65\\xf1\\u0CD7\\u0100;m\\u2C6C\\u2C6D\\u43BD\\u0180;es\\u2C74\\u2C75\\u2C79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2C8F\\u2C94\\u2C99\\u2C9E\\u2CA3\\u2CB0\\u2CB6\\u2CD3\\u2CE3ash;\\u62ADarr;\\u6904p;\\uC000\\u224D\\u20D2ash;\\u62AC\\u0100et\\u2CA8\\u2CAC;\\uC000\\u2265\\u20D2;\\uC000>\\u20D2nfin;\\u69DE\\u0180Aet\\u2CBD\\u2CC1\\u2CC5rr;\\u6902;\\uC000\\u2264\\u20D2\\u0100;r\\u2CCA\\u2CCD\\uC000<\\u20D2ie;\\uC000\\u22B4\\u20D2\\u0100At\\u2CD8\\u2CDCrr;\\u6903rie;\\uC000\\u22B5\\u20D2im;\\uC000\\u223C\\u20D2\\u0180Aan\\u2CF0\\u2CF4\\u2D02rr;\\u61D6r\\u0100hr\\u2CFA\\u2CFDk;\\u6923\\u0100;o\\u13E7\\u13E5ear;\\u6927\\u1253\\u1A95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2D2D\\0\\u2D38\\u2D48\\u2D60\\u2D65\\u2D72\\u2D84\\u1B07\\0\\0\\u2D8D\\u2DAB\\0\\u2DC8\\u2DCE\\0\\u2DDC\\u2E19\\u2E2B\\u2E3E\\u2E43\\u0100cs\\u2D31\\u1A97ute\\u803B\\xf3\\u40F3\\u0100iy\\u2D3C\\u2D45r\\u0100;c\\u1A9E\\u2D42\\u803B\\xf4\\u40F4;\\u443E\\u0280abios\\u1AA0\\u2D52\\u2D57\\u01C8\\u2D5Alac;\\u4151v;\\u6A38old;\\u69BClig;\\u4153\\u0100cr\\u2D69\\u2D6Dir;\\u69BF;\\uC000\\ud835\\udd2c\\u036F\\u2D79\\0\\0\\u2D7C\\0\\u2D82n;\\u42DBave\\u803B\\xf2\\u40F2;\\u69C1\\u0100bm\\u2D88\\u0DF4ar;\\u69B5\\u0200acit\\u2D95\\u2D98\\u2DA5\\u2DA8r\\xf2\\u1A80\\u0100ir\\u2D9D\\u2DA0r;\\u69BEoss;\\u69BBn\\xe5\\u0E52;\\u69C0\\u0180aei\\u2DB1\\u2DB5\\u2DB9cr;\\u414Dga;\\u43C9\\u0180cdn\\u2DC0\\u2DC5\\u01CDron;\\u43BF;\\u69B6pf;\\uC000\\ud835\\udd60\\u0180ael\\u2DD4\\u2DD7\\u01D2r;\\u69B7rp;\\u69B9\\u0380;adiosv\\u2DEA\\u2DEB\\u2DEE\\u2E08\\u2E0D\\u2E10\\u2E16\\u6228r\\xf2\\u1A86\\u0200;efm\\u2DF7\\u2DF8\\u2E02\\u2E05\\u6A5Dr\\u0100;o\\u2DFE\\u2DFF\\u6134f\\xbb\\u2DFF\\u803B\\xaa\\u40AA\\u803B\\xba\\u40BAgof;\\u62B6r;\\u6A56lope;\\u6A57;\\u6A5B\\u0180clo\\u2E1F\\u2E21\\u2E27\\xf2\\u2E01ash\\u803B\\xf8\\u40F8l;\\u6298i\\u016C\\u2E2F\\u2E34de\\u803B\\xf5\\u40F5es\\u0100;a\\u01DB\\u2E3As;\\u6A36ml\\u803B\\xf6\\u40F6bar;\\u633D\\u0AE1\\u2E5E\\0\\u2E7D\\0\\u2E80\\u2E9D\\0\\u2EA2\\u2EB9\\0\\0\\u2ECB\\u0E9C\\0\\u2F13\\0\\0\\u2F2B\\u2FBC\\0\\u2FC8r\\u0200;ast\\u0403\\u2E67\\u2E72\\u0E85\\u8100\\xb6;l\\u2E6D\\u2E6E\\u40B6le\\xec\\u0403\\u0269\\u2E78\\0\\0\\u2E7Bm;\\u6AF3;\\u6AFDy;\\u443Fr\\u0280cimpt\\u2E8B\\u2E8F\\u2E93\\u1865\\u2E97nt;\\u4025od;\\u402Eil;\\u6030enk;\\u6031r;\\uC000\\ud835\\udd2d\\u0180imo\\u2EA8\\u2EB0\\u2EB4\\u0100;v\\u2EAD\\u2EAE\\u43C6;\\u43D5ma\\xf4\\u0A76ne;\\u660E\\u0180;tv\\u2EBF\\u2EC0\\u2EC8\\u43C0chfork\\xbb\\u1FFD;\\u43D6\\u0100au\\u2ECF\\u2EDFn\\u0100ck\\u2ED5\\u2EDDk\\u0100;h\\u21F4\\u2EDB;\\u610E\\xf6\\u21F4s\\u0480;abcdemst\\u2EF3\\u2EF4\\u1908\\u2EF9\\u2EFD\\u2F04\\u2F06\\u2F0A\\u2F0E\\u402Bcir;\\u6A23ir;\\u6A22\\u0100ou\\u1D40\\u2F02;\\u6A25;\\u6A72n\\u80BB\\xb1\\u0E9Dim;\\u6A26wo;\\u6A27\\u0180ipu\\u2F19\\u2F20\\u2F25ntint;\\u6A15f;\\uC000\\ud835\\udd61nd\\u803B\\xa3\\u40A3\\u0500;Eaceinosu\\u0EC8\\u2F3F\\u2F41\\u2F44\\u2F47\\u2F81\\u2F89\\u2F92\\u2F7E\\u2FB6;\\u6AB3p;\\u6AB7u\\xe5\\u0ED9\\u0100;c\\u0ECE\\u2F4C\\u0300;acens\\u0EC8\\u2F59\\u2F5F\\u2F66\\u2F68\\u2F7Eppro\\xf8\\u2F43urlye\\xf1\\u0ED9\\xf1\\u0ECE\\u0180aes\\u2F6F\\u2F76\\u2F7Approx;\\u6AB9qq;\\u6AB5im;\\u62E8i\\xed\\u0EDFme\\u0100;s\\u2F88\\u0EAE\\u6032\\u0180Eas\\u2F78\\u2F90\\u2F7A\\xf0\\u2F75\\u0180dfp\\u0EEC\\u2F99\\u2FAF\\u0180als\\u2FA0\\u2FA5\\u2FAAlar;\\u632Eine;\\u6312urf;\\u6313\\u0100;t\\u0EFB\\u2FB4\\xef\\u0EFBrel;\\u62B0\\u0100ci\\u2FC0\\u2FC5r;\\uC000\\ud835\\udcc5;\\u43C8ncsp;\\u6008\\u0300fiopsu\\u2FDA\\u22E2\\u2FDF\\u2FE5\\u2FEB\\u2FF1r;\\uC000\\ud835\\udd2epf;\\uC000\\ud835\\udd62rime;\\u6057cr;\\uC000\\ud835\\udcc6\\u0180aeo\\u2FF8\\u3009\\u3013t\\u0100ei\\u2FFE\\u3005rnion\\xf3\\u06B0nt;\\u6A16st\\u0100;e\\u3010\\u3011\\u403F\\xf1\\u1F19\\xf4\\u0F14\\u0A80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30E0\\u310E\\u312B\\u3147\\u3162\\u3172\\u318E\\u3206\\u3215\\u3224\\u3229\\u3258\\u326E\\u3272\\u3290\\u32B0\\u32B7\\u0180art\\u3047\\u304A\\u304Cr\\xf2\\u10B3\\xf2\\u03DDail;\\u691Car\\xf2\\u1C65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307F\\u308F\\u3094\\u30CC\\u0100eu\\u306D\\u3071;\\uC000\\u223D\\u0331te;\\u4155i\\xe3\\u116Emptyv;\\u69B3g\\u0200;del\\u0FD1\\u3089\\u308B\\u308D;\\u6992;\\u69A5\\xe5\\u0FD1uo\\u803B\\xbb\\u40BBr\\u0580;abcfhlpstw\\u0FDC\\u30AC\\u30AF\\u30B7\\u30B9\\u30BC\\u30BE\\u30C0\\u30C3\\u30C7\\u30CAp;\\u6975\\u0100;f\\u0FE0\\u30B4s;\\u6920;\\u6933s;\\u691E\\xeb\\u225D\\xf0\\u272El;\\u6945im;\\u6974l;\\u61A3;\\u619D\\u0100ai\\u30D1\\u30D5il;\\u691Ao\\u0100;n\\u30DB\\u30DC\\u6236al\\xf3\\u0F1E\\u0180abr\\u30E7\\u30EA\\u30EEr\\xf2\\u17E5rk;\\u6773\\u0100ak\\u30F3\\u30FDc\\u0100ek\\u30F9\\u30FB;\\u407D;\\u405D\\u0100es\\u3102\\u3104;\\u698Cl\\u0100du\\u310A\\u310C;\\u698E;\\u6990\\u0200aeuy\\u3117\\u311C\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0FF2\\xe2\\u30FA;\\u4440\\u0200clqs\\u3134\\u3137\\u313D\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020E\\u020Dh;\\u61B3\\u0180acg\\u314E\\u315F\\u0F44l\\u0200;ips\\u0F78\\u3158\\u315B\\u109Cn\\xe5\\u10BBar\\xf4\\u0FA9t;\\u65AD\\u0180ilr\\u3169\\u1023\\u316Esht;\\u697D;\\uC000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317D\\u317F\\xbb\\u047B\\u0100;l\\u1091\\u3184;\\u696C\\u0100;v\\u318B\\u318C\\u43C1;\\u43F1\\u0180gns\\u3195\\u31F9\\u31FCht\\u0300ahlrst\\u31A4\\u31B0\\u31C2\\u31D8\\u31E4\\u31EErrow\\u0100;t\\u0FDC\\u31ADa\\xe9\\u30C8arpoon\\u0100du\\u31BB\\u31BFow\\xee\\u317Ep\\xbb\\u1092eft\\u0100ah\\u31CA\\u31D0rrow\\xf3\\u0FEAarpoon\\xf3\\u0551ightarrows;\\u61C9quigarro\\xf7\\u30CBhreetimes;\\u62CCg;\\u42DAingdotse\\xf1\\u1F32\\u0180ahm\\u320D\\u3210\\u3213r\\xf2\\u0FEAa\\xf2\\u0551;\\u600Foust\\u0100;a\\u321E\\u321F\\u63B1che\\xbb\\u321Fmid;\\u6AEE\\u0200abpt\\u3232\\u323D\\u3240\\u3252\\u0100nr\\u3237\\u323Ag;\\u67EDr;\\u61FEr\\xeb\\u1003\\u0180afl\\u3247\\u324A\\u324Er;\\u6986;\\uC000\\ud835\\udd63us;\\u6A2Eimes;\\u6A35\\u0100ap\\u325D\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6A12ar\\xf2\\u31E3\\u0200achq\\u327B\\u3280\\u10BC\\u3285quo;\\u603Ar;\\uC000\\ud835\\udcc7\\u0100bu\\u30FB\\u328Ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329B\\u32A0re\\xe5\\u31F8mes;\\u62CAi\\u0200;efl\\u32AA\\u1059\\u1821\\u32AB\\u65B9tri;\\u69CEluhar;\\u6968;\\u611E\\u0D61\\u32D5\\u32DB\\u32DF\\u332C\\u3338\\u3371\\0\\u337A\\u33A4\\0\\0\\u33EC\\u33F0\\0\\u3428\\u3448\\u345A\\u34AD\\u34B1\\u34CA\\u34F1\\0\\u3616\\0\\0\\u3633cute;\\u415Bqu\\xef\\u27BA\\u0500;Eaceinpsy\\u11ED\\u32F3\\u32F5\\u32FF\\u3302\\u330B\\u330F\\u331F\\u3326\\u3329;\\u6AB4\\u01F0\\u32FA\\0\\u32FC;\\u6AB8on;\\u4161u\\xe5\\u11FE\\u0100;d\\u11F3\\u3307il;\\u415Frc;\\u415D\\u0180Eas\\u3316\\u3318\\u331B;\\u6AB6p;\\u6ABAim;\\u62E9olint;\\u6A13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1D47\\u3335\\u62C5;\\u6A66\\u0380Aacmstx\\u3346\\u334A\\u3357\\u335B\\u335E\\u3363\\u336Drr;\\u61D8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0A36\\u0A34t\\u803B\\xa7\\u40A7i;\\u403Bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uC000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33A0rp;\\u666F\\u0100hy\\u338B\\u338Fcy;\\u4449;\\u4448rt\\u026D\\u3399\\0\\0\\u339Ci\\xe4\\u1464ara\\xec\\u2E6F\\u803B\\xad\\u40AD\\u0100gm\\u33A8\\u33B4ma\\u0180;fv\\u33B1\\u33B2\\u33B2\\u43C3;\\u43C2\\u0400;deglnpr\\u12AB\\u33C5\\u33C9\\u33CE\\u33D6\\u33DE\\u33E1\\u33E6ot;\\u6A6A\\u0100;q\\u12B1\\u12B0\\u0100;E\\u33D3\\u33D4\\u6A9E;\\u6AA0\\u0100;E\\u33DB\\u33DC\\u6A9D;\\u6A9Fe;\\u6246lus;\\u6A24arr;\\u6972ar\\xf2\\u113D\\u0200aeit\\u33F8\\u3408\\u340F\\u3417\\u0100ls\\u33FD\\u3404lsetm\\xe9\\u336Ahp;\\u6A33parsl;\\u69E4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341C\\u341D\\u6AAA\\u0100;s\\u3422\\u3423\\u6AAC;\\uC000\\u2AAC\\uFE00\\u0180flp\\u342E\\u3433\\u3442tcy;\\u444C\\u0100;b\\u3438\\u3439\\u402F\\u0100;a\\u343E\\u343F\\u69C4r;\\u633Ff;\\uC000\\ud835\\udd64a\\u0100dr\\u344D\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349F\\u0100au\\u3465\\u346Fp\\u0100;s\\u1188\\u346B;\\uC000\\u2293\\uFE00p\\u0100;s\\u11B4\\u3475;\\uC000\\u2294\\uFE00u\\u0100bp\\u347F\\u348F\\u0180;es\\u1197\\u119C\\u3486et\\u0100;e\\u1197\\u348D\\xf1\\u119D\\u0180;es\\u11A8\\u11AD\\u3496et\\u0100;e\\u11A8\\u349D\\xf1\\u11AE\\u0180;af\\u117B\\u34A6\\u05B0r\\u0165\\u34AB\\u05B1\\xbb\\u117Car\\xf2\\u1148\\u0200cemt\\u34B9\\u34BE\\u34C2\\u34C5r;\\uC000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11BE\\u0100ar\\u34CE\\u34D5r\\u0100;f\\u34D4\\u17BF\\u6606\\u0100an\\u34DA\\u34EDight\\u0100ep\\u34E3\\u34EApsilo\\xee\\u1EE0h\\xe9\\u2EAFs\\xbb\\u2852\\u0280bcmnp\\u34FB\\u355E\\u1209\\u358B\\u358E\\u0480;Edemnprs\\u350E\\u350F\\u3511\\u3515\\u351E\\u3523\\u352C\\u3531\\u3536\\u6282;\\u6AC5ot;\\u6ABD\\u0100;d\\u11DA\\u351Aot;\\u6AC3ult;\\u6AC1\\u0100Ee\\u3528\\u352A;\\u6ACB;\\u628Alus;\\u6ABFarr;\\u6979\\u0180eiu\\u353D\\u3552\\u3555t\\u0180;en\\u350E\\u3545\\u354Bq\\u0100;q\\u11DA\\u350Feq\\u0100;q\\u352B\\u3528m;\\u6AC7\\u0100bp\\u355A\\u355C;\\u6AD5;\\u6AD3c\\u0300;acens\\u11ED\\u356C\\u3572\\u3579\\u357B\\u3326ppro\\xf8\\u32FAurlye\\xf1\\u11FE\\xf1\\u11F3\\u0180aes\\u3582\\u3588\\u331Bppro\\xf8\\u331Aq\\xf1\\u3317g;\\u666A\\u0680123;Edehlmnps\\u35A9\\u35AC\\u35AF\\u121C\\u35B2\\u35B4\\u35C0\\u35C9\\u35D5\\u35DA\\u35DF\\u35E8\\u35ED\\u803B\\xb9\\u40B9\\u803B\\xb2\\u40B2\\u803B\\xb3\\u40B3;\\u6AC6\\u0100os\\u35B9\\u35BCt;\\u6ABEub;\\u6AD8\\u0100;d\\u1222\\u35C5ot;\\u6AC4s\\u0100ou\\u35CF\\u35D2l;\\u67C9b;\\u6AD7arr;\\u697Bult;\\u6AC2\\u0100Ee\\u35E4\\u35E6;\\u6ACC;\\u628Blus;\\u6AC0\\u0180eiu\\u35F4\\u3609\\u360Ct\\u0180;en\\u121C\\u35FC\\u3602q\\u0100;q\\u1222\\u35B2eq\\u0100;q\\u35E7\\u35E4m;\\u6AC8\\u0100bp\\u3611\\u3613;\\u6AD4;\\u6AD6\\u0180Aan\\u361C\\u3620\\u362Drr;\\u61D9r\\u0100hr\\u3626\\u3628\\xeb\\u222E\\u0100;o\\u0A2B\\u0A29war;\\u692Alig\\u803B\\xdf\\u40DF\\u0BE1\\u3651\\u365D\\u3660\\u12CE\\u3673\\u3679\\0\\u367E\\u36C2\\0\\0\\0\\0\\0\\u36DB\\u3703\\0\\u3709\\u376C\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365Bget;\\u6316;\\u43C4r\\xeb\\u0E5F\\u0180aey\\u3666\\u366B\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uC000\\ud835\\udd31\\u0200eiko\\u3686\\u369D\\u36B5\\u36BC\\u01F2\\u368B\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369B\\u43B8ym;\\u43D1\\u0100cn\\u36A2\\u36B2k\\u0100as\\u36A8\\u36AEppro\\xf8\\u12C1im\\xbb\\u12ACs\\xf0\\u129E\\u0100as\\u36BA\\u36AE\\xf0\\u12C1rn\\u803B\\xfe\\u40FE\\u01EC\\u031F\\u36C6\\u22E7es\\u8180\\xd7;bd\\u36CF\\u36D0\\u36D8\\u40D7\\u0100;a\\u190F\\u36D5r;\\u6A31;\\u6A30\\u0180eps\\u36E1\\u36E3\\u3700\\xe1\\u2A4D\\u0200;bcf\\u0486\\u36EC\\u36F0\\u36F4ot;\\u6336ir;\\u6AF1\\u0100;o\\u36F9\\u36FC\\uC000\\ud835\\udd65rk;\\u6ADA\\xe1\\u3362rime;\\u6034\\u0180aip\\u370F\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374D\\u3740\\u3751\\u3757\\u375C\\u375Fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65B5own\\xbb\\u1DBBeft\\u0100;e\\u2800\\u373E\\xf1\\u092E;\\u625Cight\\u0100;e\\u32AA\\u374B\\xf1\\u105Aot;\\u65ECinus;\\u6A3Alus;\\u6A39b;\\u69CDime;\\u6A3Bezium;\\u63E2\\u0180cht\\u3772\\u377D\\u3781\\u0100ry\\u3777\\u377B;\\uC000\\ud835\\udcc9;\\u4446cy;\\u445Brok;\\u4167\\u0100io\\u378B\\u378Ex\\xf4\\u1777head\\u0100lr\\u3797\\u37A0eftarro\\xf7\\u084Fightarrow\\xbb\\u0F5D\\u0900AHabcdfghlmoprstuw\\u37D0\\u37D3\\u37D7\\u37E4\\u37F0\\u37FC\\u380E\\u381C\\u3823\\u3834\\u3851\\u385D\\u386B\\u38A9\\u38CC\\u38D2\\u38EA\\u38F6r\\xf2\\u03EDar;\\u6963\\u0100cr\\u37DC\\u37E2ute\\u803B\\xfa\\u40FA\\xf2\\u1150r\\u01E3\\u37EA\\0\\u37EDy;\\u445Eve;\\u416D\\u0100iy\\u37F5\\u37FArc\\u803B\\xfb\\u40FB;\\u4443\\u0180abh\\u3803\\u3806\\u380Br\\xf2\\u13ADlac;\\u4171a\\xf2\\u13C3\\u0100ir\\u3813\\u3818sht;\\u697E;\\uC000\\ud835\\udd32rave\\u803B\\xf9\\u40F9\\u0161\\u3827\\u3831r\\u0100lr\\u382C\\u382E\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384D\\u026F\\u383F\\0\\0\\u384Arn\\u0100;e\\u3845\\u3846\\u631Cr\\xbb\\u3846op;\\u630Fri;\\u65F8\\u0100al\\u3856\\u385Acr;\\u416B\\u80BB\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uC000\\ud835\\udd66\\u0300adhlsu\\u114B\\u3878\\u387D\\u1372\\u3891\\u38A0own\\xe1\\u13B3arpoon\\u0100lr\\u3888\\u388Cef\\xf4\\u382Digh\\xf4\\u382Fi\\u0180;hl\\u3899\\u389A\\u389C\\u43C5\\xbb\\u13FAon\\xbb\\u389Aparrows;\\u61C8\\u0180cit\\u38B0\\u38C4\\u38C8\\u026F\\u38B6\\0\\0\\u38C1rn\\u0100;e\\u38BC\\u38BD\\u631Dr\\xbb\\u38BDop;\\u630Eng;\\u416Fri;\\u65F9cr;\\uC000\\ud835\\udcca\\u0180dir\\u38D9\\u38DD\\u38E2ot;\\u62F0lde;\\u4169i\\u0100;f\\u3730\\u38E8\\xbb\\u1813\\u0100am\\u38EF\\u38F2r\\xf2\\u38A8l\\u803B\\xfc\\u40FCangle;\\u69A7\\u0780ABDacdeflnoprsz\\u391C\\u391F\\u3929\\u392D\\u39B5\\u39B8\\u39BD\\u39DF\\u39E4\\u39E8\\u39F3\\u39F9\\u39FD\\u3A01\\u3A20r\\xf2\\u03F7ar\\u0100;v\\u3926\\u3927\\u6AE8;\\u6AE9as\\xe8\\u03E1\\u0100nr\\u3932\\u3937grt;\\u699C\\u0380eknprst\\u34E3\\u3946\\u394B\\u3952\\u395D\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1E96\\u0180hir\\u34EB\\u2EC8\\u3959op\\xf4\\u2FB5\\u0100;h\\u13B7\\u3962\\xef\\u318D\\u0100iu\\u3969\\u396Dgm\\xe1\\u33B3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397D\\u3980\\uC000\\u228A\\uFE00;\\uC000\\u2ACB\\uFE00setneq\\u0100;q\\u398F\\u3992\\uC000\\u228B\\uFE00;\\uC000\\u2ACC\\uFE00\\u0100hr\\u399B\\u399Fet\\xe1\\u369Ciangle\\u0100lr\\u39AA\\u39AFeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39C4\\u39D2\\u39D7\\u0180;be\\u2DEA\\u39CB\\u39CFar;\\u62BBq;\\u625Alip;\\u62EE\\u0100bt\\u39DC\\u1468a\\xf2\\u1469r;\\uC000\\ud835\\udd33tr\\xe9\\u39AEsu\\u0100bp\\u39EF\\u39F1\\xbb\\u0D1C\\xbb\\u0D59pf;\\uC000\\ud835\\udd67ro\\xf0\\u0EFBtr\\xe9\\u39B4\\u0100cu\\u3A06\\u3A0Br;\\uC000\\ud835\\udccb\\u0100bp\\u3A10\\u3A18n\\u0100Ee\\u3980\\u3A16\\xbb\\u397En\\u0100Ee\\u3992\\u3A1E\\xbb\\u3990igzag;\\u699A\\u0380cefoprs\\u3A36\\u3A3B\\u3A56\\u3A5B\\u3A54\\u3A61\\u3A6Airc;\\u4175\\u0100di\\u3A40\\u3A51\\u0100bg\\u3A45\\u3A49ar;\\u6A5Fe\\u0100;q\\u15FA\\u3A4F;\\u6259erp;\\u6118r;\\uC000\\ud835\\udd34pf;\\uC000\\ud835\\udd68\\u0100;e\\u1479\\u3A66at\\xe8\\u1479cr;\\uC000\\ud835\\udccc\\u0AE3\\u178E\\u3A87\\0\\u3A8B\\0\\u3A90\\u3A9B\\0\\0\\u3A9D\\u3AA8\\u3AAB\\u3AAF\\0\\0\\u3AC3\\u3ACE\\0\\u3AD8\\u17DC\\u17DFtr\\xe9\\u17D1r;\\uC000\\ud835\\udd35\\u0100Aa\\u3A94\\u3A97r\\xf2\\u03C3r\\xf2\\u09F6;\\u43BE\\u0100Aa\\u3AA1\\u3AA4r\\xf2\\u03B8r\\xf2\\u09EBa\\xf0\\u2713is;\\u62FB\\u0180dpt\\u17A4\\u3AB5\\u3ABE\\u0100fl\\u3ABA\\u17A9;\\uC000\\ud835\\udd69im\\xe5\\u17B2\\u0100Aa\\u3AC7\\u3ACAr\\xf2\\u03CEr\\xf2\\u0A01\\u0100cq\\u3AD2\\u17B8r;\\uC000\\ud835\\udccd\\u0100pt\\u17D6\\u3ADCr\\xe9\\u17D4\\u0400acefiosu\\u3AF0\\u3AFD\\u3B08\\u3B0C\\u3B11\\u3B15\\u3B1B\\u3B21c\\u0100uy\\u3AF6\\u3AFBte\\u803B\\xfd\\u40FD;\\u444F\\u0100iy\\u3B02\\u3B06rc;\\u4177;\\u444Bn\\u803B\\xa5\\u40A5r;\\uC000\\ud835\\udd36cy;\\u4457pf;\\uC000\\ud835\\udd6acr;\\uC000\\ud835\\udcce\\u0100cm\\u3B26\\u3B29y;\\u444El\\u803B\\xff\\u40FF\\u0500acdefhiosw\\u3B42\\u3B48\\u3B54\\u3B58\\u3B64\\u3B69\\u3B6D\\u3B74\\u3B7A\\u3B80cute;\\u417A\\u0100ay\\u3B4D\\u3B52ron;\\u417E;\\u4437ot;\\u417C\\u0100et\\u3B5D\\u3B61tr\\xe6\\u155Fa;\\u43B6r;\\uC000\\ud835\\udd37cy;\\u4436grarr;\\u61DDpf;\\uC000\\ud835\\udd6bcr;\\uC000\\ud835\\udccf\\u0100jn\\u3B85\\u3B87;\\u600Dj;\\u600C'.split(\"\").map(function(c) {\n return c.charCodeAt(0);\n}));\n\n});\n\nparcelRegister(\"cziBi\", function(module, exports) {\n\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.default = new Uint16Array(// prettier-ignore\n\"\\u0200aglq\t\\x15\\x18\\x1b\\u026D\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403Et;\\u403Cuot;\\u4022\".split(\"\").map(function(c) {\n return c.charCodeAt(0);\n}));\n\n});\n\nparcelRegister(\"6DwAw\", function(module, exports) {\n\"use strict\";\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar $4d4fa9e4a7c3cec6$var$_a;\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.replaceCodePoint = module.exports.fromCodePoint = void 0;\nvar $4d4fa9e4a7c3cec6$var$decodeMap = new Map([\n [\n 0,\n 65533\n ],\n // C1 Unicode control character reference replacements\n [\n 128,\n 8364\n ],\n [\n 130,\n 8218\n ],\n [\n 131,\n 402\n ],\n [\n 132,\n 8222\n ],\n [\n 133,\n 8230\n ],\n [\n 134,\n 8224\n ],\n [\n 135,\n 8225\n ],\n [\n 136,\n 710\n ],\n [\n 137,\n 8240\n ],\n [\n 138,\n 352\n ],\n [\n 139,\n 8249\n ],\n [\n 140,\n 338\n ],\n [\n 142,\n 381\n ],\n [\n 145,\n 8216\n ],\n [\n 146,\n 8217\n ],\n [\n 147,\n 8220\n ],\n [\n 148,\n 8221\n ],\n [\n 149,\n 8226\n ],\n [\n 150,\n 8211\n ],\n [\n 151,\n 8212\n ],\n [\n 152,\n 732\n ],\n [\n 153,\n 8482\n ],\n [\n 154,\n 353\n ],\n [\n 155,\n 8250\n ],\n [\n 156,\n 339\n ],\n [\n 158,\n 382\n ],\n [\n 159,\n 376\n ]\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */ module.exports.fromCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n($4d4fa9e4a7c3cec6$var$_a = String.fromCodePoint) !== null && $4d4fa9e4a7c3cec6$var$_a !== void 0 ? $4d4fa9e4a7c3cec6$var$_a : function(codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(codePoint >>> 10 & 0x3ff | 0xd800);\n codePoint = 0xdc00 | codePoint & 0x3ff;\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */ function $4d4fa9e4a7c3cec6$var$replaceCodePoint(codePoint) {\n var _a;\n if (codePoint >= 0xd800 && codePoint <= 0xdfff || codePoint > 0x10ffff) return 0xfffd;\n return (_a = $4d4fa9e4a7c3cec6$var$decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nmodule.exports.replaceCodePoint = $4d4fa9e4a7c3cec6$var$replaceCodePoint;\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */ function $4d4fa9e4a7c3cec6$var$decodeCodePoint(codePoint) {\n return (0, module.exports.fromCodePoint)($4d4fa9e4a7c3cec6$var$replaceCodePoint(codePoint));\n}\nmodule.exports.default = $4d4fa9e4a7c3cec6$var$decodeCodePoint;\n\n});\n\n\n\n\nparcelRegister(\"kyMdm\", function(module, exports) {\n$parcel$export(module.exports, \"CDATA\", () => (parcelRequire(\"lftuc\")).CDATA);\n$parcel$export(module.exports, \"Comment\", () => (parcelRequire(\"lftuc\")).Comment);\n$parcel$export(module.exports, \"Document\", () => (parcelRequire(\"lftuc\")).Document);\n$parcel$export(module.exports, \"Element\", () => (parcelRequire(\"lftuc\")).Element);\n$parcel$export(module.exports, \"hasChildren\", () => (parcelRequire(\"lftuc\")).hasChildren);\n$parcel$export(module.exports, \"isCDATA\", () => (parcelRequire(\"lftuc\")).isCDATA);\n$parcel$export(module.exports, \"isComment\", () => (parcelRequire(\"lftuc\")).isComment);\n$parcel$export(module.exports, \"isTag\", () => (parcelRequire(\"lftuc\")).isTag);\n$parcel$export(module.exports, \"isText\", () => (parcelRequire(\"lftuc\")).isText);\n$parcel$export(module.exports, \"ProcessingInstruction\", () => (parcelRequire(\"lftuc\")).ProcessingInstruction);\n$parcel$export(module.exports, \"Text\", () => (parcelRequire(\"lftuc\")).Text);\n\n$parcel$export(module.exports, \"DomHandler\", () => $ef7c620119bd03f2$export$ff8ccbac9225de62);\n\nvar $1RLFx = parcelRequire(\"1RLFx\");\n\nvar $lftuc = parcelRequire(\"lftuc\");\n// Default options\nconst $ef7c620119bd03f2$var$defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false\n};\nclass $ef7c620119bd03f2$export$ff8ccbac9225de62 {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */ constructor(callback, options, elementCB){\n /** The elements of the DOM */ this.dom = [];\n /** The root element for the DOM */ this.root = new (0, $lftuc.Document)(this.dom);\n /** Indicated whether parsing has been completed. */ this.done = false;\n /** Stack of open tags. */ this.tagStack = [\n this.root\n ];\n /** A data node that is still being written to. */ this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */ this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = $ef7c620119bd03f2$var$defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : $ef7c620119bd03f2$var$defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new (0, $lftuc.Document)(this.dom);\n this.done = false;\n this.tagStack = [\n this.root\n ];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done) return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) elem.endIndex = this.parser.endIndex;\n if (this.elementCB) this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? (0, $1RLFx.ElementType).Tag : undefined;\n const element = new (0, $lftuc.Element)(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode: lastNode } = this;\n if (lastNode && lastNode.type === (0, $1RLFx.ElementType).Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) lastNode.endIndex = this.parser.endIndex;\n } else {\n const node = new (0, $lftuc.Text)(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === (0, $1RLFx.ElementType).Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new (0, $lftuc.Comment)(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new (0, $lftuc.Text)(\"\");\n const node = new (0, $lftuc.CDATA)([\n text\n ]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new (0, $lftuc.ProcessingInstruction)(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") this.callback(error, this.dom);\n else if (error) throw error;\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) node.startIndex = this.parser.startIndex;\n if (this.options.withEndIndices) node.endIndex = this.parser.endIndex;\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nvar $ef7c620119bd03f2$export$2e2bcd8739ae039 = $ef7c620119bd03f2$export$ff8ccbac9225de62;\n\n});\nparcelRegister(\"lftuc\", function(module, exports) {\n\n$parcel$export(module.exports, \"Text\", () => $f781defdc25f69c3$export$5f1af8db9871e1d6);\n$parcel$export(module.exports, \"Comment\", () => $f781defdc25f69c3$export$4d299b491347818a);\n$parcel$export(module.exports, \"ProcessingInstruction\", () => $f781defdc25f69c3$export$9269dce19ee35e96);\n$parcel$export(module.exports, \"CDATA\", () => $f781defdc25f69c3$export$1f8b8f7e5c763232);\n$parcel$export(module.exports, \"Document\", () => $f781defdc25f69c3$export$b34a105447964f9f);\n$parcel$export(module.exports, \"Element\", () => $f781defdc25f69c3$export$db77ccec0bb4ccac);\n$parcel$export(module.exports, \"isTag\", () => $f781defdc25f69c3$export$3bf645f08efe3292);\n$parcel$export(module.exports, \"isCDATA\", () => $f781defdc25f69c3$export$c2d65aed98d39b56);\n$parcel$export(module.exports, \"isText\", () => $f781defdc25f69c3$export$1879817ac5c922b7);\n$parcel$export(module.exports, \"isComment\", () => $f781defdc25f69c3$export$3ab01370f5e64ac8);\n$parcel$export(module.exports, \"hasChildren\", () => $f781defdc25f69c3$export$bd5ff50f0e53d41c);\n\nvar $1RLFx = parcelRequire(\"1RLFx\");\nclass $f781defdc25f69c3$export$85c928794f8d04d4 {\n constructor(){\n /** Parent of the node */ this.parent = null;\n /** Previous sibling */ this.prev = null;\n /** Next sibling */ this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */ this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */ this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */ cloneNode(recursive = false) {\n return $f781defdc25f69c3$export$ae8e35ea29ddac22(this, recursive);\n }\n}\nclass $f781defdc25f69c3$export$c3569d91cd44d357 extends $f781defdc25f69c3$export$85c928794f8d04d4 {\n /**\n * @param data The content of the data node\n */ constructor(data){\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\nclass $f781defdc25f69c3$export$5f1af8db9871e1d6 extends $f781defdc25f69c3$export$c3569d91cd44d357 {\n constructor(){\n super(...arguments);\n this.type = (0, $1RLFx.ElementType).Text;\n }\n get nodeType() {\n return 3;\n }\n}\nclass $f781defdc25f69c3$export$4d299b491347818a extends $f781defdc25f69c3$export$c3569d91cd44d357 {\n constructor(){\n super(...arguments);\n this.type = (0, $1RLFx.ElementType).Comment;\n }\n get nodeType() {\n return 8;\n }\n}\nclass $f781defdc25f69c3$export$9269dce19ee35e96 extends $f781defdc25f69c3$export$c3569d91cd44d357 {\n constructor(name, data){\n super(data);\n this.name = name;\n this.type = (0, $1RLFx.ElementType).Directive;\n }\n get nodeType() {\n return 1;\n }\n}\nclass $f781defdc25f69c3$export$62be934f90997196 extends $f781defdc25f69c3$export$85c928794f8d04d4 {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */ constructor(children){\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */ get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */ get lastChild() {\n return this.children.length > 0 ? this.children[this.children.length - 1] : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nclass $f781defdc25f69c3$export$1f8b8f7e5c763232 extends $f781defdc25f69c3$export$62be934f90997196 {\n constructor(){\n super(...arguments);\n this.type = (0, $1RLFx.ElementType).CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\nclass $f781defdc25f69c3$export$b34a105447964f9f extends $f781defdc25f69c3$export$62be934f90997196 {\n constructor(){\n super(...arguments);\n this.type = (0, $1RLFx.ElementType).Root;\n }\n get nodeType() {\n return 9;\n }\n}\nclass $f781defdc25f69c3$export$db77ccec0bb4ccac extends $f781defdc25f69c3$export$62be934f90997196 {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */ constructor(name, attribs, children = [], type = name === \"script\" ? (0, $1RLFx.ElementType).Script : name === \"style\" ? (0, $1RLFx.ElementType).Style : (0, $1RLFx.ElementType).Tag){\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name)=>{\n var _a, _b;\n return {\n name: name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name]\n };\n });\n }\n}\nfunction $f781defdc25f69c3$export$3bf645f08efe3292(node) {\n return (0, $1RLFx.isTag)(node);\n}\nfunction $f781defdc25f69c3$export$c2d65aed98d39b56(node) {\n return node.type === (0, $1RLFx.ElementType).CDATA;\n}\nfunction $f781defdc25f69c3$export$1879817ac5c922b7(node) {\n return node.type === (0, $1RLFx.ElementType).Text;\n}\nfunction $f781defdc25f69c3$export$3ab01370f5e64ac8(node) {\n return node.type === (0, $1RLFx.ElementType).Comment;\n}\nfunction $f781defdc25f69c3$export$4b5d79f26e0e3ad5(node) {\n return node.type === (0, $1RLFx.ElementType).Directive;\n}\nfunction $f781defdc25f69c3$export$62858bae88b53fd0(node) {\n return node.type === (0, $1RLFx.ElementType).Root;\n}\nfunction $f781defdc25f69c3$export$bd5ff50f0e53d41c(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nfunction $f781defdc25f69c3$export$ae8e35ea29ddac22(node, recursive = false) {\n let result;\n if ($f781defdc25f69c3$export$1879817ac5c922b7(node)) result = new $f781defdc25f69c3$export$5f1af8db9871e1d6(node.data);\n else if ($f781defdc25f69c3$export$3ab01370f5e64ac8(node)) result = new $f781defdc25f69c3$export$4d299b491347818a(node.data);\n else if ($f781defdc25f69c3$export$3bf645f08efe3292(node)) {\n const children = recursive ? $f781defdc25f69c3$var$cloneChildren(node.children) : [];\n const clone = new $f781defdc25f69c3$export$db77ccec0bb4ccac(node.name, {\n ...node.attribs\n }, children);\n children.forEach((child)=>child.parent = clone);\n if (node.namespace != null) clone.namespace = node.namespace;\n if (node[\"x-attribsNamespace\"]) clone[\"x-attribsNamespace\"] = {\n ...node[\"x-attribsNamespace\"]\n };\n if (node[\"x-attribsPrefix\"]) clone[\"x-attribsPrefix\"] = {\n ...node[\"x-attribsPrefix\"]\n };\n result = clone;\n } else if ($f781defdc25f69c3$export$c2d65aed98d39b56(node)) {\n const children = recursive ? $f781defdc25f69c3$var$cloneChildren(node.children) : [];\n const clone = new $f781defdc25f69c3$export$1f8b8f7e5c763232(children);\n children.forEach((child)=>child.parent = clone);\n result = clone;\n } else if ($f781defdc25f69c3$export$62858bae88b53fd0(node)) {\n const children = recursive ? $f781defdc25f69c3$var$cloneChildren(node.children) : [];\n const clone = new $f781defdc25f69c3$export$b34a105447964f9f(children);\n children.forEach((child)=>child.parent = clone);\n if (node[\"x-mode\"]) clone[\"x-mode\"] = node[\"x-mode\"];\n result = clone;\n } else if ($f781defdc25f69c3$export$4b5d79f26e0e3ad5(node)) {\n const instruction = new $f781defdc25f69c3$export$9269dce19ee35e96(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n } else throw new Error(`Not implemented yet: ${node.type}`);\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) result.sourceCodeLocation = node.sourceCodeLocation;\n return result;\n}\nfunction $f781defdc25f69c3$var$cloneChildren(childs) {\n const children = childs.map((child)=>$f781defdc25f69c3$export$ae8e35ea29ddac22(child, true));\n for(let i = 1; i < children.length; i++){\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n\n});\n\n\nparcelRegister(\"eNMmU\", function(module, exports) {\n$parcel$export(module.exports, \"getFeed\", () => (parcelRequire(\"9YZre\")).getFeed);\nparcelRequire(\"1LvIR\");\nparcelRequire(\"63Sud\");\nparcelRequire(\"fVc2z\");\nparcelRequire(\"jAAIj\");\nparcelRequire(\"7zAkY\");\nparcelRequire(\"dIjgl\");\nparcelRequire(\"9YZre\");\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\n\n});\nparcelRegister(\"1LvIR\", function(module, exports) {\n\n$parcel$export(module.exports, \"textContent\", () => $1492c9a788fb16e1$export$e0e0794250e9118f);\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\n\nvar $avuoa = parcelRequire(\"avuoa\");\n\nvar $1RLFx = parcelRequire(\"1RLFx\");\nfunction $1492c9a788fb16e1$export$39484b727cc2f324(node, options) {\n return (0, $avuoa.default)(node, options);\n}\nfunction $1492c9a788fb16e1$export$7ed15b4d2218408(node, options) {\n return (0, $lftuc.hasChildren)(node) ? node.children.map((node)=>$1492c9a788fb16e1$export$39484b727cc2f324(node, options)).join(\"\") : \"\";\n}\nfunction $1492c9a788fb16e1$export$c72d34660a162238(node) {\n if (Array.isArray(node)) return node.map($1492c9a788fb16e1$export$c72d34660a162238).join(\"\");\n if ((0, $lftuc.isTag)(node)) return node.name === \"br\" ? \"\\n\" : $1492c9a788fb16e1$export$c72d34660a162238(node.children);\n if ((0, $lftuc.isCDATA)(node)) return $1492c9a788fb16e1$export$c72d34660a162238(node.children);\n if ((0, $lftuc.isText)(node)) return node.data;\n return \"\";\n}\nfunction $1492c9a788fb16e1$export$e0e0794250e9118f(node) {\n if (Array.isArray(node)) return node.map($1492c9a788fb16e1$export$e0e0794250e9118f).join(\"\");\n if ((0, $lftuc.hasChildren)(node) && !(0, $lftuc.isComment)(node)) return $1492c9a788fb16e1$export$e0e0794250e9118f(node.children);\n if ((0, $lftuc.isText)(node)) return node.data;\n return \"\";\n}\nfunction $1492c9a788fb16e1$export$5864bc2a45f1eb81(node) {\n if (Array.isArray(node)) return node.map($1492c9a788fb16e1$export$5864bc2a45f1eb81).join(\"\");\n if ((0, $lftuc.hasChildren)(node) && (node.type === (0, $1RLFx.ElementType).Tag || (0, $lftuc.isCDATA)(node))) return $1492c9a788fb16e1$export$5864bc2a45f1eb81(node.children);\n if ((0, $lftuc.isText)(node)) return node.data;\n return \"\";\n}\n\n});\nparcelRegister(\"avuoa\", function(module, exports) {\n\n$parcel$export(module.exports, \"render\", () => $7a645f35b51bdf0b$export$b3890eb0ae9dca99);\n$parcel$export(module.exports, \"default\", () => $7a645f35b51bdf0b$export$2e2bcd8739ae039);\n/*\n * Module dependencies\n */ \nvar $1RLFx = parcelRequire(\"1RLFx\");\nparcelRequire(\"cAp4G\");\nvar $i7QF4 = parcelRequire(\"i7QF4\");\n\nvar $5CdvS = parcelRequire(\"5CdvS\");\nconst $7a645f35b51bdf0b$var$unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\"\n]);\nfunction $7a645f35b51bdf0b$var$replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */ function $7a645f35b51bdf0b$var$formatAttributes(attributes, opts) {\n var _a;\n if (!attributes) return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false ? $7a645f35b51bdf0b$var$replaceQuotes : opts.xmlMode || opts.encodeEntities !== \"utf8\" ? (0, $i7QF4.encodeXML) : (0, $i7QF4.escapeAttribute);\n return Object.keys(attributes).map((key)=>{\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") /* Fix up mixed-case attribute names */ key = (_b = (0, $5CdvS.attributeNames).get(key)) !== null && _b !== void 0 ? _b : key;\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") return key;\n return `${key}=\"${encode(value)}\"`;\n }).join(\" \");\n}\n/**\n * Self-enclosing tags\n */ const $7a645f35b51bdf0b$var$singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\"\n]);\nfunction $7a645f35b51bdf0b$export$b3890eb0ae9dca99(node, options = {}) {\n const nodes = \"length\" in node ? node : [\n node\n ];\n let output = \"\";\n for(let i = 0; i < nodes.length; i++)output += $7a645f35b51bdf0b$var$renderNode(nodes[i], options);\n return output;\n}\nvar $7a645f35b51bdf0b$export$2e2bcd8739ae039 = $7a645f35b51bdf0b$export$b3890eb0ae9dca99;\nfunction $7a645f35b51bdf0b$var$renderNode(node, options) {\n switch(node.type){\n case $1RLFx.Root:\n return $7a645f35b51bdf0b$export$b3890eb0ae9dca99(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case $1RLFx.Doctype:\n case $1RLFx.Directive:\n return $7a645f35b51bdf0b$var$renderDirective(node);\n case $1RLFx.Comment:\n return $7a645f35b51bdf0b$var$renderComment(node);\n case $1RLFx.CDATA:\n return $7a645f35b51bdf0b$var$renderCdata(node);\n case $1RLFx.Script:\n case $1RLFx.Style:\n case $1RLFx.Tag:\n return $7a645f35b51bdf0b$var$renderTag(node, options);\n case $1RLFx.Text:\n return $7a645f35b51bdf0b$var$renderText(node, options);\n }\n}\nconst $7a645f35b51bdf0b$var$foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\"\n]);\nconst $7a645f35b51bdf0b$var$foreignElements = new Set([\n \"svg\",\n \"math\"\n]);\nfunction $7a645f35b51bdf0b$var$renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */ elem.name = (_a = (0, $5CdvS.elementNames).get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */ if (elem.parent && $7a645f35b51bdf0b$var$foreignModeIntegrationPoints.has(elem.parent.name)) opts = {\n ...opts,\n xmlMode: false\n };\n }\n if (!opts.xmlMode && $7a645f35b51bdf0b$var$foreignElements.has(elem.name)) opts = {\n ...opts,\n xmlMode: \"foreign\"\n };\n let tag = `<${elem.name}`;\n const attribs = $7a645f35b51bdf0b$var$formatAttributes(elem.attribs, opts);\n if (attribs) tag += ` ${attribs}`;\n if (elem.children.length === 0 && (opts.xmlMode ? opts.selfClosingTags !== false : opts.selfClosingTags && $7a645f35b51bdf0b$var$singleTag.has(elem.name))) {\n if (!opts.xmlMode) tag += \" \";\n tag += \"/>\";\n } else {\n tag += \">\";\n if (elem.children.length > 0) tag += $7a645f35b51bdf0b$export$b3890eb0ae9dca99(elem.children, opts);\n if (opts.xmlMode || !$7a645f35b51bdf0b$var$singleTag.has(elem.name)) tag += `${elem.name}>`;\n }\n return tag;\n}\nfunction $7a645f35b51bdf0b$var$renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction $7a645f35b51bdf0b$var$renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false && !(!opts.xmlMode && elem.parent && $7a645f35b51bdf0b$var$unencodedElements.has(elem.parent.name))) data = opts.xmlMode || opts.encodeEntities !== \"utf8\" ? (0, $i7QF4.encodeXML)(data) : (0, $i7QF4.escapeText)(data);\n return data;\n}\nfunction $7a645f35b51bdf0b$var$renderCdata(elem) {\n return ``;\n}\nfunction $7a645f35b51bdf0b$var$renderComment(elem) {\n return ``;\n}\n\n});\nparcelRegister(\"cAp4G\", function(module, exports) {\n\n$parcel$export(module.exports, \"encodeXML\", () => (parcelRequire(\"i7QF4\")).encodeXML);\n$parcel$export(module.exports, \"escapeAttribute\", () => (parcelRequire(\"i7QF4\")).escapeAttribute);\n$parcel$export(module.exports, \"escapeText\", () => (parcelRequire(\"i7QF4\")).escapeText);\n\nvar $2vZnL = parcelRequire(\"2vZnL\");\n\nvar $6QxPZ = parcelRequire(\"6QxPZ\");\n\nvar $i7QF4 = parcelRequire(\"i7QF4\");\nvar $929c4c22a3253652$export$b8c86583d9718b50;\n(function(EntityLevel) {\n /** Support only XML entities. */ EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */ EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})($929c4c22a3253652$export$b8c86583d9718b50 || ($929c4c22a3253652$export$b8c86583d9718b50 = {}));\nvar $929c4c22a3253652$export$1851b20d614eb756;\n(function(EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */ EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */ EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */ EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */ EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */ EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})($929c4c22a3253652$export$1851b20d614eb756 || ($929c4c22a3253652$export$1851b20d614eb756 = {}));\nfunction $929c4c22a3253652$export$2f872c0f2117be69(data, options = $929c4c22a3253652$export$b8c86583d9718b50.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === $929c4c22a3253652$export$b8c86583d9718b50.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return (0, $2vZnL.decodeHTML)(data, mode);\n }\n return (0, $2vZnL.decodeXML)(data);\n}\nfunction $929c4c22a3253652$export$c94669f4c7d36be4(data, options = $929c4c22a3253652$export$b8c86583d9718b50.XML) {\n var _a;\n const opts = typeof options === \"number\" ? {\n level: options\n } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : opts.mode = (0, $2vZnL.DecodingMode).Strict;\n return $929c4c22a3253652$export$2f872c0f2117be69(data, opts);\n}\nfunction $929c4c22a3253652$export$c564cdbbe6da493(data, options = $929c4c22a3253652$export$b8c86583d9718b50.XML) {\n const opts = typeof options === \"number\" ? {\n level: options\n } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.UTF8) return (0, $i7QF4.escapeUTF8)(data);\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.Attribute) return (0, $i7QF4.escapeAttribute)(data);\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.Text) return (0, $i7QF4.escapeText)(data);\n if (opts.level === $929c4c22a3253652$export$b8c86583d9718b50.HTML) {\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.ASCII) return (0, $6QxPZ.encodeNonAsciiHTML)(data);\n return (0, $6QxPZ.encodeHTML)(data);\n }\n // ASCII and Extensive are equivalent\n return (0, $i7QF4.encodeXML)(data);\n}\n\n});\nparcelRegister(\"2vZnL\", function(module, exports) {\n\n$parcel$export(module.exports, \"DecodingMode\", () => $1d4e17494442e5eb$export$8c8f129ce60f53c);\n$parcel$export(module.exports, \"decodeHTML\", () => $1d4e17494442e5eb$export$f045cb747ce77a19);\n$parcel$export(module.exports, \"decodeXML\", () => $1d4e17494442e5eb$export$88e3b9643a8bd06e);\n\nvar $iedzx = parcelRequire(\"iedzx\");\n\nvar $cjXy9 = parcelRequire(\"cjXy9\");\n\nvar $1mqh8 = parcelRequire(\"1mqh8\");\nvar $1d4e17494442e5eb$var$CharCodes;\n(function(CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})($1d4e17494442e5eb$var$CharCodes || ($1d4e17494442e5eb$var$CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */ const $1d4e17494442e5eb$var$TO_LOWER_BIT = 32;\nvar $1d4e17494442e5eb$export$6a4325c613e0faec;\n(function(BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})($1d4e17494442e5eb$export$6a4325c613e0faec || ($1d4e17494442e5eb$export$6a4325c613e0faec = {}));\nfunction $1d4e17494442e5eb$var$isNumber(code) {\n return code >= $1d4e17494442e5eb$var$CharCodes.ZERO && code <= $1d4e17494442e5eb$var$CharCodes.NINE;\n}\nfunction $1d4e17494442e5eb$var$isHexadecimalCharacter(code) {\n return code >= $1d4e17494442e5eb$var$CharCodes.UPPER_A && code <= $1d4e17494442e5eb$var$CharCodes.UPPER_F || code >= $1d4e17494442e5eb$var$CharCodes.LOWER_A && code <= $1d4e17494442e5eb$var$CharCodes.LOWER_F;\n}\nfunction $1d4e17494442e5eb$var$isAsciiAlphaNumeric(code) {\n return code >= $1d4e17494442e5eb$var$CharCodes.UPPER_A && code <= $1d4e17494442e5eb$var$CharCodes.UPPER_Z || code >= $1d4e17494442e5eb$var$CharCodes.LOWER_A && code <= $1d4e17494442e5eb$var$CharCodes.LOWER_Z || $1d4e17494442e5eb$var$isNumber(code);\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */ function $1d4e17494442e5eb$var$isEntityInAttributeInvalidEnd(code) {\n return code === $1d4e17494442e5eb$var$CharCodes.EQUALS || $1d4e17494442e5eb$var$isAsciiAlphaNumeric(code);\n}\nvar $1d4e17494442e5eb$var$EntityDecoderState;\n(function(EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})($1d4e17494442e5eb$var$EntityDecoderState || ($1d4e17494442e5eb$var$EntityDecoderState = {}));\nvar $1d4e17494442e5eb$export$8c8f129ce60f53c;\n(function(DecodingMode) {\n /** Entities in text nodes that can end with any character. */ DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */ DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */ DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})($1d4e17494442e5eb$export$8c8f129ce60f53c || ($1d4e17494442e5eb$export$8c8f129ce60f53c = {}));\nclass $1d4e17494442e5eb$export$15263a93ff7ec8ba {\n constructor(/** The tree used to decode entities. */ decodeTree, /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */ emitCodePoint, /** An object that is used to produce errors. */ errors){\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */ this.state = $1d4e17494442e5eb$var$EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */ this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */ this.result = 0;\n /** The current index in the decode tree. */ this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */ this.excess = 1;\n /** The mode in which the decoder is operating. */ this.decodeMode = $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict;\n }\n /** Resets the instance to make it reusable. */ startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ write(str, offset) {\n switch(this.state){\n case $1d4e17494442e5eb$var$EntityDecoderState.EntityStart:\n if (str.charCodeAt(offset) === $1d4e17494442e5eb$var$CharCodes.NUM) {\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericStart:\n return this.stateNumericStart(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericDecimal:\n return this.stateNumericDecimal(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericHex:\n return this.stateNumericHex(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NamedEntity:\n return this.stateNamedEntity(str, offset);\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNumericStart(str, offset) {\n if (offset >= str.length) return -1;\n if ((str.charCodeAt(offset) | $1d4e17494442e5eb$var$TO_LOWER_BIT) === $1d4e17494442e5eb$var$CharCodes.LOWER_X) {\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNumericHex(str, offset) {\n const startIdx = offset;\n while(offset < str.length){\n const char = str.charCodeAt(offset);\n if ($1d4e17494442e5eb$var$isNumber(char) || $1d4e17494442e5eb$var$isHexadecimalCharacter(char)) offset += 1;\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while(offset < str.length){\n const char = str.charCodeAt(offset);\n if ($1d4e17494442e5eb$var$isNumber(char)) offset += 1;\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */ emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === $1d4e17494442e5eb$var$CharCodes.SEMI) this.consumed += 1;\n else if (this.decodeMode === $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict) return 0;\n this.emitCodePoint((0, $1mqh8.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== $1d4e17494442e5eb$var$CharCodes.SEMI) this.errors.missingSemicolonAfterCharacterReference();\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNamedEntity(str, offset) {\n const { decodeTree: decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & $1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH) >> 14;\n for(; offset < str.length; offset++, this.excess++){\n const char = str.charCodeAt(offset);\n this.treeIndex = $1d4e17494442e5eb$export$44c08d99945e6276(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) return this.result === 0 || // If we are parsing an attribute\n this.decodeMode === $1d4e17494442e5eb$export$8c8f129ce60f53c.Attribute && // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 || // And there should be no invalid characters.\n $1d4e17494442e5eb$var$isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();\n current = decodeTree[this.treeIndex];\n valueLength = (current & $1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === $1d4e17494442e5eb$var$CharCodes.SEMI) return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */ emitNotTerminatedNamedEntity() {\n var _a;\n const { result: result, decodeTree: decodeTree } = this;\n const valueLength = (decodeTree[result] & $1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 || _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */ emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree: decodeTree } = this;\n this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~$1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH : decodeTree[result + 1], consumed);\n if (valueLength === 3) // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */ end() {\n var _a;\n switch(this.state){\n case $1d4e17494442e5eb$var$EntityDecoderState.NamedEntity:\n // Emit a named entity if we have one.\n return this.result !== 0 && (this.decodeMode !== $1d4e17494442e5eb$export$8c8f129ce60f53c.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;\n // Otherwise, emit a numeric entity if we have one.\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericDecimal:\n return this.emitNumericEntity(0, 2);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericHex:\n return this.emitNumericEntity(0, 3);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericStart:\n (_a = this.errors) === null || _a === void 0 || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n case $1d4e17494442e5eb$var$EntityDecoderState.EntityStart:\n // Return 0 if we have no entity.\n return 0;\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */ function $1d4e17494442e5eb$var$getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new $1d4e17494442e5eb$export$15263a93ff7ec8ba(decodeTree, (str)=>ret += (0, $1mqh8.fromCodePoint)(str));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while((offset = str.indexOf(\"&\", offset)) >= 0){\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\nfunction $1d4e17494442e5eb$export$44c08d99945e6276(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & $1d4e17494442e5eb$export$6a4325c613e0faec.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & $1d4e17494442e5eb$export$6a4325c613e0faec.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while(lo <= hi){\n const mid = lo + hi >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) lo = mid + 1;\n else if (midVal > char) hi = mid - 1;\n else return decodeTree[mid + branchCount];\n }\n return -1;\n}\nconst $1d4e17494442e5eb$var$htmlDecoder = $1d4e17494442e5eb$var$getDecoder((0, $iedzx.default));\nconst $1d4e17494442e5eb$var$xmlDecoder = $1d4e17494442e5eb$var$getDecoder((0, $cjXy9.default));\nfunction $1d4e17494442e5eb$export$f045cb747ce77a19(str, mode = $1d4e17494442e5eb$export$8c8f129ce60f53c.Legacy) {\n return $1d4e17494442e5eb$var$htmlDecoder(str, mode);\n}\nfunction $1d4e17494442e5eb$export$49f5e8089adb006a(str) {\n return $1d4e17494442e5eb$var$htmlDecoder(str, $1d4e17494442e5eb$export$8c8f129ce60f53c.Attribute);\n}\nfunction $1d4e17494442e5eb$export$da52f4371b3f37de(str) {\n return $1d4e17494442e5eb$var$htmlDecoder(str, $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict);\n}\nfunction $1d4e17494442e5eb$export$88e3b9643a8bd06e(str) {\n return $1d4e17494442e5eb$var$xmlDecoder(str, $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict);\n}\n\n});\nparcelRegister(\"iedzx\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $d4540ff683f7394b$export$2e2bcd8739ae039);\n// Generated using scripts/write-decode-map.ts\nvar $d4540ff683f7394b$export$2e2bcd8739ae039 = new Uint16Array(// prettier-ignore\n'\\u1D41<\\xd5\\u0131\\u028A\\u049D\\u057B\\u05D0\\u0675\\u06DE\\u07A2\\u07D6\\u080F\\u0A4A\\u0A91\\u0DA1\\u0E6D\\u0F09\\u0F26\\u10CA\\u1228\\u12E1\\u1415\\u149D\\u14C3\\u14DF\\u1525\\0\\0\\0\\0\\0\\0\\u156B\\u16CD\\u198D\\u1C12\\u1DDD\\u1F7E\\u2060\\u21B0\\u228D\\u23C0\\u23FB\\u2442\\u2824\\u2912\\u2D08\\u2E48\\u2FCE\\u3016\\u32BA\\u3639\\u37AC\\u38FE\\u3A28\\u3A71\\u3AE0\\u3B2E\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803B\\xc6\\u40C6P\\u803B&\\u4026cute\\u803B\\xc1\\u40C1reve;\\u4102\\u0100iyx}rc\\u803B\\xc2\\u40C2;\\u4410r;\\uC000\\ud835\\udd04rave\\u803B\\xc0\\u40C0pha;\\u4391acr;\\u4100d;\\u6A53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uC000\\ud835\\udd38plyFunction;\\u6061ing\\u803B\\xc5\\u40C5\\u0100cs\\xbe\\xc3r;\\uC000\\ud835\\udc9cign;\\u6254ilde\\u803B\\xc3\\u40C3ml\\u803B\\xc4\\u40C4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011C\\u0122\\u0127\\u012A\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6AE7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010B\\u0114ause;\\u6235noullis;\\u612Ca;\\u4392r;\\uC000\\ud835\\udd05pf;\\uC000\\ud835\\udd39eve;\\u42D8c\\xf2\\u0113mpeq;\\u624E\\u0700HOacdefhilorsu\\u014D\\u0151\\u0156\\u0180\\u019E\\u01A2\\u01B5\\u01B7\\u01BA\\u01DC\\u0215\\u0273\\u0278\\u027Ecy;\\u4427PY\\u803B\\xa9\\u40A9\\u0180cpy\\u015D\\u0162\\u017Aute;\\u4106\\u0100;i\\u0167\\u0168\\u62D2talDifferentialD;\\u6145leys;\\u612D\\u0200aeio\\u0189\\u018E\\u0194\\u0198ron;\\u410Cdil\\u803B\\xc7\\u40C7rc;\\u4108nint;\\u6230ot;\\u410A\\u0100dn\\u01A7\\u01ADilla;\\u40B8terDot;\\u40B7\\xf2\\u017Fi;\\u43A7rcle\\u0200DMPT\\u01C7\\u01CB\\u01D1\\u01D6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01E2\\u01F8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020FoubleQuote;\\u601Duote;\\u6019\\u0200lnpu\\u021E\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6A74\\u0180git\\u022F\\u0236\\u023Aruent;\\u6261nt;\\u622FourIntegral;\\u622E\\u0100fr\\u024C\\u024E;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6A2Fcr;\\uC000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62D3ap;\\u624D\\u0580DJSZacefios\\u02A0\\u02AC\\u02B0\\u02B4\\u02B8\\u02CB\\u02D7\\u02E1\\u02E6\\u0333\\u048D\\u0100;o\\u0179\\u02A5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440F\\u0180grs\\u02BF\\u02C4\\u02C7ger;\\u6021r;\\u61A1hv;\\u6AE4\\u0100ay\\u02D0\\u02D5ron;\\u410E;\\u4414l\\u0100;t\\u02DD\\u02DE\\u6207a;\\u4394r;\\uC000\\ud835\\udd07\\u0100af\\u02EB\\u0327\\u0100cm\\u02F0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031Ccute;\\u40B4o\\u0174\\u030B\\u030D;\\u42D9bleAcute;\\u42DDrave;\\u4060ilde;\\u42DCond;\\u62C4ferentialD;\\u6146\\u0470\\u033D\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uC000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034D\\u40A8ot;\\u60DCqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03CF\\u03E2\\u03F8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037B\\xbb\\u0349nArrow;\\u61D3\\u0100eo\\u0387\\u03A4ft\\u0180ART\\u0390\\u0396\\u03A1rrow;\\u61D0ightArrow;\\u61D4e\\xe5\\u02CAng\\u0100LR\\u03AB\\u03C4eft\\u0100AR\\u03B3\\u03B9rrow;\\u67F8ightArrow;\\u67FAightArrow;\\u67F9ight\\u0100AT\\u03D8\\u03DErrow;\\u61D2ee;\\u62A8p\\u0241\\u03E9\\0\\0\\u03EFrrow;\\u61D1ownArrow;\\u61D5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042A\\u0430\\u045E\\u047F\\u037Crrow\\u0180;BU\\u041D\\u041E\\u0422\\u6193ar;\\u6913pArrow;\\u61F5reve;\\u4311eft\\u02D2\\u043A\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695Eector\\u0100;B\\u0459\\u045A\\u61BDar;\\u6956ight\\u01D4\\u0467\\0\\u0471eeVector;\\u695Fector\\u0100;B\\u047A\\u047B\\u61C1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62A4rrow;\\u61A7\\u0100ct\\u0492\\u0497r;\\uC000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04BD\\u04C0\\u04C4\\u04CB\\u04DE\\u04E2\\u04E7\\u04EE\\u04F5\\u0521\\u052F\\u0536\\u0552\\u055D\\u0560\\u0565G;\\u414AH\\u803B\\xd0\\u40D0cute\\u803B\\xc9\\u40C9\\u0180aiy\\u04D2\\u04D7\\u04DCron;\\u411Arc\\u803B\\xca\\u40CA;\\u442Dot;\\u4116r;\\uC000\\ud835\\udd08rave\\u803B\\xc8\\u40C8ement;\\u6208\\u0100ap\\u04FA\\u04FEcr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65FBerySmallSquare;\\u65AB\\u0100gp\\u0526\\u052Aon;\\u4118f;\\uC000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053C\\u0549l\\u0100;T\\u0542\\u0543\\u6A75ilde;\\u6242librium;\\u61CC\\u0100ci\\u0557\\u055Ar;\\u6130m;\\u6A73a;\\u4397ml\\u803B\\xcb\\u40CB\\u0100ip\\u056A\\u056Fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058D\\u05B2\\u05CCy;\\u4424r;\\uC000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05A3mallSquare;\\u65FCerySmallSquare;\\u65AA\\u0370\\u05BA\\0\\u05BF\\0\\0\\u05C4f;\\uC000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05CB\\u0600JTabcdfgorst\\u05E8\\u05EC\\u05EF\\u05FA\\u0600\\u0612\\u0616\\u061B\\u061D\\u0623\\u066C\\u0672cy;\\u4403\\u803B>\\u403Emma\\u0100;d\\u05F7\\u05F8\\u4393;\\u43DCreve;\\u411E\\u0180eiy\\u0607\\u060C\\u0610dil;\\u4122rc;\\u411C;\\u4413ot;\\u4120r;\\uC000\\ud835\\udd0a;\\u62D9pf;\\uC000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064E\\u0656\\u065B\\u0666qual\\u0100;L\\u063E\\u063F\\u6265ess;\\u62DBullEqual;\\u6267reater;\\u6AA2ess;\\u6277lantEqual;\\u6A7Eilde;\\u6273cr;\\uC000\\ud835\\udca2;\\u626B\\u0400Aacfiosu\\u0685\\u068B\\u0696\\u069B\\u069E\\u06AA\\u06BE\\u06CARDcy;\\u442A\\u0100ct\\u0690\\u0694ek;\\u42C7;\\u405Eirc;\\u4124r;\\u610ClbertSpace;\\u610B\\u01F0\\u06AF\\0\\u06B2f;\\u610DizontalLine;\\u6500\\u0100ct\\u06C3\\u06C5\\xf2\\u06A9rok;\\u4126mp\\u0144\\u06D0\\u06D8ownHum\\xf0\\u012Fqual;\\u624F\\u0700EJOacdfgmnostu\\u06FA\\u06FE\\u0703\\u0707\\u070E\\u071A\\u071E\\u0721\\u0728\\u0744\\u0778\\u078B\\u078F\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803B\\xcd\\u40CD\\u0100iy\\u0713\\u0718rc\\u803B\\xce\\u40CE;\\u4418ot;\\u4130r;\\u6111rave\\u803B\\xcc\\u40CC\\u0180;ap\\u0720\\u072F\\u073F\\u0100cg\\u0734\\u0737r;\\u412AinaryI;\\u6148lie\\xf3\\u03DD\\u01F4\\u0749\\0\\u0762\\u0100;e\\u074D\\u074E\\u622C\\u0100gr\\u0753\\u0758ral;\\u622Bsection;\\u62C2isible\\u0100CT\\u076C\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077F\\u0783\\u0788on;\\u412Ef;\\uC000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01EB\\u079A\\0\\u079Ecy;\\u4406l\\u803B\\xcf\\u40CF\\u0280cfosu\\u07AC\\u07B7\\u07BC\\u07C2\\u07D0\\u0100iy\\u07B1\\u07B5rc;\\u4134;\\u4419r;\\uC000\\ud835\\udd0dpf;\\uC000\\ud835\\udd41\\u01E3\\u07C7\\0\\u07CCr;\\uC000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07E4\\u07E8\\u07EC\\u07F1\\u07FD\\u0802\\u0808cy;\\u4425cy;\\u440Cppa;\\u439A\\u0100ey\\u07F6\\u07FBdil;\\u4136;\\u441Ar;\\uC000\\ud835\\udd0epf;\\uC000\\ud835\\udd42cr;\\uC000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082C\\u0850\\u0863\\u09B3\\u09B8\\u09C7\\u09CD\\u0A37\\u0A47cy;\\u4409\\u803B<\\u403C\\u0280cmnpr\\u0837\\u083C\\u0841\\u0844\\u084Dute;\\u4139bda;\\u439Bg;\\u67EAlacetrf;\\u6112r;\\u619E\\u0180aey\\u0857\\u085C\\u0861ron;\\u413Ddil;\\u413B;\\u441B\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087E\\u08A9\\u08B1\\u08E0\\u08E6\\u08FC\\u092F\\u095B\\u0390\\u096A\\u0100nr\\u0883\\u088FgleBracket;\\u67E8row\\u0180;BR\\u0899\\u089A\\u089E\\u6190ar;\\u61E4ightArrow;\\u61C6eiling;\\u6308o\\u01F5\\u08B7\\0\\u08C3bleBracket;\\u67E6n\\u01D4\\u08C8\\0\\u08D2eeVector;\\u6961ector\\u0100;B\\u08DB\\u08DC\\u61C3ar;\\u6959loor;\\u630Aight\\u0100AV\\u08EF\\u08F5rrow;\\u6194ector;\\u694E\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090A\\u0910\\u62A3rrow;\\u61A4ector;\\u695Aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62B2ar;\\u69CFqual;\\u62B4p\\u0180DTV\\u0937\\u0942\\u094CownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61BFar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61BCar;\\u6952ight\\xe1\\u039Cs\\u0300EFGLST\\u097E\\u098B\\u0995\\u099D\\u09A2\\u09ADqualGreater;\\u62DAullEqual;\\u6266reater;\\u6276ess;\\u6AA1lantEqual;\\u6A7Dilde;\\u6272r;\\uC000\\ud835\\udd0f\\u0100;e\\u09BD\\u09BE\\u62D8ftarrow;\\u61DAidot;\\u413F\\u0180npw\\u09D4\\u0A16\\u0A1Bg\\u0200LRlr\\u09DE\\u09F7\\u0A02\\u0A10eft\\u0100AR\\u09E6\\u09ECrrow;\\u67F5ightArrow;\\u67F7ightArrow;\\u67F6eft\\u0100ar\\u03B3\\u0A0Aight\\xe1\\u03BFight\\xe1\\u03CAf;\\uC000\\ud835\\udd43er\\u0100LR\\u0A22\\u0A2CeftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0A3E\\u0A40\\u0A42\\xf2\\u084C;\\u61B0rok;\\u4141;\\u626A\\u0400acefiosu\\u0A5A\\u0A5D\\u0A60\\u0A77\\u0A7C\\u0A85\\u0A8B\\u0A8Ep;\\u6905y;\\u441C\\u0100dl\\u0A65\\u0A6FiumSpace;\\u605Flintrf;\\u6133r;\\uC000\\ud835\\udd10nusPlus;\\u6213pf;\\uC000\\ud835\\udd44c\\xf2\\u0A76;\\u439C\\u0480Jacefostu\\u0AA3\\u0AA7\\u0AAD\\u0AC0\\u0B14\\u0B19\\u0D91\\u0D97\\u0D9Ecy;\\u440Acute;\\u4143\\u0180aey\\u0AB4\\u0AB9\\u0ABEron;\\u4147dil;\\u4145;\\u441D\\u0180gsw\\u0AC7\\u0AF0\\u0B0Eative\\u0180MTV\\u0AD3\\u0ADF\\u0AE8ediumSpace;\\u600Bhi\\u0100cn\\u0AE6\\u0AD8\\xeb\\u0AD9eryThi\\xee\\u0AD9ted\\u0100GL\\u0AF8\\u0B06reaterGreate\\xf2\\u0673essLes\\xf3\\u0A48Line;\\u400Ar;\\uC000\\ud835\\udd11\\u0200Bnpt\\u0B22\\u0B28\\u0B37\\u0B3Areak;\\u6060BreakingSpace;\\u40A0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0B55\\u0B56\\u0B6A\\u0B7C\\u0BA1\\u0BEB\\u0C04\\u0C5E\\u0C84\\u0CA6\\u0CD8\\u0D61\\u0D85\\u6AEC\\u0100ou\\u0B5B\\u0B64ngruent;\\u6262pCap;\\u626DoubleVerticalBar;\\u6226\\u0180lqx\\u0B83\\u0B8A\\u0B9Bement;\\u6209ual\\u0100;T\\u0B92\\u0B93\\u6260ilde;\\uC000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0BB6\\u0BB7\\u0BBD\\u0BC9\\u0BD3\\u0BD8\\u0BE5\\u626Fqual;\\u6271ullEqual;\\uC000\\u2267\\u0338reater;\\uC000\\u226B\\u0338ess;\\u6279lantEqual;\\uC000\\u2A7E\\u0338ilde;\\u6275ump\\u0144\\u0BF2\\u0BFDownHump;\\uC000\\u224E\\u0338qual;\\uC000\\u224F\\u0338e\\u0100fs\\u0C0A\\u0C27tTriangle\\u0180;BE\\u0C1A\\u0C1B\\u0C21\\u62EAar;\\uC000\\u29CF\\u0338qual;\\u62ECs\\u0300;EGLST\\u0C35\\u0C36\\u0C3C\\u0C44\\u0C4B\\u0C58\\u626Equal;\\u6270reater;\\u6278ess;\\uC000\\u226A\\u0338lantEqual;\\uC000\\u2A7D\\u0338ilde;\\u6274ested\\u0100GL\\u0C68\\u0C79reaterGreater;\\uC000\\u2AA2\\u0338essLess;\\uC000\\u2AA1\\u0338recedes\\u0180;ES\\u0C92\\u0C93\\u0C9B\\u6280qual;\\uC000\\u2AAF\\u0338lantEqual;\\u62E0\\u0100ei\\u0CAB\\u0CB9verseElement;\\u620CghtTriangle\\u0180;BE\\u0CCB\\u0CCC\\u0CD2\\u62EBar;\\uC000\\u29D0\\u0338qual;\\u62ED\\u0100qu\\u0CDD\\u0D0CuareSu\\u0100bp\\u0CE8\\u0CF9set\\u0100;E\\u0CF0\\u0CF3\\uC000\\u228F\\u0338qual;\\u62E2erset\\u0100;E\\u0D03\\u0D06\\uC000\\u2290\\u0338qual;\\u62E3\\u0180bcp\\u0D13\\u0D24\\u0D4Eset\\u0100;E\\u0D1B\\u0D1E\\uC000\\u2282\\u20D2qual;\\u6288ceeds\\u0200;EST\\u0D32\\u0D33\\u0D3B\\u0D46\\u6281qual;\\uC000\\u2AB0\\u0338lantEqual;\\u62E1ilde;\\uC000\\u227F\\u0338erset\\u0100;E\\u0D58\\u0D5B\\uC000\\u2283\\u20D2qual;\\u6289ilde\\u0200;EFT\\u0D6E\\u0D6F\\u0D75\\u0D7F\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uC000\\ud835\\udca9ilde\\u803B\\xd1\\u40D1;\\u439D\\u0700Eacdfgmoprstuv\\u0DBD\\u0DC2\\u0DC9\\u0DD5\\u0DDB\\u0DE0\\u0DE7\\u0DFC\\u0E02\\u0E20\\u0E22\\u0E32\\u0E3F\\u0E44lig;\\u4152cute\\u803B\\xd3\\u40D3\\u0100iy\\u0DCE\\u0DD3rc\\u803B\\xd4\\u40D4;\\u441Eblac;\\u4150r;\\uC000\\ud835\\udd12rave\\u803B\\xd2\\u40D2\\u0180aei\\u0DEE\\u0DF2\\u0DF6cr;\\u414Cga;\\u43A9cron;\\u439Fpf;\\uC000\\ud835\\udd46enCurly\\u0100DQ\\u0E0E\\u0E1AoubleQuote;\\u601Cuote;\\u6018;\\u6A54\\u0100cl\\u0E27\\u0E2Cr;\\uC000\\ud835\\udcaaash\\u803B\\xd8\\u40D8i\\u016C\\u0E37\\u0E3Cde\\u803B\\xd5\\u40D5es;\\u6A37ml\\u803B\\xd6\\u40D6er\\u0100BP\\u0E4B\\u0E60\\u0100ar\\u0E50\\u0E53r;\\u603Eac\\u0100ek\\u0E5A\\u0E5C;\\u63DEet;\\u63B4arenthesis;\\u63DC\\u0480acfhilors\\u0E7F\\u0E87\\u0E8A\\u0E8F\\u0E92\\u0E94\\u0E9D\\u0EB0\\u0EFCrtialD;\\u6202y;\\u441Fr;\\uC000\\ud835\\udd13i;\\u43A6;\\u43A0usMinus;\\u40B1\\u0100ip\\u0EA2\\u0EADncareplan\\xe5\\u069Df;\\u6119\\u0200;eio\\u0EB9\\u0EBA\\u0EE0\\u0EE4\\u6ABBcedes\\u0200;EST\\u0EC8\\u0EC9\\u0ECF\\u0EDA\\u627Aqual;\\u6AAFlantEqual;\\u627Cilde;\\u627Eme;\\u6033\\u0100dp\\u0EE9\\u0EEEuct;\\u620Fortion\\u0100;a\\u0225\\u0EF9l;\\u621D\\u0100ci\\u0F01\\u0F06r;\\uC000\\ud835\\udcab;\\u43A8\\u0200Ufos\\u0F11\\u0F16\\u0F1B\\u0F1FOT\\u803B\"\\u4022r;\\uC000\\ud835\\udd14pf;\\u611Acr;\\uC000\\ud835\\udcac\\u0600BEacefhiorsu\\u0F3E\\u0F43\\u0F47\\u0F60\\u0F73\\u0FA7\\u0FAA\\u0FAD\\u1096\\u10A9\\u10B4\\u10BEarr;\\u6910G\\u803B\\xae\\u40AE\\u0180cnr\\u0F4E\\u0F53\\u0F56ute;\\u4154g;\\u67EBr\\u0100;t\\u0F5C\\u0F5D\\u61A0l;\\u6916\\u0180aey\\u0F67\\u0F6C\\u0F71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0F78\\u0F79\\u611Cerse\\u0100EU\\u0F82\\u0F99\\u0100lq\\u0F87\\u0F8Eement;\\u620Builibrium;\\u61CBpEquilibrium;\\u696Fr\\xbb\\u0F79o;\\u43A1ght\\u0400ACDFTUVa\\u0FC1\\u0FEB\\u0FF3\\u1022\\u1028\\u105B\\u1087\\u03D8\\u0100nr\\u0FC6\\u0FD2gleBracket;\\u67E9row\\u0180;BL\\u0FDC\\u0FDD\\u0FE1\\u6192ar;\\u61E5eftArrow;\\u61C4eiling;\\u6309o\\u01F5\\u0FF9\\0\\u1005bleBracket;\\u67E7n\\u01D4\\u100A\\0\\u1014eeVector;\\u695Dector\\u0100;B\\u101D\\u101E\\u61C2ar;\\u6955loor;\\u630B\\u0100er\\u102D\\u1043e\\u0180;AV\\u1035\\u1036\\u103C\\u62A2rrow;\\u61A6ector;\\u695Biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62B3ar;\\u69D0qual;\\u62B5p\\u0180DTV\\u1063\\u106E\\u1078ownVector;\\u694FeeVector;\\u695Cector\\u0100;B\\u1082\\u1083\\u61BEar;\\u6954ector\\u0100;B\\u1091\\u1092\\u61C0ar;\\u6953\\u0100pu\\u109B\\u109Ef;\\u611DndImplies;\\u6970ightarrow;\\u61DB\\u0100ch\\u10B9\\u10BCr;\\u611B;\\u61B1leDelayed;\\u69F4\\u0680HOacfhimoqstu\\u10E4\\u10F1\\u10F7\\u10FD\\u1119\\u111E\\u1151\\u1156\\u1161\\u1167\\u11B5\\u11BB\\u11BF\\u0100Cc\\u10E9\\u10EEHcy;\\u4429y;\\u4428FTcy;\\u442Ccute;\\u415A\\u0280;aeiy\\u1108\\u1109\\u110E\\u1113\\u1117\\u6ABCron;\\u4160dil;\\u415Erc;\\u415C;\\u4421r;\\uC000\\ud835\\udd16ort\\u0200DLRU\\u112A\\u1134\\u113E\\u1149ownArrow\\xbb\\u041EeftArrow\\xbb\\u089AightArrow\\xbb\\u0FDDpArrow;\\u6191gma;\\u43A3allCircle;\\u6218pf;\\uC000\\ud835\\udd4a\\u0272\\u116D\\0\\0\\u1170t;\\u621Aare\\u0200;ISU\\u117B\\u117C\\u1189\\u11AF\\u65A1ntersection;\\u6293u\\u0100bp\\u118F\\u119Eset\\u0100;E\\u1197\\u1198\\u628Fqual;\\u6291erset\\u0100;E\\u11A8\\u11A9\\u6290qual;\\u6292nion;\\u6294cr;\\uC000\\ud835\\udcaear;\\u62C6\\u0200bcmp\\u11C8\\u11DB\\u1209\\u120B\\u0100;s\\u11CD\\u11CE\\u62D0et\\u0100;E\\u11CD\\u11D5qual;\\u6286\\u0100ch\\u11E0\\u1205eeds\\u0200;EST\\u11ED\\u11EE\\u11F4\\u11FF\\u627Bqual;\\u6AB0lantEqual;\\u627Dilde;\\u627FTh\\xe1\\u0F8C;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62D1rset\\u0100;E\\u121C\\u121D\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123E\\u1244\\u1249\\u1255\\u125E\\u1271\\u1276\\u129F\\u12C2\\u12C8\\u12D1ORN\\u803B\\xde\\u40DEADE;\\u6122\\u0100Hc\\u124E\\u1252cy;\\u440By;\\u4426\\u0100bu\\u125A\\u125C;\\u4009;\\u43A4\\u0180aey\\u1265\\u126A\\u126Fron;\\u4164dil;\\u4162;\\u4422r;\\uC000\\ud835\\udd17\\u0100ei\\u127B\\u1289\\u01F2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128E\\u1298kSpace;\\uC000\\u205F\\u200ASpace;\\u6009lde\\u0200;EFT\\u12AB\\u12AC\\u12B2\\u12BC\\u623Cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uC000\\ud835\\udd4bipleDot;\\u60DB\\u0100ct\\u12D6\\u12DBr;\\uC000\\ud835\\udcafrok;\\u4166\\u0AE1\\u12F7\\u130E\\u131A\\u1326\\0\\u132C\\u1331\\0\\0\\0\\0\\0\\u1338\\u133D\\u1377\\u1385\\0\\u13FF\\u1404\\u140A\\u1410\\u0100cr\\u12FB\\u1301ute\\u803B\\xda\\u40DAr\\u0100;o\\u1307\\u1308\\u619Fcir;\\u6949r\\u01E3\\u1313\\0\\u1316y;\\u440Eve;\\u416C\\u0100iy\\u131E\\u1323rc\\u803B\\xdb\\u40DB;\\u4423blac;\\u4170r;\\uC000\\ud835\\udd18rave\\u803B\\xd9\\u40D9acr;\\u416A\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135D\\u0100ar\\u134D\\u1350r;\\u405Fac\\u0100ek\\u1357\\u1359;\\u63DFet;\\u63B5arenthesis;\\u63DDon\\u0100;P\\u1370\\u1371\\u62C3lus;\\u628E\\u0100gp\\u137B\\u137Fon;\\u4172f;\\uC000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13AE\\u13B8\\u13C4\\u03E8\\u13D2\\u13D7\\u13F3rrow\\u0180;BD\\u1150\\u13A0\\u13A4ar;\\u6912ownArrow;\\u61C5ownArrow;\\u6195quilibrium;\\u696Eee\\u0100;A\\u13CB\\u13CC\\u62A5rrow;\\u61A5own\\xe1\\u03F3er\\u0100LR\\u13DE\\u13E8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13F9\\u13FA\\u43D2on;\\u43A5ing;\\u416Ecr;\\uC000\\ud835\\udcb0ilde;\\u4168ml\\u803B\\xdc\\u40DC\\u0480Dbcdefosv\\u1427\\u142C\\u1430\\u1433\\u143E\\u1485\\u148A\\u1490\\u1496ash;\\u62ABar;\\u6AEBy;\\u4412ash\\u0100;l\\u143B\\u143C\\u62A9;\\u6AE6\\u0100er\\u1443\\u1445;\\u62C1\\u0180bty\\u144C\\u1450\\u147Aar;\\u6016\\u0100;i\\u144F\\u1455cal\\u0200BLST\\u1461\\u1465\\u146A\\u1474ar;\\u6223ine;\\u407Ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600Ar;\\uC000\\ud835\\udd19pf;\\uC000\\ud835\\udd4dcr;\\uC000\\ud835\\udcb1dash;\\u62AA\\u0280cefos\\u14A7\\u14AC\\u14B1\\u14B6\\u14BCirc;\\u4174dge;\\u62C0r;\\uC000\\ud835\\udd1apf;\\uC000\\ud835\\udd4ecr;\\uC000\\ud835\\udcb2\\u0200fios\\u14CB\\u14D0\\u14D2\\u14D8r;\\uC000\\ud835\\udd1b;\\u439Epf;\\uC000\\ud835\\udd4fcr;\\uC000\\ud835\\udcb3\\u0480AIUacfosu\\u14F1\\u14F5\\u14F9\\u14FD\\u1504\\u150F\\u1514\\u151A\\u1520cy;\\u442Fcy;\\u4407cy;\\u442Ecute\\u803B\\xdd\\u40DD\\u0100iy\\u1509\\u150Drc;\\u4176;\\u442Br;\\uC000\\ud835\\udd1cpf;\\uC000\\ud835\\udd50cr;\\uC000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153F\\u154B\\u154F\\u155D\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417D;\\u4417ot;\\u417B\\u01F2\\u1554\\0\\u155BoWidt\\xe8\\u0AD9a;\\u4396r;\\u6128pf;\\u6124cr;\\uC000\\ud835\\udcb5\\u0BE1\\u1583\\u158A\\u1590\\0\\u15B0\\u15B6\\u15BF\\0\\0\\0\\0\\u15C6\\u15DB\\u15EB\\u165F\\u166D\\0\\u1695\\u169B\\u16B2\\u16B9\\0\\u16BEcute\\u803B\\xe1\\u40E1reve;\\u4103\\u0300;Ediuy\\u159C\\u159D\\u15A1\\u15A3\\u15A8\\u15AD\\u623E;\\uC000\\u223E\\u0333;\\u623Frc\\u803B\\xe2\\u40E2te\\u80BB\\xb4\\u0306;\\u4430lig\\u803B\\xe6\\u40E6\\u0100;r\\xb2\\u15BA;\\uC000\\ud835\\udd1erave\\u803B\\xe0\\u40E0\\u0100ep\\u15CA\\u15D6\\u0100fp\\u15CF\\u15D4sym;\\u6135\\xe8\\u15D3ha;\\u43B1\\u0100ap\\u15DFc\\u0100cl\\u15E4\\u15E7r;\\u4101g;\\u6A3F\\u0264\\u15F0\\0\\0\\u160A\\u0280;adsv\\u15FA\\u15FB\\u15FF\\u1601\\u1607\\u6227nd;\\u6A55;\\u6A5Clope;\\u6A58;\\u6A5A\\u0380;elmrsz\\u1618\\u1619\\u161B\\u161E\\u163F\\u164F\\u1659\\u6220;\\u69A4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163A\\u163C\\u163E;\\u69A8;\\u69A9;\\u69AA;\\u69AB;\\u69AC;\\u69AD;\\u69AE;\\u69AFt\\u0100;v\\u1645\\u1646\\u621Fb\\u0100;d\\u164C\\u164D\\u62BE;\\u699D\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637C\\u0100gp\\u1663\\u1667on;\\u4105f;\\uC000\\ud835\\udd52\\u0380;Eaeiop\\u12C1\\u167B\\u167D\\u1682\\u1684\\u1687\\u168A;\\u6A70cir;\\u6A6F;\\u624Ad;\\u624Bs;\\u4027rox\\u0100;e\\u12C1\\u1692\\xf1\\u1683ing\\u803B\\xe5\\u40E5\\u0180cty\\u16A1\\u16A6\\u16A8r;\\uC000\\ud835\\udcb6;\\u402Amp\\u0100;e\\u12C1\\u16AF\\xf1\\u0288ilde\\u803B\\xe3\\u40E3ml\\u803B\\xe4\\u40E4\\u0100ci\\u16C2\\u16C8onin\\xf4\\u0272nt;\\u6A11\\u0800Nabcdefiklnoprsu\\u16ED\\u16F1\\u1730\\u173C\\u1743\\u1748\\u1778\\u177D\\u17E0\\u17E6\\u1839\\u1850\\u170D\\u193D\\u1948\\u1970ot;\\u6AED\\u0100cr\\u16F6\\u171Ek\\u0200ceps\\u1700\\u1705\\u170D\\u1713ong;\\u624Cpsilon;\\u43F6rime;\\u6035im\\u0100;e\\u171A\\u171B\\u623Dq;\\u62CD\\u0176\\u1722\\u1726ee;\\u62BDed\\u0100;g\\u172C\\u172D\\u6305e\\xbb\\u172Drk\\u0100;t\\u135C\\u1737brk;\\u63B6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601E\\u0280cmprt\\u1753\\u175B\\u1761\\u1764\\u1768aus\\u0100;e\\u010A\\u0109ptyv;\\u69B0s\\xe9\\u170Cno\\xf5\\u0113\\u0180ahw\\u176F\\u1771\\u1773;\\u43B2;\\u6136een;\\u626Cr;\\uC000\\ud835\\udd1fg\\u0380costuvw\\u178D\\u179D\\u17B3\\u17C1\\u17D5\\u17DB\\u17DE\\u0180aiu\\u1794\\u1796\\u179A\\xf0\\u0760rc;\\u65EFp\\xbb\\u1371\\u0180dpt\\u17A4\\u17A8\\u17ADot;\\u6A00lus;\\u6A01imes;\\u6A02\\u0271\\u17B9\\0\\0\\u17BEcup;\\u6A06ar;\\u6605riangle\\u0100du\\u17CD\\u17D2own;\\u65BDp;\\u65B3plus;\\u6A04e\\xe5\\u1444\\xe5\\u14ADarow;\\u690D\\u0180ako\\u17ED\\u1826\\u1835\\u0100cn\\u17F2\\u1823k\\u0180lst\\u17FA\\u05AB\\u1802ozenge;\\u69EBriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181D\\u65B4own;\\u65BEeft;\\u65C2ight;\\u65B8k;\\u6423\\u01B1\\u182B\\0\\u1833\\u01B2\\u182F\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183E\\u184D\\u0100;q\\u1843\\u1846\\uC000=\\u20E5uiv;\\uC000\\u2261\\u20E5t;\\u6310\\u0200ptwx\\u1859\\u185E\\u1867\\u186Cf;\\uC000\\ud835\\udd53\\u0100;t\\u13CB\\u1863om\\xbb\\u13CCtie;\\u62C8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18AA\\u18BB\\u18D7\\u18DB\\u18EC\\u18FF\\u1905\\u190A\\u1910\\u1921\\u0200LRlr\\u188E\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18A1\\u18A2\\u18A4\\u18A6\\u18A8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18B3\\u18B5\\u18B7\\u18B9;\\u655D;\\u655A;\\u655C;\\u6559\\u0380;HLRhlr\\u18CA\\u18CB\\u18CD\\u18CF\\u18D1\\u18D3\\u18D5\\u6551;\\u656C;\\u6563;\\u6560;\\u656B;\\u6562;\\u655Fox;\\u69C9\\u0200LRlr\\u18E4\\u18E6\\u18E8\\u18EA;\\u6555;\\u6552;\\u6510;\\u650C\\u0280;DUdu\\u06BD\\u18F7\\u18F9\\u18FB\\u18FD;\\u6565;\\u6568;\\u652C;\\u6534inus;\\u629Flus;\\u629Eimes;\\u62A0\\u0200LRlr\\u1919\\u191B\\u191D\\u191F;\\u655B;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193B\\u6502;\\u656A;\\u6561;\\u655E;\\u653C;\\u6524;\\u651C\\u0100ev\\u0123\\u1942bar\\u803B\\xa6\\u40A6\\u0200ceio\\u1951\\u1956\\u195A\\u1960r;\\uC000\\ud835\\udcb7mi;\\u604Fm\\u0100;e\\u171A\\u171Cl\\u0180;bh\\u1968\\u1969\\u196B\\u405C;\\u69C5sub;\\u67C8\\u016C\\u1974\\u197El\\u0100;e\\u1979\\u197A\\u6022t\\xbb\\u197Ap\\u0180;Ee\\u012F\\u1985\\u1987;\\u6AAE\\u0100;q\\u06DC\\u06DB\\u0CE1\\u19A7\\0\\u19E8\\u1A11\\u1A15\\u1A32\\0\\u1A37\\u1A50\\0\\0\\u1AB4\\0\\0\\u1AC1\\0\\0\\u1B21\\u1B2E\\u1B4D\\u1B52\\0\\u1BFD\\0\\u1C0C\\u0180cpr\\u19AD\\u19B2\\u19DDute;\\u4107\\u0300;abcds\\u19BF\\u19C0\\u19C4\\u19CA\\u19D5\\u19D9\\u6229nd;\\u6A44rcup;\\u6A49\\u0100au\\u19CF\\u19D2p;\\u6A4Bp;\\u6A47ot;\\u6A40;\\uC000\\u2229\\uFE00\\u0100eo\\u19E2\\u19E5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19F0\\u19FB\\u1A01\\u1A05\\u01F0\\u19F5\\0\\u19F8s;\\u6A4Don;\\u410Ddil\\u803B\\xe7\\u40E7rc;\\u4109ps\\u0100;s\\u1A0C\\u1A0D\\u6A4Cm;\\u6A50ot;\\u410B\\u0180dmn\\u1A1B\\u1A20\\u1A26il\\u80BB\\xb8\\u01ADptyv;\\u69B2t\\u8100\\xa2;e\\u1A2D\\u1A2E\\u40A2r\\xe4\\u01B2r;\\uC000\\ud835\\udd20\\u0180cei\\u1A3D\\u1A40\\u1A4Dy;\\u4447ck\\u0100;m\\u1A47\\u1A48\\u6713ark\\xbb\\u1A48;\\u43C7r\\u0380;Ecefms\\u1A5F\\u1A60\\u1A62\\u1A6B\\u1AA4\\u1AAA\\u1AAE\\u65CB;\\u69C3\\u0180;el\\u1A69\\u1A6A\\u1A6D\\u42C6q;\\u6257e\\u0261\\u1A74\\0\\0\\u1A88rrow\\u0100lr\\u1A7C\\u1A81eft;\\u61BAight;\\u61BB\\u0280RSacd\\u1A92\\u1A94\\u1A96\\u1A9A\\u1A9F\\xbb\\u0F47;\\u64C8st;\\u629Birc;\\u629Aash;\\u629Dnint;\\u6A10id;\\u6AEFcir;\\u69C2ubs\\u0100;u\\u1ABB\\u1ABC\\u6663it\\xbb\\u1ABC\\u02EC\\u1AC7\\u1AD4\\u1AFA\\0\\u1B0Aon\\u0100;e\\u1ACD\\u1ACE\\u403A\\u0100;q\\xc7\\xc6\\u026D\\u1AD9\\0\\0\\u1AE2a\\u0100;t\\u1ADE\\u1ADF\\u402C;\\u4040\\u0180;fl\\u1AE8\\u1AE9\\u1AEB\\u6201\\xee\\u1160e\\u0100mx\\u1AF1\\u1AF6ent\\xbb\\u1AE9e\\xf3\\u024D\\u01E7\\u1AFE\\0\\u1B07\\u0100;d\\u12BB\\u1B02ot;\\u6A6Dn\\xf4\\u0246\\u0180fry\\u1B10\\u1B14\\u1B17;\\uC000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1B1Dr;\\u6117\\u0100ao\\u1B25\\u1B29rr;\\u61B5ss;\\u6717\\u0100cu\\u1B32\\u1B37r;\\uC000\\ud835\\udcb8\\u0100bp\\u1B3C\\u1B44\\u0100;e\\u1B41\\u1B42\\u6ACF;\\u6AD1\\u0100;e\\u1B49\\u1B4A\\u6AD0;\\u6AD2dot;\\u62EF\\u0380delprvw\\u1B60\\u1B6C\\u1B77\\u1B82\\u1BAC\\u1BD4\\u1BF9arr\\u0100lr\\u1B68\\u1B6A;\\u6938;\\u6935\\u0270\\u1B72\\0\\0\\u1B75r;\\u62DEc;\\u62DFarr\\u0100;p\\u1B7F\\u1B80\\u61B6;\\u693D\\u0300;bcdos\\u1B8F\\u1B90\\u1B96\\u1BA1\\u1BA5\\u1BA8\\u622Arcap;\\u6A48\\u0100au\\u1B9B\\u1B9Ep;\\u6A46p;\\u6A4Aot;\\u628Dr;\\u6A45;\\uC000\\u222A\\uFE00\\u0200alrv\\u1BB5\\u1BBF\\u1BDE\\u1BE3rr\\u0100;m\\u1BBC\\u1BBD\\u61B7;\\u693Cy\\u0180evw\\u1BC7\\u1BD4\\u1BD8q\\u0270\\u1BCE\\0\\0\\u1BD2re\\xe3\\u1B73u\\xe3\\u1B75ee;\\u62CEedge;\\u62CFen\\u803B\\xa4\\u40A4earrow\\u0100lr\\u1BEE\\u1BF3eft\\xbb\\u1B80ight\\xbb\\u1BBDe\\xe4\\u1BDD\\u0100ci\\u1C01\\u1C07onin\\xf4\\u01F7nt;\\u6231lcty;\\u632D\\u0980AHabcdefhijlorstuwz\\u1C38\\u1C3B\\u1C3F\\u1C5D\\u1C69\\u1C75\\u1C8A\\u1C9E\\u1CAC\\u1CB7\\u1CFB\\u1CFF\\u1D0D\\u1D7B\\u1D91\\u1DAB\\u1DBB\\u1DC6\\u1DCDr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1C48\\u1C4D\\u1C52\\u1C54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1C5A\\u1C5B\\u6010\\xbb\\u090A\\u016B\\u1C61\\u1C67arow;\\u690Fa\\xe3\\u0315\\u0100ay\\u1C6E\\u1C73ron;\\u410F;\\u4434\\u0180;ao\\u0332\\u1C7C\\u1C84\\u0100gr\\u02BF\\u1C81r;\\u61CAtseq;\\u6A77\\u0180glm\\u1C91\\u1C94\\u1C98\\u803B\\xb0\\u40B0ta;\\u43B4ptyv;\\u69B1\\u0100ir\\u1CA3\\u1CA8sht;\\u697F;\\uC000\\ud835\\udd21ar\\u0100lr\\u1CB3\\u1CB5\\xbb\\u08DC\\xbb\\u101E\\u0280aegsv\\u1CC2\\u0378\\u1CD6\\u1CDC\\u1CE0m\\u0180;os\\u0326\\u1CCA\\u1CD4nd\\u0100;s\\u0326\\u1CD1uit;\\u6666amma;\\u43DDin;\\u62F2\\u0180;io\\u1CE7\\u1CE8\\u1CF8\\u40F7de\\u8100\\xf7;o\\u1CE7\\u1CF0ntimes;\\u62C7n\\xf8\\u1CF7cy;\\u4452c\\u026F\\u1D06\\0\\0\\u1D0Arn;\\u631Eop;\\u630D\\u0280lptuw\\u1D18\\u1D1D\\u1D22\\u1D49\\u1D55lar;\\u4024f;\\uC000\\ud835\\udd55\\u0280;emps\\u030B\\u1D2D\\u1D37\\u1D3D\\u1D42q\\u0100;d\\u0352\\u1D33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62A1blebarwedg\\xe5\\xfan\\u0180adh\\u112E\\u1D5D\\u1D67ownarrow\\xf3\\u1C83arpoon\\u0100lr\\u1D72\\u1D76ef\\xf4\\u1CB4igh\\xf4\\u1CB6\\u0162\\u1D7F\\u1D85karo\\xf7\\u0F42\\u026F\\u1D8A\\0\\0\\u1D8Ern;\\u631Fop;\\u630C\\u0180cot\\u1D98\\u1DA3\\u1DA6\\u0100ry\\u1D9D\\u1DA1;\\uC000\\ud835\\udcb9;\\u4455l;\\u69F6rok;\\u4111\\u0100dr\\u1DB0\\u1DB4ot;\\u62F1i\\u0100;f\\u1DBA\\u1816\\u65BF\\u0100ah\\u1DC0\\u1DC3r\\xf2\\u0429a\\xf2\\u0FA6angle;\\u69A6\\u0100ci\\u1DD2\\u1DD5y;\\u445Fgrarr;\\u67FF\\u0900Dacdefglmnopqrstux\\u1E01\\u1E09\\u1E19\\u1E38\\u0578\\u1E3C\\u1E49\\u1E61\\u1E7E\\u1EA5\\u1EAF\\u1EBD\\u1EE1\\u1F2A\\u1F37\\u1F44\\u1F4E\\u1F5A\\u0100Do\\u1E06\\u1D34o\\xf4\\u1C89\\u0100cs\\u1E0E\\u1E14ute\\u803B\\xe9\\u40E9ter;\\u6A6E\\u0200aioy\\u1E22\\u1E27\\u1E31\\u1E36ron;\\u411Br\\u0100;c\\u1E2D\\u1E2E\\u6256\\u803B\\xea\\u40EAlon;\\u6255;\\u444Dot;\\u4117\\u0100Dr\\u1E41\\u1E45ot;\\u6252;\\uC000\\ud835\\udd22\\u0180;rs\\u1E50\\u1E51\\u1E57\\u6A9Aave\\u803B\\xe8\\u40E8\\u0100;d\\u1E5C\\u1E5D\\u6A96ot;\\u6A98\\u0200;ils\\u1E6A\\u1E6B\\u1E72\\u1E74\\u6A99nters;\\u63E7;\\u6113\\u0100;d\\u1E79\\u1E7A\\u6A95ot;\\u6A97\\u0180aps\\u1E85\\u1E89\\u1E97cr;\\u4113ty\\u0180;sv\\u1E92\\u1E93\\u1E95\\u6205et\\xbb\\u1E93p\\u01001;\\u1E9D\\u1EA4\\u0133\\u1EA1\\u1EA3;\\u6004;\\u6005\\u6003\\u0100gs\\u1EAA\\u1EAC;\\u414Bp;\\u6002\\u0100gp\\u1EB4\\u1EB8on;\\u4119f;\\uC000\\ud835\\udd56\\u0180als\\u1EC4\\u1ECE\\u1ED2r\\u0100;s\\u1ECA\\u1ECB\\u62D5l;\\u69E3us;\\u6A71i\\u0180;lv\\u1EDA\\u1EDB\\u1EDF\\u43B5on\\xbb\\u1EDB;\\u43F5\\u0200csuv\\u1EEA\\u1EF3\\u1F0B\\u1F23\\u0100io\\u1EEF\\u1E31rc\\xbb\\u1E2E\\u0269\\u1EF9\\0\\0\\u1EFB\\xed\\u0548ant\\u0100gl\\u1F02\\u1F06tr\\xbb\\u1E5Dess\\xbb\\u1E7A\\u0180aei\\u1F12\\u1F16\\u1F1Als;\\u403Dst;\\u625Fv\\u0100;D\\u0235\\u1F20D;\\u6A78parsl;\\u69E5\\u0100Da\\u1F2F\\u1F33ot;\\u6253rr;\\u6971\\u0180cdi\\u1F3E\\u1F41\\u1EF8r;\\u612Fo\\xf4\\u0352\\u0100ah\\u1F49\\u1F4B;\\u43B7\\u803B\\xf0\\u40F0\\u0100mr\\u1F53\\u1F57l\\u803B\\xeb\\u40EBo;\\u60AC\\u0180cip\\u1F61\\u1F64\\u1F67l;\\u4021s\\xf4\\u056E\\u0100eo\\u1F6C\\u1F74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09E1\\u1F92\\0\\u1F9E\\0\\u1FA1\\u1FA7\\0\\0\\u1FC6\\u1FCC\\0\\u1FD3\\0\\u1FE6\\u1FEA\\u2000\\0\\u2008\\u205Allingdotse\\xf1\\u1E44y;\\u4444male;\\u6640\\u0180ilr\\u1FAD\\u1FB3\\u1FC1lig;\\u8000\\uFB03\\u0269\\u1FB9\\0\\0\\u1FBDg;\\u8000\\uFB00ig;\\u8000\\uFB04;\\uC000\\ud835\\udd23lig;\\u8000\\uFB01lig;\\uC000fj\\u0180alt\\u1FD9\\u1FDC\\u1FE1t;\\u666Dig;\\u8000\\uFB02ns;\\u65B1of;\\u4192\\u01F0\\u1FEE\\0\\u1FF3f;\\uC000\\ud835\\udd57\\u0100ak\\u05BF\\u1FF7\\u0100;v\\u1FFC\\u1FFD\\u62D4;\\u6AD9artint;\\u6A0D\\u0100ao\\u200C\\u2055\\u0100cs\\u2011\\u2052\\u03B1\\u201A\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03B2\\u2022\\u2025\\u2027\\u202A\\u202C\\0\\u202E\\u803B\\xbd\\u40BD;\\u6153\\u803B\\xbc\\u40BC;\\u6155;\\u6159;\\u615B\\u01B3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02B4\\u203E\\u2041\\0\\0\\u2043\\u803B\\xbe\\u40BE;\\u6157;\\u615C5;\\u6158\\u01B6\\u204C\\0\\u204E;\\u615A;\\u615D8;\\u615El;\\u6044wn;\\u6322cr;\\uC000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209F\\u20A5\\u20B0\\u20B4\\u20F0\\u20F5\\u20FA\\u20FF\\u2103\\u2112\\u2138\\u0317\\u213E\\u2152\\u219E\\u0100;l\\u064D\\u2087;\\u6A8C\\u0180cmp\\u2090\\u2095\\u209Dute;\\u41F5ma\\u0100;d\\u209C\\u1CDA\\u43B3;\\u6A86reve;\\u411F\\u0100iy\\u20AA\\u20AErc;\\u411D;\\u4433ot;\\u4121\\u0200;lqs\\u063E\\u0642\\u20BD\\u20C9\\u0180;qs\\u063E\\u064C\\u20C4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20D2\\u20D5\\u20E5c;\\u6AA9ot\\u0100;o\\u20DC\\u20DD\\u6A80\\u0100;l\\u20E2\\u20E3\\u6A82;\\u6A84\\u0100;e\\u20EA\\u20ED\\uC000\\u22DB\\uFE00s;\\u6A94r;\\uC000\\ud835\\udd24\\u0100;g\\u0673\\u061Bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065A\\u210C\\u210E\\u2110;\\u6A92;\\u6AA5;\\u6AA4\\u0200Eaes\\u211B\\u211D\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6A8Arox\\xbb\\u2124\\u0100;q\\u212E\\u212F\\u6A88\\u0100;q\\u212E\\u211Bim;\\u62E7pf;\\uC000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610Am\\u0180;el\\u066B\\u214E\\u2150;\\u6A8E;\\u6A90\\u8300>;cdlqr\\u05EE\\u2160\\u216A\\u216E\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6AA7r;\\u6A7Aot;\\u62D7Par;\\u6995uest;\\u6A7C\\u0280adels\\u2184\\u216A\\u2190\\u0656\\u219B\\u01F0\\u2189\\0\\u218Epro\\xf8\\u209Er;\\u6978q\\u0100lq\\u063F\\u2196les\\xf3\\u2088i\\xed\\u066B\\u0100en\\u21A3\\u21ADrtneqq;\\uC000\\u2269\\uFE00\\xc5\\u21AA\\u0500Aabcefkosy\\u21C4\\u21C7\\u21F1\\u21F5\\u21FA\\u2218\\u221D\\u222F\\u2268\\u227Dr\\xf2\\u03A0\\u0200ilmr\\u21D0\\u21D4\\u21D7\\u21DBrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06A9\\u0100dr\\u21E0\\u21E4cy;\\u444A\\u0180;cw\\u08F4\\u21EB\\u21EFir;\\u6948;\\u61ADar;\\u610Firc;\\u4125\\u0180alr\\u2201\\u220E\\u2213rts\\u0100;u\\u2209\\u220A\\u6665it\\xbb\\u220Alip;\\u6026con;\\u62B9r;\\uC000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223A\\u223E\\u2243\\u225E\\u2263rr;\\u61FFtht;\\u623Bk\\u0100lr\\u2249\\u2253eftarrow;\\u61A9ightarrow;\\u61AAf;\\uC000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226F\\u2274\\u2278r;\\uC000\\ud835\\udcbdas\\xe8\\u21F4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1C5B\\u0AE1\\u22A3\\0\\u22AA\\0\\u22B8\\u22C5\\u22CE\\0\\u22D5\\u22F3\\0\\0\\u22F8\\u2322\\u2367\\u2362\\u237F\\0\\u2386\\u23AA\\u23B4cute\\u803B\\xed\\u40ED\\u0180;iy\\u0771\\u22B0\\u22B5rc\\u803B\\xee\\u40EE;\\u4438\\u0100cx\\u22BC\\u22BFy;\\u4435cl\\u803B\\xa1\\u40A1\\u0100fr\\u039F\\u22C9;\\uC000\\ud835\\udd26rave\\u803B\\xec\\u40EC\\u0200;ino\\u073E\\u22DD\\u22E9\\u22EE\\u0100in\\u22E2\\u22E6nt;\\u6A0Ct;\\u622Dfin;\\u69DCta;\\u6129lig;\\u4133\\u0180aop\\u22FE\\u231A\\u231D\\u0180cgt\\u2305\\u2308\\u2317r;\\u412B\\u0180elp\\u071F\\u230F\\u2313in\\xe5\\u078Ear\\xf4\\u0720h;\\u4131f;\\u62B7ed;\\u41B5\\u0280;cfot\\u04F4\\u232C\\u2331\\u233D\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621Eie;\\u69DDdo\\xf4\\u2319\\u0280;celp\\u0757\\u234C\\u2350\\u235B\\u2361al;\\u62BA\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234Darhk;\\u6A17rod;\\u6A3C\\u0200cgpt\\u236F\\u2372\\u2376\\u237By;\\u4451on;\\u412Ff;\\uC000\\ud835\\udd5aa;\\u43B9uest\\u803B\\xbf\\u40BF\\u0100ci\\u238A\\u238Fr;\\uC000\\ud835\\udcben\\u0280;Edsv\\u04F4\\u239B\\u239D\\u23A1\\u04F3;\\u62F9ot;\\u62F5\\u0100;v\\u23A6\\u23A7\\u62F4;\\u62F3\\u0100;i\\u0777\\u23AElde;\\u4129\\u01EB\\u23B8\\0\\u23BCcy;\\u4456l\\u803B\\xef\\u40EF\\u0300cfmosu\\u23CC\\u23D7\\u23DC\\u23E1\\u23E7\\u23F5\\u0100iy\\u23D1\\u23D5rc;\\u4135;\\u4439r;\\uC000\\ud835\\udd27ath;\\u4237pf;\\uC000\\ud835\\udd5b\\u01E3\\u23EC\\0\\u23F1r;\\uC000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240B\\u2416\\u2422\\u2427\\u242D\\u2431\\u2435\\u243Bppa\\u0100;v\\u2413\\u2414\\u43BA;\\u43F0\\u0100ey\\u241B\\u2420dil;\\u4137;\\u443Ar;\\uC000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445Cpf;\\uC000\\ud835\\udd5ccr;\\uC000\\ud835\\udcc0\\u0B80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248D\\u2491\\u250E\\u253D\\u255A\\u2580\\u264E\\u265E\\u2665\\u2679\\u267D\\u269A\\u26B2\\u26D8\\u275D\\u2768\\u278B\\u27C0\\u2801\\u2812\\u0180art\\u2477\\u247A\\u247Cr\\xf2\\u09C6\\xf2\\u0395ail;\\u691Barr;\\u690E\\u0100;g\\u0994\\u248B;\\u6A8Bar;\\u6962\\u0963\\u24A5\\0\\u24AA\\0\\u24B1\\0\\0\\0\\0\\0\\u24B5\\u24BA\\0\\u24C6\\u24C8\\u24CD\\0\\u24F9ute;\\u413Amptyv;\\u69B4ra\\xee\\u084Cbda;\\u43BBg\\u0180;dl\\u088E\\u24C1\\u24C3;\\u6991\\xe5\\u088E;\\u6A85uo\\u803B\\xab\\u40ABr\\u0400;bfhlpst\\u0899\\u24DE\\u24E6\\u24E9\\u24EB\\u24EE\\u24F1\\u24F5\\u0100;f\\u089D\\u24E3s;\\u691Fs;\\u691D\\xeb\\u2252p;\\u61ABl;\\u6939im;\\u6973l;\\u61A2\\u0180;ae\\u24FF\\u2500\\u2504\\u6AABil;\\u6919\\u0100;s\\u2509\\u250A\\u6AAD;\\uC000\\u2AAD\\uFE00\\u0180abr\\u2515\\u2519\\u251Drr;\\u690Crk;\\u6772\\u0100ak\\u2522\\u252Cc\\u0100ek\\u2528\\u252A;\\u407B;\\u405B\\u0100es\\u2531\\u2533;\\u698Bl\\u0100du\\u2539\\u253B;\\u698F;\\u698D\\u0200aeuy\\u2546\\u254B\\u2556\\u2558ron;\\u413E\\u0100di\\u2550\\u2554il;\\u413C\\xec\\u08B0\\xe2\\u2529;\\u443B\\u0200cqrs\\u2563\\u2566\\u256D\\u257Da;\\u6936uo\\u0100;r\\u0E19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694Bh;\\u61B2\\u0280;fgqs\\u258B\\u258C\\u0989\\u25F3\\u25FF\\u6264t\\u0280ahlrt\\u2598\\u25A4\\u25B7\\u25C2\\u25E8rrow\\u0100;t\\u0899\\u25A1a\\xe9\\u24F6arpoon\\u0100du\\u25AF\\u25B4own\\xbb\\u045Ap\\xbb\\u0966eftarrows;\\u61C7ight\\u0180ahs\\u25CD\\u25D6\\u25DErrow\\u0100;s\\u08F4\\u08A7arpoon\\xf3\\u0F98quigarro\\xf7\\u21F0hreetimes;\\u62CB\\u0180;qs\\u258B\\u0993\\u25FAlan\\xf4\\u09AC\\u0280;cdgs\\u09AC\\u260A\\u260D\\u261D\\u2628c;\\u6AA8ot\\u0100;o\\u2614\\u2615\\u6A7F\\u0100;r\\u261A\\u261B\\u6A81;\\u6A83\\u0100;e\\u2622\\u2625\\uC000\\u22DA\\uFE00s;\\u6A93\\u0280adegs\\u2633\\u2639\\u263D\\u2649\\u264Bppro\\xf8\\u24C6ot;\\u62D6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248C\\xf4\\u099Bi\\xed\\u09B2\\u0180ilr\\u2655\\u08E1\\u265Asht;\\u697C;\\uC000\\ud835\\udd29\\u0100;E\\u099C\\u2663;\\u6A91\\u0161\\u2669\\u2676r\\u0100du\\u25B2\\u266E\\u0100;l\\u0965\\u2673;\\u696Alk;\\u6584cy;\\u4459\\u0280;acht\\u0A48\\u2688\\u268B\\u2691\\u2696r\\xf2\\u25C1orne\\xf2\\u1D08ard;\\u696Bri;\\u65FA\\u0100io\\u269F\\u26A4dot;\\u4140ust\\u0100;a\\u26AC\\u26AD\\u63B0che\\xbb\\u26AD\\u0200Eaes\\u26BB\\u26BD\\u26C9\\u26D4;\\u6268p\\u0100;p\\u26C3\\u26C4\\u6A89rox\\xbb\\u26C4\\u0100;q\\u26CE\\u26CF\\u6A87\\u0100;q\\u26CE\\u26BBim;\\u62E6\\u0400abnoptwz\\u26E9\\u26F4\\u26F7\\u271A\\u272F\\u2741\\u2747\\u2750\\u0100nr\\u26EE\\u26F1g;\\u67ECr;\\u61FDr\\xeb\\u08C1g\\u0180lmr\\u26FF\\u270D\\u2714eft\\u0100ar\\u09E6\\u2707ight\\xe1\\u09F2apsto;\\u67FCight\\xe1\\u09FDparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24EDight;\\u61AC\\u0180afl\\u2736\\u2739\\u273Dr;\\u6985;\\uC000\\ud835\\udd5dus;\\u6A2Dimes;\\u6A34\\u0161\\u274B\\u274Fst;\\u6217\\xe1\\u134E\\u0180;ef\\u2757\\u2758\\u1800\\u65CAnge\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277C\\u2785\\u2787r\\xf2\\u08A8orne\\xf2\\u1D8Car\\u0100;d\\u0F98\\u2783;\\u696D;\\u600Eri;\\u62BF\\u0300achiqt\\u2798\\u279D\\u0A40\\u27A2\\u27AE\\u27BBquo;\\u6039r;\\uC000\\ud835\\udcc1m\\u0180;eg\\u09B2\\u27AA\\u27AC;\\u6A8D;\\u6A8F\\u0100bu\\u252A\\u27B3o\\u0100;r\\u0E1F\\u27B9;\\u601Arok;\\u4142\\u8400<;cdhilqr\\u082B\\u27D2\\u2639\\u27DC\\u27E0\\u27E5\\u27EA\\u27F0\\u0100ci\\u27D7\\u27D9;\\u6AA6r;\\u6A79re\\xe5\\u25F2mes;\\u62C9arr;\\u6976uest;\\u6A7B\\u0100Pi\\u27F5\\u27F9ar;\\u6996\\u0180;ef\\u2800\\u092D\\u181B\\u65C3r\\u0100du\\u2807\\u280Dshar;\\u694Ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uC000\\u2268\\uFE00\\xc5\\u281E\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288E\\u2893\\u28A0\\u28A5\\u28A8\\u28DA\\u28E2\\u28E4\\u0A83\\u28F3\\u2902Dot;\\u623A\\u0200clpr\\u284E\\u2852\\u2863\\u287Dr\\u803B\\xaf\\u40AF\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285E\\u285F\\u6720se\\xbb\\u285F\\u0100;s\\u103B\\u2868to\\u0200;dlu\\u103B\\u2873\\u2877\\u287Bow\\xee\\u048Cef\\xf4\\u090F\\xf0\\u13D1ker;\\u65AE\\u0100oy\\u2887\\u288Cmma;\\u6A29;\\u443Cash;\\u6014asuredangle\\xbb\\u1626r;\\uC000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28AF\\u28B4\\u28C9ro\\u803B\\xb5\\u40B5\\u0200;acd\\u1464\\u28BD\\u28C0\\u28C4s\\xf4\\u16A7ir;\\u6AF0ot\\u80BB\\xb7\\u01B5us\\u0180;bd\\u28D2\\u1903\\u28D3\\u6212\\u0100;u\\u1D3C\\u28D8;\\u6A2A\\u0163\\u28DE\\u28E1p;\\u6ADB\\xf2\\u2212\\xf0\\u0A81\\u0100dp\\u28E9\\u28EEels;\\u62A7f;\\uC000\\ud835\\udd5e\\u0100ct\\u28F8\\u28FDr;\\uC000\\ud835\\udcc2pos\\xbb\\u159D\\u0180;lm\\u2909\\u290A\\u290D\\u43BCtimap;\\u62B8\\u0C00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297E\\u2989\\u2998\\u29DA\\u29E9\\u2A15\\u2A1A\\u2A58\\u2A5D\\u2A83\\u2A95\\u2AA4\\u2AA8\\u2B04\\u2B07\\u2B44\\u2B7F\\u2BAE\\u2C34\\u2C67\\u2C7C\\u2CE9\\u0100gt\\u2947\\u294B;\\uC000\\u22D9\\u0338\\u0100;v\\u2950\\u0BCF\\uC000\\u226B\\u20D2\\u0180elt\\u295A\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61CDightarrow;\\u61CE;\\uC000\\u22D8\\u0338\\u0100;v\\u297B\\u0C47\\uC000\\u226A\\u20D2ightarrow;\\u61CF\\u0100Dd\\u298E\\u2993ash;\\u62AFash;\\u62AE\\u0280bcnpt\\u29A3\\u29A7\\u29AC\\u29B1\\u29CCla\\xbb\\u02DEute;\\u4144g;\\uC000\\u2220\\u20D2\\u0280;Eiop\\u0D84\\u29BC\\u29C0\\u29C5\\u29C8;\\uC000\\u2A70\\u0338d;\\uC000\\u224B\\u0338s;\\u4149ro\\xf8\\u0D84ur\\u0100;a\\u29D3\\u29D4\\u666El\\u0100;s\\u29D3\\u0B38\\u01F3\\u29DF\\0\\u29E3p\\u80BB\\xa0\\u0B37mp\\u0100;e\\u0BF9\\u0C00\\u0280aeouy\\u29F4\\u29FE\\u2A03\\u2A10\\u2A13\\u01F0\\u29F9\\0\\u29FB;\\u6A43on;\\u4148dil;\\u4146ng\\u0100;d\\u0D7E\\u2A0Aot;\\uC000\\u2A6D\\u0338p;\\u6A42;\\u443Dash;\\u6013\\u0380;Aadqsx\\u0B92\\u2A29\\u2A2D\\u2A3B\\u2A41\\u2A45\\u2A50rr;\\u61D7r\\u0100hr\\u2A33\\u2A36k;\\u6924\\u0100;o\\u13F2\\u13F0ot;\\uC000\\u2250\\u0338ui\\xf6\\u0B63\\u0100ei\\u2A4A\\u2A4Ear;\\u6928\\xed\\u0B98ist\\u0100;s\\u0BA0\\u0B9Fr;\\uC000\\ud835\\udd2b\\u0200Eest\\u0BC5\\u2A66\\u2A79\\u2A7C\\u0180;qs\\u0BBC\\u2A6D\\u0BE1\\u0180;qs\\u0BBC\\u0BC5\\u2A74lan\\xf4\\u0BE2i\\xed\\u0BEA\\u0100;r\\u0BB6\\u2A81\\xbb\\u0BB7\\u0180Aap\\u2A8A\\u2A8D\\u2A91r\\xf2\\u2971rr;\\u61AEar;\\u6AF2\\u0180;sv\\u0F8D\\u2A9C\\u0F8C\\u0100;d\\u2AA1\\u2AA2\\u62FC;\\u62FAcy;\\u445A\\u0380AEadest\\u2AB7\\u2ABA\\u2ABE\\u2AC2\\u2AC5\\u2AF6\\u2AF9r\\xf2\\u2966;\\uC000\\u2266\\u0338rr;\\u619Ar;\\u6025\\u0200;fqs\\u0C3B\\u2ACE\\u2AE3\\u2AEFt\\u0100ar\\u2AD4\\u2AD9rro\\xf7\\u2AC1ightarro\\xf7\\u2A90\\u0180;qs\\u0C3B\\u2ABA\\u2AEAlan\\xf4\\u0C55\\u0100;s\\u0C55\\u2AF4\\xbb\\u0C36i\\xed\\u0C5D\\u0100;r\\u0C35\\u2AFEi\\u0100;e\\u0C1A\\u0C25i\\xe4\\u0D90\\u0100pt\\u2B0C\\u2B11f;\\uC000\\ud835\\udd5f\\u8180\\xac;in\\u2B19\\u2B1A\\u2B36\\u40ACn\\u0200;Edv\\u0B89\\u2B24\\u2B28\\u2B2E;\\uC000\\u22F9\\u0338ot;\\uC000\\u22F5\\u0338\\u01E1\\u0B89\\u2B33\\u2B35;\\u62F7;\\u62F6i\\u0100;v\\u0CB8\\u2B3C\\u01E1\\u0CB8\\u2B41\\u2B43;\\u62FE;\\u62FD\\u0180aor\\u2B4B\\u2B63\\u2B69r\\u0200;ast\\u0B7B\\u2B55\\u2B5A\\u2B5Flle\\xec\\u0B7Bl;\\uC000\\u2AFD\\u20E5;\\uC000\\u2202\\u0338lint;\\u6A14\\u0180;ce\\u0C92\\u2B70\\u2B73u\\xe5\\u0CA5\\u0100;c\\u0C98\\u2B78\\u0100;e\\u0C92\\u2B7D\\xf1\\u0C98\\u0200Aait\\u2B88\\u2B8B\\u2B9D\\u2BA7r\\xf2\\u2988rr\\u0180;cw\\u2B94\\u2B95\\u2B99\\u619B;\\uC000\\u2933\\u0338;\\uC000\\u219D\\u0338ghtarrow\\xbb\\u2B95ri\\u0100;e\\u0CCB\\u0CD6\\u0380chimpqu\\u2BBD\\u2BCD\\u2BD9\\u2B04\\u0B78\\u2BE4\\u2BEF\\u0200;cer\\u0D32\\u2BC6\\u0D37\\u2BC9u\\xe5\\u0D45;\\uC000\\ud835\\udcc3ort\\u026D\\u2B05\\0\\0\\u2BD6ar\\xe1\\u2B56m\\u0100;e\\u0D6E\\u2BDF\\u0100;q\\u0D74\\u0D73su\\u0100bp\\u2BEB\\u2BED\\xe5\\u0CF8\\xe5\\u0D0B\\u0180bcp\\u2BF6\\u2C11\\u2C19\\u0200;Ees\\u2BFF\\u2C00\\u0D22\\u2C04\\u6284;\\uC000\\u2AC5\\u0338et\\u0100;e\\u0D1B\\u2C0Bq\\u0100;q\\u0D23\\u2C00c\\u0100;e\\u0D32\\u2C17\\xf1\\u0D38\\u0200;Ees\\u2C22\\u2C23\\u0D5F\\u2C27\\u6285;\\uC000\\u2AC6\\u0338et\\u0100;e\\u0D58\\u2C2Eq\\u0100;q\\u0D60\\u2C23\\u0200gilr\\u2C3D\\u2C3F\\u2C45\\u2C47\\xec\\u0BD7lde\\u803B\\xf1\\u40F1\\xe7\\u0C43iangle\\u0100lr\\u2C52\\u2C5Ceft\\u0100;e\\u0C1A\\u2C5A\\xf1\\u0C26ight\\u0100;e\\u0CCB\\u2C65\\xf1\\u0CD7\\u0100;m\\u2C6C\\u2C6D\\u43BD\\u0180;es\\u2C74\\u2C75\\u2C79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2C8F\\u2C94\\u2C99\\u2C9E\\u2CA3\\u2CB0\\u2CB6\\u2CD3\\u2CE3ash;\\u62ADarr;\\u6904p;\\uC000\\u224D\\u20D2ash;\\u62AC\\u0100et\\u2CA8\\u2CAC;\\uC000\\u2265\\u20D2;\\uC000>\\u20D2nfin;\\u69DE\\u0180Aet\\u2CBD\\u2CC1\\u2CC5rr;\\u6902;\\uC000\\u2264\\u20D2\\u0100;r\\u2CCA\\u2CCD\\uC000<\\u20D2ie;\\uC000\\u22B4\\u20D2\\u0100At\\u2CD8\\u2CDCrr;\\u6903rie;\\uC000\\u22B5\\u20D2im;\\uC000\\u223C\\u20D2\\u0180Aan\\u2CF0\\u2CF4\\u2D02rr;\\u61D6r\\u0100hr\\u2CFA\\u2CFDk;\\u6923\\u0100;o\\u13E7\\u13E5ear;\\u6927\\u1253\\u1A95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2D2D\\0\\u2D38\\u2D48\\u2D60\\u2D65\\u2D72\\u2D84\\u1B07\\0\\0\\u2D8D\\u2DAB\\0\\u2DC8\\u2DCE\\0\\u2DDC\\u2E19\\u2E2B\\u2E3E\\u2E43\\u0100cs\\u2D31\\u1A97ute\\u803B\\xf3\\u40F3\\u0100iy\\u2D3C\\u2D45r\\u0100;c\\u1A9E\\u2D42\\u803B\\xf4\\u40F4;\\u443E\\u0280abios\\u1AA0\\u2D52\\u2D57\\u01C8\\u2D5Alac;\\u4151v;\\u6A38old;\\u69BClig;\\u4153\\u0100cr\\u2D69\\u2D6Dir;\\u69BF;\\uC000\\ud835\\udd2c\\u036F\\u2D79\\0\\0\\u2D7C\\0\\u2D82n;\\u42DBave\\u803B\\xf2\\u40F2;\\u69C1\\u0100bm\\u2D88\\u0DF4ar;\\u69B5\\u0200acit\\u2D95\\u2D98\\u2DA5\\u2DA8r\\xf2\\u1A80\\u0100ir\\u2D9D\\u2DA0r;\\u69BEoss;\\u69BBn\\xe5\\u0E52;\\u69C0\\u0180aei\\u2DB1\\u2DB5\\u2DB9cr;\\u414Dga;\\u43C9\\u0180cdn\\u2DC0\\u2DC5\\u01CDron;\\u43BF;\\u69B6pf;\\uC000\\ud835\\udd60\\u0180ael\\u2DD4\\u2DD7\\u01D2r;\\u69B7rp;\\u69B9\\u0380;adiosv\\u2DEA\\u2DEB\\u2DEE\\u2E08\\u2E0D\\u2E10\\u2E16\\u6228r\\xf2\\u1A86\\u0200;efm\\u2DF7\\u2DF8\\u2E02\\u2E05\\u6A5Dr\\u0100;o\\u2DFE\\u2DFF\\u6134f\\xbb\\u2DFF\\u803B\\xaa\\u40AA\\u803B\\xba\\u40BAgof;\\u62B6r;\\u6A56lope;\\u6A57;\\u6A5B\\u0180clo\\u2E1F\\u2E21\\u2E27\\xf2\\u2E01ash\\u803B\\xf8\\u40F8l;\\u6298i\\u016C\\u2E2F\\u2E34de\\u803B\\xf5\\u40F5es\\u0100;a\\u01DB\\u2E3As;\\u6A36ml\\u803B\\xf6\\u40F6bar;\\u633D\\u0AE1\\u2E5E\\0\\u2E7D\\0\\u2E80\\u2E9D\\0\\u2EA2\\u2EB9\\0\\0\\u2ECB\\u0E9C\\0\\u2F13\\0\\0\\u2F2B\\u2FBC\\0\\u2FC8r\\u0200;ast\\u0403\\u2E67\\u2E72\\u0E85\\u8100\\xb6;l\\u2E6D\\u2E6E\\u40B6le\\xec\\u0403\\u0269\\u2E78\\0\\0\\u2E7Bm;\\u6AF3;\\u6AFDy;\\u443Fr\\u0280cimpt\\u2E8B\\u2E8F\\u2E93\\u1865\\u2E97nt;\\u4025od;\\u402Eil;\\u6030enk;\\u6031r;\\uC000\\ud835\\udd2d\\u0180imo\\u2EA8\\u2EB0\\u2EB4\\u0100;v\\u2EAD\\u2EAE\\u43C6;\\u43D5ma\\xf4\\u0A76ne;\\u660E\\u0180;tv\\u2EBF\\u2EC0\\u2EC8\\u43C0chfork\\xbb\\u1FFD;\\u43D6\\u0100au\\u2ECF\\u2EDFn\\u0100ck\\u2ED5\\u2EDDk\\u0100;h\\u21F4\\u2EDB;\\u610E\\xf6\\u21F4s\\u0480;abcdemst\\u2EF3\\u2EF4\\u1908\\u2EF9\\u2EFD\\u2F04\\u2F06\\u2F0A\\u2F0E\\u402Bcir;\\u6A23ir;\\u6A22\\u0100ou\\u1D40\\u2F02;\\u6A25;\\u6A72n\\u80BB\\xb1\\u0E9Dim;\\u6A26wo;\\u6A27\\u0180ipu\\u2F19\\u2F20\\u2F25ntint;\\u6A15f;\\uC000\\ud835\\udd61nd\\u803B\\xa3\\u40A3\\u0500;Eaceinosu\\u0EC8\\u2F3F\\u2F41\\u2F44\\u2F47\\u2F81\\u2F89\\u2F92\\u2F7E\\u2FB6;\\u6AB3p;\\u6AB7u\\xe5\\u0ED9\\u0100;c\\u0ECE\\u2F4C\\u0300;acens\\u0EC8\\u2F59\\u2F5F\\u2F66\\u2F68\\u2F7Eppro\\xf8\\u2F43urlye\\xf1\\u0ED9\\xf1\\u0ECE\\u0180aes\\u2F6F\\u2F76\\u2F7Approx;\\u6AB9qq;\\u6AB5im;\\u62E8i\\xed\\u0EDFme\\u0100;s\\u2F88\\u0EAE\\u6032\\u0180Eas\\u2F78\\u2F90\\u2F7A\\xf0\\u2F75\\u0180dfp\\u0EEC\\u2F99\\u2FAF\\u0180als\\u2FA0\\u2FA5\\u2FAAlar;\\u632Eine;\\u6312urf;\\u6313\\u0100;t\\u0EFB\\u2FB4\\xef\\u0EFBrel;\\u62B0\\u0100ci\\u2FC0\\u2FC5r;\\uC000\\ud835\\udcc5;\\u43C8ncsp;\\u6008\\u0300fiopsu\\u2FDA\\u22E2\\u2FDF\\u2FE5\\u2FEB\\u2FF1r;\\uC000\\ud835\\udd2epf;\\uC000\\ud835\\udd62rime;\\u6057cr;\\uC000\\ud835\\udcc6\\u0180aeo\\u2FF8\\u3009\\u3013t\\u0100ei\\u2FFE\\u3005rnion\\xf3\\u06B0nt;\\u6A16st\\u0100;e\\u3010\\u3011\\u403F\\xf1\\u1F19\\xf4\\u0F14\\u0A80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30E0\\u310E\\u312B\\u3147\\u3162\\u3172\\u318E\\u3206\\u3215\\u3224\\u3229\\u3258\\u326E\\u3272\\u3290\\u32B0\\u32B7\\u0180art\\u3047\\u304A\\u304Cr\\xf2\\u10B3\\xf2\\u03DDail;\\u691Car\\xf2\\u1C65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307F\\u308F\\u3094\\u30CC\\u0100eu\\u306D\\u3071;\\uC000\\u223D\\u0331te;\\u4155i\\xe3\\u116Emptyv;\\u69B3g\\u0200;del\\u0FD1\\u3089\\u308B\\u308D;\\u6992;\\u69A5\\xe5\\u0FD1uo\\u803B\\xbb\\u40BBr\\u0580;abcfhlpstw\\u0FDC\\u30AC\\u30AF\\u30B7\\u30B9\\u30BC\\u30BE\\u30C0\\u30C3\\u30C7\\u30CAp;\\u6975\\u0100;f\\u0FE0\\u30B4s;\\u6920;\\u6933s;\\u691E\\xeb\\u225D\\xf0\\u272El;\\u6945im;\\u6974l;\\u61A3;\\u619D\\u0100ai\\u30D1\\u30D5il;\\u691Ao\\u0100;n\\u30DB\\u30DC\\u6236al\\xf3\\u0F1E\\u0180abr\\u30E7\\u30EA\\u30EEr\\xf2\\u17E5rk;\\u6773\\u0100ak\\u30F3\\u30FDc\\u0100ek\\u30F9\\u30FB;\\u407D;\\u405D\\u0100es\\u3102\\u3104;\\u698Cl\\u0100du\\u310A\\u310C;\\u698E;\\u6990\\u0200aeuy\\u3117\\u311C\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0FF2\\xe2\\u30FA;\\u4440\\u0200clqs\\u3134\\u3137\\u313D\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020E\\u020Dh;\\u61B3\\u0180acg\\u314E\\u315F\\u0F44l\\u0200;ips\\u0F78\\u3158\\u315B\\u109Cn\\xe5\\u10BBar\\xf4\\u0FA9t;\\u65AD\\u0180ilr\\u3169\\u1023\\u316Esht;\\u697D;\\uC000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317D\\u317F\\xbb\\u047B\\u0100;l\\u1091\\u3184;\\u696C\\u0100;v\\u318B\\u318C\\u43C1;\\u43F1\\u0180gns\\u3195\\u31F9\\u31FCht\\u0300ahlrst\\u31A4\\u31B0\\u31C2\\u31D8\\u31E4\\u31EErrow\\u0100;t\\u0FDC\\u31ADa\\xe9\\u30C8arpoon\\u0100du\\u31BB\\u31BFow\\xee\\u317Ep\\xbb\\u1092eft\\u0100ah\\u31CA\\u31D0rrow\\xf3\\u0FEAarpoon\\xf3\\u0551ightarrows;\\u61C9quigarro\\xf7\\u30CBhreetimes;\\u62CCg;\\u42DAingdotse\\xf1\\u1F32\\u0180ahm\\u320D\\u3210\\u3213r\\xf2\\u0FEAa\\xf2\\u0551;\\u600Foust\\u0100;a\\u321E\\u321F\\u63B1che\\xbb\\u321Fmid;\\u6AEE\\u0200abpt\\u3232\\u323D\\u3240\\u3252\\u0100nr\\u3237\\u323Ag;\\u67EDr;\\u61FEr\\xeb\\u1003\\u0180afl\\u3247\\u324A\\u324Er;\\u6986;\\uC000\\ud835\\udd63us;\\u6A2Eimes;\\u6A35\\u0100ap\\u325D\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6A12ar\\xf2\\u31E3\\u0200achq\\u327B\\u3280\\u10BC\\u3285quo;\\u603Ar;\\uC000\\ud835\\udcc7\\u0100bu\\u30FB\\u328Ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329B\\u32A0re\\xe5\\u31F8mes;\\u62CAi\\u0200;efl\\u32AA\\u1059\\u1821\\u32AB\\u65B9tri;\\u69CEluhar;\\u6968;\\u611E\\u0D61\\u32D5\\u32DB\\u32DF\\u332C\\u3338\\u3371\\0\\u337A\\u33A4\\0\\0\\u33EC\\u33F0\\0\\u3428\\u3448\\u345A\\u34AD\\u34B1\\u34CA\\u34F1\\0\\u3616\\0\\0\\u3633cute;\\u415Bqu\\xef\\u27BA\\u0500;Eaceinpsy\\u11ED\\u32F3\\u32F5\\u32FF\\u3302\\u330B\\u330F\\u331F\\u3326\\u3329;\\u6AB4\\u01F0\\u32FA\\0\\u32FC;\\u6AB8on;\\u4161u\\xe5\\u11FE\\u0100;d\\u11F3\\u3307il;\\u415Frc;\\u415D\\u0180Eas\\u3316\\u3318\\u331B;\\u6AB6p;\\u6ABAim;\\u62E9olint;\\u6A13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1D47\\u3335\\u62C5;\\u6A66\\u0380Aacmstx\\u3346\\u334A\\u3357\\u335B\\u335E\\u3363\\u336Drr;\\u61D8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0A36\\u0A34t\\u803B\\xa7\\u40A7i;\\u403Bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uC000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33A0rp;\\u666F\\u0100hy\\u338B\\u338Fcy;\\u4449;\\u4448rt\\u026D\\u3399\\0\\0\\u339Ci\\xe4\\u1464ara\\xec\\u2E6F\\u803B\\xad\\u40AD\\u0100gm\\u33A8\\u33B4ma\\u0180;fv\\u33B1\\u33B2\\u33B2\\u43C3;\\u43C2\\u0400;deglnpr\\u12AB\\u33C5\\u33C9\\u33CE\\u33D6\\u33DE\\u33E1\\u33E6ot;\\u6A6A\\u0100;q\\u12B1\\u12B0\\u0100;E\\u33D3\\u33D4\\u6A9E;\\u6AA0\\u0100;E\\u33DB\\u33DC\\u6A9D;\\u6A9Fe;\\u6246lus;\\u6A24arr;\\u6972ar\\xf2\\u113D\\u0200aeit\\u33F8\\u3408\\u340F\\u3417\\u0100ls\\u33FD\\u3404lsetm\\xe9\\u336Ahp;\\u6A33parsl;\\u69E4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341C\\u341D\\u6AAA\\u0100;s\\u3422\\u3423\\u6AAC;\\uC000\\u2AAC\\uFE00\\u0180flp\\u342E\\u3433\\u3442tcy;\\u444C\\u0100;b\\u3438\\u3439\\u402F\\u0100;a\\u343E\\u343F\\u69C4r;\\u633Ff;\\uC000\\ud835\\udd64a\\u0100dr\\u344D\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349F\\u0100au\\u3465\\u346Fp\\u0100;s\\u1188\\u346B;\\uC000\\u2293\\uFE00p\\u0100;s\\u11B4\\u3475;\\uC000\\u2294\\uFE00u\\u0100bp\\u347F\\u348F\\u0180;es\\u1197\\u119C\\u3486et\\u0100;e\\u1197\\u348D\\xf1\\u119D\\u0180;es\\u11A8\\u11AD\\u3496et\\u0100;e\\u11A8\\u349D\\xf1\\u11AE\\u0180;af\\u117B\\u34A6\\u05B0r\\u0165\\u34AB\\u05B1\\xbb\\u117Car\\xf2\\u1148\\u0200cemt\\u34B9\\u34BE\\u34C2\\u34C5r;\\uC000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11BE\\u0100ar\\u34CE\\u34D5r\\u0100;f\\u34D4\\u17BF\\u6606\\u0100an\\u34DA\\u34EDight\\u0100ep\\u34E3\\u34EApsilo\\xee\\u1EE0h\\xe9\\u2EAFs\\xbb\\u2852\\u0280bcmnp\\u34FB\\u355E\\u1209\\u358B\\u358E\\u0480;Edemnprs\\u350E\\u350F\\u3511\\u3515\\u351E\\u3523\\u352C\\u3531\\u3536\\u6282;\\u6AC5ot;\\u6ABD\\u0100;d\\u11DA\\u351Aot;\\u6AC3ult;\\u6AC1\\u0100Ee\\u3528\\u352A;\\u6ACB;\\u628Alus;\\u6ABFarr;\\u6979\\u0180eiu\\u353D\\u3552\\u3555t\\u0180;en\\u350E\\u3545\\u354Bq\\u0100;q\\u11DA\\u350Feq\\u0100;q\\u352B\\u3528m;\\u6AC7\\u0100bp\\u355A\\u355C;\\u6AD5;\\u6AD3c\\u0300;acens\\u11ED\\u356C\\u3572\\u3579\\u357B\\u3326ppro\\xf8\\u32FAurlye\\xf1\\u11FE\\xf1\\u11F3\\u0180aes\\u3582\\u3588\\u331Bppro\\xf8\\u331Aq\\xf1\\u3317g;\\u666A\\u0680123;Edehlmnps\\u35A9\\u35AC\\u35AF\\u121C\\u35B2\\u35B4\\u35C0\\u35C9\\u35D5\\u35DA\\u35DF\\u35E8\\u35ED\\u803B\\xb9\\u40B9\\u803B\\xb2\\u40B2\\u803B\\xb3\\u40B3;\\u6AC6\\u0100os\\u35B9\\u35BCt;\\u6ABEub;\\u6AD8\\u0100;d\\u1222\\u35C5ot;\\u6AC4s\\u0100ou\\u35CF\\u35D2l;\\u67C9b;\\u6AD7arr;\\u697Bult;\\u6AC2\\u0100Ee\\u35E4\\u35E6;\\u6ACC;\\u628Blus;\\u6AC0\\u0180eiu\\u35F4\\u3609\\u360Ct\\u0180;en\\u121C\\u35FC\\u3602q\\u0100;q\\u1222\\u35B2eq\\u0100;q\\u35E7\\u35E4m;\\u6AC8\\u0100bp\\u3611\\u3613;\\u6AD4;\\u6AD6\\u0180Aan\\u361C\\u3620\\u362Drr;\\u61D9r\\u0100hr\\u3626\\u3628\\xeb\\u222E\\u0100;o\\u0A2B\\u0A29war;\\u692Alig\\u803B\\xdf\\u40DF\\u0BE1\\u3651\\u365D\\u3660\\u12CE\\u3673\\u3679\\0\\u367E\\u36C2\\0\\0\\0\\0\\0\\u36DB\\u3703\\0\\u3709\\u376C\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365Bget;\\u6316;\\u43C4r\\xeb\\u0E5F\\u0180aey\\u3666\\u366B\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uC000\\ud835\\udd31\\u0200eiko\\u3686\\u369D\\u36B5\\u36BC\\u01F2\\u368B\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369B\\u43B8ym;\\u43D1\\u0100cn\\u36A2\\u36B2k\\u0100as\\u36A8\\u36AEppro\\xf8\\u12C1im\\xbb\\u12ACs\\xf0\\u129E\\u0100as\\u36BA\\u36AE\\xf0\\u12C1rn\\u803B\\xfe\\u40FE\\u01EC\\u031F\\u36C6\\u22E7es\\u8180\\xd7;bd\\u36CF\\u36D0\\u36D8\\u40D7\\u0100;a\\u190F\\u36D5r;\\u6A31;\\u6A30\\u0180eps\\u36E1\\u36E3\\u3700\\xe1\\u2A4D\\u0200;bcf\\u0486\\u36EC\\u36F0\\u36F4ot;\\u6336ir;\\u6AF1\\u0100;o\\u36F9\\u36FC\\uC000\\ud835\\udd65rk;\\u6ADA\\xe1\\u3362rime;\\u6034\\u0180aip\\u370F\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374D\\u3740\\u3751\\u3757\\u375C\\u375Fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65B5own\\xbb\\u1DBBeft\\u0100;e\\u2800\\u373E\\xf1\\u092E;\\u625Cight\\u0100;e\\u32AA\\u374B\\xf1\\u105Aot;\\u65ECinus;\\u6A3Alus;\\u6A39b;\\u69CDime;\\u6A3Bezium;\\u63E2\\u0180cht\\u3772\\u377D\\u3781\\u0100ry\\u3777\\u377B;\\uC000\\ud835\\udcc9;\\u4446cy;\\u445Brok;\\u4167\\u0100io\\u378B\\u378Ex\\xf4\\u1777head\\u0100lr\\u3797\\u37A0eftarro\\xf7\\u084Fightarrow\\xbb\\u0F5D\\u0900AHabcdfghlmoprstuw\\u37D0\\u37D3\\u37D7\\u37E4\\u37F0\\u37FC\\u380E\\u381C\\u3823\\u3834\\u3851\\u385D\\u386B\\u38A9\\u38CC\\u38D2\\u38EA\\u38F6r\\xf2\\u03EDar;\\u6963\\u0100cr\\u37DC\\u37E2ute\\u803B\\xfa\\u40FA\\xf2\\u1150r\\u01E3\\u37EA\\0\\u37EDy;\\u445Eve;\\u416D\\u0100iy\\u37F5\\u37FArc\\u803B\\xfb\\u40FB;\\u4443\\u0180abh\\u3803\\u3806\\u380Br\\xf2\\u13ADlac;\\u4171a\\xf2\\u13C3\\u0100ir\\u3813\\u3818sht;\\u697E;\\uC000\\ud835\\udd32rave\\u803B\\xf9\\u40F9\\u0161\\u3827\\u3831r\\u0100lr\\u382C\\u382E\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384D\\u026F\\u383F\\0\\0\\u384Arn\\u0100;e\\u3845\\u3846\\u631Cr\\xbb\\u3846op;\\u630Fri;\\u65F8\\u0100al\\u3856\\u385Acr;\\u416B\\u80BB\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uC000\\ud835\\udd66\\u0300adhlsu\\u114B\\u3878\\u387D\\u1372\\u3891\\u38A0own\\xe1\\u13B3arpoon\\u0100lr\\u3888\\u388Cef\\xf4\\u382Digh\\xf4\\u382Fi\\u0180;hl\\u3899\\u389A\\u389C\\u43C5\\xbb\\u13FAon\\xbb\\u389Aparrows;\\u61C8\\u0180cit\\u38B0\\u38C4\\u38C8\\u026F\\u38B6\\0\\0\\u38C1rn\\u0100;e\\u38BC\\u38BD\\u631Dr\\xbb\\u38BDop;\\u630Eng;\\u416Fri;\\u65F9cr;\\uC000\\ud835\\udcca\\u0180dir\\u38D9\\u38DD\\u38E2ot;\\u62F0lde;\\u4169i\\u0100;f\\u3730\\u38E8\\xbb\\u1813\\u0100am\\u38EF\\u38F2r\\xf2\\u38A8l\\u803B\\xfc\\u40FCangle;\\u69A7\\u0780ABDacdeflnoprsz\\u391C\\u391F\\u3929\\u392D\\u39B5\\u39B8\\u39BD\\u39DF\\u39E4\\u39E8\\u39F3\\u39F9\\u39FD\\u3A01\\u3A20r\\xf2\\u03F7ar\\u0100;v\\u3926\\u3927\\u6AE8;\\u6AE9as\\xe8\\u03E1\\u0100nr\\u3932\\u3937grt;\\u699C\\u0380eknprst\\u34E3\\u3946\\u394B\\u3952\\u395D\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1E96\\u0180hir\\u34EB\\u2EC8\\u3959op\\xf4\\u2FB5\\u0100;h\\u13B7\\u3962\\xef\\u318D\\u0100iu\\u3969\\u396Dgm\\xe1\\u33B3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397D\\u3980\\uC000\\u228A\\uFE00;\\uC000\\u2ACB\\uFE00setneq\\u0100;q\\u398F\\u3992\\uC000\\u228B\\uFE00;\\uC000\\u2ACC\\uFE00\\u0100hr\\u399B\\u399Fet\\xe1\\u369Ciangle\\u0100lr\\u39AA\\u39AFeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39C4\\u39D2\\u39D7\\u0180;be\\u2DEA\\u39CB\\u39CFar;\\u62BBq;\\u625Alip;\\u62EE\\u0100bt\\u39DC\\u1468a\\xf2\\u1469r;\\uC000\\ud835\\udd33tr\\xe9\\u39AEsu\\u0100bp\\u39EF\\u39F1\\xbb\\u0D1C\\xbb\\u0D59pf;\\uC000\\ud835\\udd67ro\\xf0\\u0EFBtr\\xe9\\u39B4\\u0100cu\\u3A06\\u3A0Br;\\uC000\\ud835\\udccb\\u0100bp\\u3A10\\u3A18n\\u0100Ee\\u3980\\u3A16\\xbb\\u397En\\u0100Ee\\u3992\\u3A1E\\xbb\\u3990igzag;\\u699A\\u0380cefoprs\\u3A36\\u3A3B\\u3A56\\u3A5B\\u3A54\\u3A61\\u3A6Airc;\\u4175\\u0100di\\u3A40\\u3A51\\u0100bg\\u3A45\\u3A49ar;\\u6A5Fe\\u0100;q\\u15FA\\u3A4F;\\u6259erp;\\u6118r;\\uC000\\ud835\\udd34pf;\\uC000\\ud835\\udd68\\u0100;e\\u1479\\u3A66at\\xe8\\u1479cr;\\uC000\\ud835\\udccc\\u0AE3\\u178E\\u3A87\\0\\u3A8B\\0\\u3A90\\u3A9B\\0\\0\\u3A9D\\u3AA8\\u3AAB\\u3AAF\\0\\0\\u3AC3\\u3ACE\\0\\u3AD8\\u17DC\\u17DFtr\\xe9\\u17D1r;\\uC000\\ud835\\udd35\\u0100Aa\\u3A94\\u3A97r\\xf2\\u03C3r\\xf2\\u09F6;\\u43BE\\u0100Aa\\u3AA1\\u3AA4r\\xf2\\u03B8r\\xf2\\u09EBa\\xf0\\u2713is;\\u62FB\\u0180dpt\\u17A4\\u3AB5\\u3ABE\\u0100fl\\u3ABA\\u17A9;\\uC000\\ud835\\udd69im\\xe5\\u17B2\\u0100Aa\\u3AC7\\u3ACAr\\xf2\\u03CEr\\xf2\\u0A01\\u0100cq\\u3AD2\\u17B8r;\\uC000\\ud835\\udccd\\u0100pt\\u17D6\\u3ADCr\\xe9\\u17D4\\u0400acefiosu\\u3AF0\\u3AFD\\u3B08\\u3B0C\\u3B11\\u3B15\\u3B1B\\u3B21c\\u0100uy\\u3AF6\\u3AFBte\\u803B\\xfd\\u40FD;\\u444F\\u0100iy\\u3B02\\u3B06rc;\\u4177;\\u444Bn\\u803B\\xa5\\u40A5r;\\uC000\\ud835\\udd36cy;\\u4457pf;\\uC000\\ud835\\udd6acr;\\uC000\\ud835\\udcce\\u0100cm\\u3B26\\u3B29y;\\u444El\\u803B\\xff\\u40FF\\u0500acdefhiosw\\u3B42\\u3B48\\u3B54\\u3B58\\u3B64\\u3B69\\u3B6D\\u3B74\\u3B7A\\u3B80cute;\\u417A\\u0100ay\\u3B4D\\u3B52ron;\\u417E;\\u4437ot;\\u417C\\u0100et\\u3B5D\\u3B61tr\\xe6\\u155Fa;\\u43B6r;\\uC000\\ud835\\udd37cy;\\u4436grarr;\\u61DDpf;\\uC000\\ud835\\udd6bcr;\\uC000\\ud835\\udccf\\u0100jn\\u3B85\\u3B87;\\u600Dj;\\u600C'.split(\"\").map((c)=>c.charCodeAt(0)));\n\n});\n\nparcelRegister(\"cjXy9\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $8f8573b78e12f3de$export$2e2bcd8739ae039);\n// Generated using scripts/write-decode-map.ts\nvar $8f8573b78e12f3de$export$2e2bcd8739ae039 = new Uint16Array(// prettier-ignore\n\"\\u0200aglq\t\\x15\\x18\\x1b\\u026D\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403Et;\\u403Cuot;\\u4022\".split(\"\").map((c)=>c.charCodeAt(0)));\n\n});\n\nparcelRegister(\"1mqh8\", function(module, exports) {\n\n$parcel$export(module.exports, \"fromCodePoint\", () => $0fdc3a4215784dc1$export$73bfc63873071f74);\n$parcel$export(module.exports, \"replaceCodePoint\", () => $0fdc3a4215784dc1$export$b978ab756102108a);\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar $0fdc3a4215784dc1$var$_a;\nconst $0fdc3a4215784dc1$var$decodeMap = new Map([\n [\n 0,\n 65533\n ],\n // C1 Unicode control character reference replacements\n [\n 128,\n 8364\n ],\n [\n 130,\n 8218\n ],\n [\n 131,\n 402\n ],\n [\n 132,\n 8222\n ],\n [\n 133,\n 8230\n ],\n [\n 134,\n 8224\n ],\n [\n 135,\n 8225\n ],\n [\n 136,\n 710\n ],\n [\n 137,\n 8240\n ],\n [\n 138,\n 352\n ],\n [\n 139,\n 8249\n ],\n [\n 140,\n 338\n ],\n [\n 142,\n 381\n ],\n [\n 145,\n 8216\n ],\n [\n 146,\n 8217\n ],\n [\n 147,\n 8220\n ],\n [\n 148,\n 8221\n ],\n [\n 149,\n 8226\n ],\n [\n 150,\n 8211\n ],\n [\n 151,\n 8212\n ],\n [\n 152,\n 732\n ],\n [\n 153,\n 8482\n ],\n [\n 154,\n 353\n ],\n [\n 155,\n 8250\n ],\n [\n 156,\n 339\n ],\n [\n 158,\n 382\n ],\n [\n 159,\n 376\n ]\n]);\nconst $0fdc3a4215784dc1$export$73bfc63873071f74 = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n($0fdc3a4215784dc1$var$_a = String.fromCodePoint) !== null && $0fdc3a4215784dc1$var$_a !== void 0 ? $0fdc3a4215784dc1$var$_a : function(codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(codePoint >>> 10 & 0x3ff | 0xd800);\n codePoint = 0xdc00 | codePoint & 0x3ff;\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\nfunction $0fdc3a4215784dc1$export$b978ab756102108a(codePoint) {\n var _a;\n if (codePoint >= 0xd800 && codePoint <= 0xdfff || codePoint > 0x10ffff) return 0xfffd;\n return (_a = $0fdc3a4215784dc1$var$decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nfunction $0fdc3a4215784dc1$export$2e2bcd8739ae039(codePoint) {\n return $0fdc3a4215784dc1$export$73bfc63873071f74($0fdc3a4215784dc1$export$b978ab756102108a(codePoint));\n}\n\n});\n\n\nparcelRegister(\"6QxPZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"encodeHTML\", () => $4fc1d8dbc74f1929$export$f9d6449b9af28dc1);\n$parcel$export(module.exports, \"encodeNonAsciiHTML\", () => $4fc1d8dbc74f1929$export$e6e86c76506f1190);\n\nvar $4b7Mz = parcelRequire(\"4b7Mz\");\n\nvar $i7QF4 = parcelRequire(\"i7QF4\");\nconst $4fc1d8dbc74f1929$var$htmlReplacer = /[\\t\\n!-,./:-@[-`\\f{-}$\\x80-\\uFFFF]/g;\nfunction $4fc1d8dbc74f1929$export$f9d6449b9af28dc1(data) {\n return $4fc1d8dbc74f1929$var$encodeHTMLTrieRe($4fc1d8dbc74f1929$var$htmlReplacer, data);\n}\nfunction $4fc1d8dbc74f1929$export$e6e86c76506f1190(data) {\n return $4fc1d8dbc74f1929$var$encodeHTMLTrieRe((0, $i7QF4.xmlReplacer), data);\n}\nfunction $4fc1d8dbc74f1929$var$encodeHTMLTrieRe(regExp, str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while((match = regExp.exec(str)) !== null){\n const i = match.index;\n ret += str.substring(lastIdx, i);\n const char = str.charCodeAt(i);\n let next = (0, $4b7Mz.default).get(char);\n if (typeof next === \"object\") {\n // We are in a branch. Try to match the next char.\n if (i + 1 < str.length) {\n const nextChar = str.charCodeAt(i + 1);\n const value = typeof next.n === \"number\" ? next.n === nextChar ? next.o : undefined : next.n.get(nextChar);\n if (value !== undefined) {\n ret += value;\n lastIdx = regExp.lastIndex += 1;\n continue;\n }\n }\n next = next.v;\n }\n // We might have a tree node without a value; skip and use a numeric entity.\n if (next !== undefined) {\n ret += next;\n lastIdx = i + 1;\n } else {\n const cp = (0, $i7QF4.getCodePoint)(str, i);\n ret += `${cp.toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = regExp.lastIndex += Number(cp !== char);\n }\n }\n return ret + str.substr(lastIdx);\n}\n\n});\nparcelRegister(\"4b7Mz\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $30ae39ed5c434785$export$2e2bcd8739ae039);\n// Generated using scripts/write-encode-map.ts\nfunction $30ae39ed5c434785$var$restoreDiff(arr) {\n for(let i = 1; i < arr.length; i++)arr[i][0] += arr[i - 1][0] + 1;\n return arr;\n}\nvar // prettier-ignore\n$30ae39ed5c434785$export$2e2bcd8739ae039 = new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 9,\n \"	\"\n ],\n [\n 0,\n \"
\"\n ],\n [\n 22,\n \"!\"\n ],\n [\n 0,\n \""\"\n ],\n [\n 0,\n \"#\"\n ],\n [\n 0,\n \"$\"\n ],\n [\n 0,\n \"%\"\n ],\n [\n 0,\n \"&\"\n ],\n [\n 0,\n \"'\"\n ],\n [\n 0,\n \"(\"\n ],\n [\n 0,\n \")\"\n ],\n [\n 0,\n \"*\"\n ],\n [\n 0,\n \"+\"\n ],\n [\n 0,\n \",\"\n ],\n [\n 1,\n \".\"\n ],\n [\n 0,\n \"/\"\n ],\n [\n 10,\n \":\"\n ],\n [\n 0,\n \";\"\n ],\n [\n 0,\n {\n v: \"<\",\n n: 8402,\n o: \"<⃒\"\n }\n ],\n [\n 0,\n {\n v: \"=\",\n n: 8421,\n o: \"=⃥\"\n }\n ],\n [\n 0,\n {\n v: \">\",\n n: 8402,\n o: \">⃒\"\n }\n ],\n [\n 0,\n \"?\"\n ],\n [\n 0,\n \"@\"\n ],\n [\n 26,\n \"[\"\n ],\n [\n 0,\n \"\\"\n ],\n [\n 0,\n \"]\"\n ],\n [\n 0,\n \"^\"\n ],\n [\n 0,\n \"_\"\n ],\n [\n 0,\n \"`\"\n ],\n [\n 5,\n {\n n: 106,\n o: \"fj\"\n }\n ],\n [\n 20,\n \"{\"\n ],\n [\n 0,\n \"|\"\n ],\n [\n 0,\n \"}\"\n ],\n [\n 34,\n \" \"\n ],\n [\n 0,\n \"¡\"\n ],\n [\n 0,\n \"¢\"\n ],\n [\n 0,\n \"£\"\n ],\n [\n 0,\n \"¤\"\n ],\n [\n 0,\n \"¥\"\n ],\n [\n 0,\n \"¦\"\n ],\n [\n 0,\n \"§\"\n ],\n [\n 0,\n \"¨\"\n ],\n [\n 0,\n \"©\"\n ],\n [\n 0,\n \"ª\"\n ],\n [\n 0,\n \"«\"\n ],\n [\n 0,\n \"¬\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"®\"\n ],\n [\n 0,\n \"¯\"\n ],\n [\n 0,\n \"°\"\n ],\n [\n 0,\n \"±\"\n ],\n [\n 0,\n \"²\"\n ],\n [\n 0,\n \"³\"\n ],\n [\n 0,\n \"´\"\n ],\n [\n 0,\n \"µ\"\n ],\n [\n 0,\n \"¶\"\n ],\n [\n 0,\n \"·\"\n ],\n [\n 0,\n \"¸\"\n ],\n [\n 0,\n \"¹\"\n ],\n [\n 0,\n \"º\"\n ],\n [\n 0,\n \"»\"\n ],\n [\n 0,\n \"¼\"\n ],\n [\n 0,\n \"½\"\n ],\n [\n 0,\n \"¾\"\n ],\n [\n 0,\n \"¿\"\n ],\n [\n 0,\n \"À\"\n ],\n [\n 0,\n \"Á\"\n ],\n [\n 0,\n \"Â\"\n ],\n [\n 0,\n \"Ã\"\n ],\n [\n 0,\n \"Ä\"\n ],\n [\n 0,\n \"Å\"\n ],\n [\n 0,\n \"Æ\"\n ],\n [\n 0,\n \"Ç\"\n ],\n [\n 0,\n \"È\"\n ],\n [\n 0,\n \"É\"\n ],\n [\n 0,\n \"Ê\"\n ],\n [\n 0,\n \"Ë\"\n ],\n [\n 0,\n \"Ì\"\n ],\n [\n 0,\n \"Í\"\n ],\n [\n 0,\n \"Î\"\n ],\n [\n 0,\n \"Ï\"\n ],\n [\n 0,\n \"Ð\"\n ],\n [\n 0,\n \"Ñ\"\n ],\n [\n 0,\n \"Ò\"\n ],\n [\n 0,\n \"Ó\"\n ],\n [\n 0,\n \"Ô\"\n ],\n [\n 0,\n \"Õ\"\n ],\n [\n 0,\n \"Ö\"\n ],\n [\n 0,\n \"×\"\n ],\n [\n 0,\n \"Ø\"\n ],\n [\n 0,\n \"Ù\"\n ],\n [\n 0,\n \"Ú\"\n ],\n [\n 0,\n \"Û\"\n ],\n [\n 0,\n \"Ü\"\n ],\n [\n 0,\n \"Ý\"\n ],\n [\n 0,\n \"Þ\"\n ],\n [\n 0,\n \"ß\"\n ],\n [\n 0,\n \"à\"\n ],\n [\n 0,\n \"á\"\n ],\n [\n 0,\n \"â\"\n ],\n [\n 0,\n \"ã\"\n ],\n [\n 0,\n \"ä\"\n ],\n [\n 0,\n \"å\"\n ],\n [\n 0,\n \"æ\"\n ],\n [\n 0,\n \"ç\"\n ],\n [\n 0,\n \"è\"\n ],\n [\n 0,\n \"é\"\n ],\n [\n 0,\n \"ê\"\n ],\n [\n 0,\n \"ë\"\n ],\n [\n 0,\n \"ì\"\n ],\n [\n 0,\n \"í\"\n ],\n [\n 0,\n \"î\"\n ],\n [\n 0,\n \"ï\"\n ],\n [\n 0,\n \"ð\"\n ],\n [\n 0,\n \"ñ\"\n ],\n [\n 0,\n \"ò\"\n ],\n [\n 0,\n \"ó\"\n ],\n [\n 0,\n \"ô\"\n ],\n [\n 0,\n \"õ\"\n ],\n [\n 0,\n \"ö\"\n ],\n [\n 0,\n \"÷\"\n ],\n [\n 0,\n \"ø\"\n ],\n [\n 0,\n \"ù\"\n ],\n [\n 0,\n \"ú\"\n ],\n [\n 0,\n \"û\"\n ],\n [\n 0,\n \"ü\"\n ],\n [\n 0,\n \"ý\"\n ],\n [\n 0,\n \"þ\"\n ],\n [\n 0,\n \"ÿ\"\n ],\n [\n 0,\n \"Ā\"\n ],\n [\n 0,\n \"ā\"\n ],\n [\n 0,\n \"Ă\"\n ],\n [\n 0,\n \"ă\"\n ],\n [\n 0,\n \"Ą\"\n ],\n [\n 0,\n \"ą\"\n ],\n [\n 0,\n \"Ć\"\n ],\n [\n 0,\n \"ć\"\n ],\n [\n 0,\n \"Ĉ\"\n ],\n [\n 0,\n \"ĉ\"\n ],\n [\n 0,\n \"Ċ\"\n ],\n [\n 0,\n \"ċ\"\n ],\n [\n 0,\n \"Č\"\n ],\n [\n 0,\n \"č\"\n ],\n [\n 0,\n \"Ď\"\n ],\n [\n 0,\n \"ď\"\n ],\n [\n 0,\n \"Đ\"\n ],\n [\n 0,\n \"đ\"\n ],\n [\n 0,\n \"Ē\"\n ],\n [\n 0,\n \"ē\"\n ],\n [\n 2,\n \"Ė\"\n ],\n [\n 0,\n \"ė\"\n ],\n [\n 0,\n \"Ę\"\n ],\n [\n 0,\n \"ę\"\n ],\n [\n 0,\n \"Ě\"\n ],\n [\n 0,\n \"ě\"\n ],\n [\n 0,\n \"Ĝ\"\n ],\n [\n 0,\n \"ĝ\"\n ],\n [\n 0,\n \"Ğ\"\n ],\n [\n 0,\n \"ğ\"\n ],\n [\n 0,\n \"Ġ\"\n ],\n [\n 0,\n \"ġ\"\n ],\n [\n 0,\n \"Ģ\"\n ],\n [\n 1,\n \"Ĥ\"\n ],\n [\n 0,\n \"ĥ\"\n ],\n [\n 0,\n \"Ħ\"\n ],\n [\n 0,\n \"ħ\"\n ],\n [\n 0,\n \"Ĩ\"\n ],\n [\n 0,\n \"ĩ\"\n ],\n [\n 0,\n \"Ī\"\n ],\n [\n 0,\n \"ī\"\n ],\n [\n 2,\n \"Į\"\n ],\n [\n 0,\n \"į\"\n ],\n [\n 0,\n \"İ\"\n ],\n [\n 0,\n \"ı\"\n ],\n [\n 0,\n \"IJ\"\n ],\n [\n 0,\n \"ij\"\n ],\n [\n 0,\n \"Ĵ\"\n ],\n [\n 0,\n \"ĵ\"\n ],\n [\n 0,\n \"Ķ\"\n ],\n [\n 0,\n \"ķ\"\n ],\n [\n 0,\n \"ĸ\"\n ],\n [\n 0,\n \"Ĺ\"\n ],\n [\n 0,\n \"ĺ\"\n ],\n [\n 0,\n \"Ļ\"\n ],\n [\n 0,\n \"ļ\"\n ],\n [\n 0,\n \"Ľ\"\n ],\n [\n 0,\n \"ľ\"\n ],\n [\n 0,\n \"Ŀ\"\n ],\n [\n 0,\n \"ŀ\"\n ],\n [\n 0,\n \"Ł\"\n ],\n [\n 0,\n \"ł\"\n ],\n [\n 0,\n \"Ń\"\n ],\n [\n 0,\n \"ń\"\n ],\n [\n 0,\n \"Ņ\"\n ],\n [\n 0,\n \"ņ\"\n ],\n [\n 0,\n \"Ň\"\n ],\n [\n 0,\n \"ň\"\n ],\n [\n 0,\n \"ʼn\"\n ],\n [\n 0,\n \"Ŋ\"\n ],\n [\n 0,\n \"ŋ\"\n ],\n [\n 0,\n \"Ō\"\n ],\n [\n 0,\n \"ō\"\n ],\n [\n 2,\n \"Ő\"\n ],\n [\n 0,\n \"ő\"\n ],\n [\n 0,\n \"Œ\"\n ],\n [\n 0,\n \"œ\"\n ],\n [\n 0,\n \"Ŕ\"\n ],\n [\n 0,\n \"ŕ\"\n ],\n [\n 0,\n \"Ŗ\"\n ],\n [\n 0,\n \"ŗ\"\n ],\n [\n 0,\n \"Ř\"\n ],\n [\n 0,\n \"ř\"\n ],\n [\n 0,\n \"Ś\"\n ],\n [\n 0,\n \"ś\"\n ],\n [\n 0,\n \"Ŝ\"\n ],\n [\n 0,\n \"ŝ\"\n ],\n [\n 0,\n \"Ş\"\n ],\n [\n 0,\n \"ş\"\n ],\n [\n 0,\n \"Š\"\n ],\n [\n 0,\n \"š\"\n ],\n [\n 0,\n \"Ţ\"\n ],\n [\n 0,\n \"ţ\"\n ],\n [\n 0,\n \"Ť\"\n ],\n [\n 0,\n \"ť\"\n ],\n [\n 0,\n \"Ŧ\"\n ],\n [\n 0,\n \"ŧ\"\n ],\n [\n 0,\n \"Ũ\"\n ],\n [\n 0,\n \"ũ\"\n ],\n [\n 0,\n \"Ū\"\n ],\n [\n 0,\n \"ū\"\n ],\n [\n 0,\n \"Ŭ\"\n ],\n [\n 0,\n \"ŭ\"\n ],\n [\n 0,\n \"Ů\"\n ],\n [\n 0,\n \"ů\"\n ],\n [\n 0,\n \"Ű\"\n ],\n [\n 0,\n \"ű\"\n ],\n [\n 0,\n \"Ų\"\n ],\n [\n 0,\n \"ų\"\n ],\n [\n 0,\n \"Ŵ\"\n ],\n [\n 0,\n \"ŵ\"\n ],\n [\n 0,\n \"Ŷ\"\n ],\n [\n 0,\n \"ŷ\"\n ],\n [\n 0,\n \"Ÿ\"\n ],\n [\n 0,\n \"Ź\"\n ],\n [\n 0,\n \"ź\"\n ],\n [\n 0,\n \"Ż\"\n ],\n [\n 0,\n \"ż\"\n ],\n [\n 0,\n \"Ž\"\n ],\n [\n 0,\n \"ž\"\n ],\n [\n 19,\n \"ƒ\"\n ],\n [\n 34,\n \"Ƶ\"\n ],\n [\n 63,\n \"ǵ\"\n ],\n [\n 65,\n \"ȷ\"\n ],\n [\n 142,\n \"ˆ\"\n ],\n [\n 0,\n \"ˇ\"\n ],\n [\n 16,\n \"˘\"\n ],\n [\n 0,\n \"˙\"\n ],\n [\n 0,\n \"˚\"\n ],\n [\n 0,\n \"˛\"\n ],\n [\n 0,\n \"˜\"\n ],\n [\n 0,\n \"˝\"\n ],\n [\n 51,\n \"̑\"\n ],\n [\n 127,\n \"Α\"\n ],\n [\n 0,\n \"Β\"\n ],\n [\n 0,\n \"Γ\"\n ],\n [\n 0,\n \"Δ\"\n ],\n [\n 0,\n \"Ε\"\n ],\n [\n 0,\n \"Ζ\"\n ],\n [\n 0,\n \"Η\"\n ],\n [\n 0,\n \"Θ\"\n ],\n [\n 0,\n \"Ι\"\n ],\n [\n 0,\n \"Κ\"\n ],\n [\n 0,\n \"Λ\"\n ],\n [\n 0,\n \"Μ\"\n ],\n [\n 0,\n \"Ν\"\n ],\n [\n 0,\n \"Ξ\"\n ],\n [\n 0,\n \"Ο\"\n ],\n [\n 0,\n \"Π\"\n ],\n [\n 0,\n \"Ρ\"\n ],\n [\n 1,\n \"Σ\"\n ],\n [\n 0,\n \"Τ\"\n ],\n [\n 0,\n \"Υ\"\n ],\n [\n 0,\n \"Φ\"\n ],\n [\n 0,\n \"Χ\"\n ],\n [\n 0,\n \"Ψ\"\n ],\n [\n 0,\n \"Ω\"\n ],\n [\n 7,\n \"α\"\n ],\n [\n 0,\n \"β\"\n ],\n [\n 0,\n \"γ\"\n ],\n [\n 0,\n \"δ\"\n ],\n [\n 0,\n \"ε\"\n ],\n [\n 0,\n \"ζ\"\n ],\n [\n 0,\n \"η\"\n ],\n [\n 0,\n \"θ\"\n ],\n [\n 0,\n \"ι\"\n ],\n [\n 0,\n \"κ\"\n ],\n [\n 0,\n \"λ\"\n ],\n [\n 0,\n \"μ\"\n ],\n [\n 0,\n \"ν\"\n ],\n [\n 0,\n \"ξ\"\n ],\n [\n 0,\n \"ο\"\n ],\n [\n 0,\n \"π\"\n ],\n [\n 0,\n \"ρ\"\n ],\n [\n 0,\n \"ς\"\n ],\n [\n 0,\n \"σ\"\n ],\n [\n 0,\n \"τ\"\n ],\n [\n 0,\n \"υ\"\n ],\n [\n 0,\n \"φ\"\n ],\n [\n 0,\n \"χ\"\n ],\n [\n 0,\n \"ψ\"\n ],\n [\n 0,\n \"ω\"\n ],\n [\n 7,\n \"ϑ\"\n ],\n [\n 0,\n \"ϒ\"\n ],\n [\n 2,\n \"ϕ\"\n ],\n [\n 0,\n \"ϖ\"\n ],\n [\n 5,\n \"Ϝ\"\n ],\n [\n 0,\n \"ϝ\"\n ],\n [\n 18,\n \"ϰ\"\n ],\n [\n 0,\n \"ϱ\"\n ],\n [\n 3,\n \"ϵ\"\n ],\n [\n 0,\n \"϶\"\n ],\n [\n 10,\n \"Ё\"\n ],\n [\n 0,\n \"Ђ\"\n ],\n [\n 0,\n \"Ѓ\"\n ],\n [\n 0,\n \"Є\"\n ],\n [\n 0,\n \"Ѕ\"\n ],\n [\n 0,\n \"І\"\n ],\n [\n 0,\n \"Ї\"\n ],\n [\n 0,\n \"Ј\"\n ],\n [\n 0,\n \"Љ\"\n ],\n [\n 0,\n \"Њ\"\n ],\n [\n 0,\n \"Ћ\"\n ],\n [\n 0,\n \"Ќ\"\n ],\n [\n 1,\n \"Ў\"\n ],\n [\n 0,\n \"Џ\"\n ],\n [\n 0,\n \"А\"\n ],\n [\n 0,\n \"Б\"\n ],\n [\n 0,\n \"В\"\n ],\n [\n 0,\n \"Г\"\n ],\n [\n 0,\n \"Д\"\n ],\n [\n 0,\n \"Е\"\n ],\n [\n 0,\n \"Ж\"\n ],\n [\n 0,\n \"З\"\n ],\n [\n 0,\n \"И\"\n ],\n [\n 0,\n \"Й\"\n ],\n [\n 0,\n \"К\"\n ],\n [\n 0,\n \"Л\"\n ],\n [\n 0,\n \"М\"\n ],\n [\n 0,\n \"Н\"\n ],\n [\n 0,\n \"О\"\n ],\n [\n 0,\n \"П\"\n ],\n [\n 0,\n \"Р\"\n ],\n [\n 0,\n \"С\"\n ],\n [\n 0,\n \"Т\"\n ],\n [\n 0,\n \"У\"\n ],\n [\n 0,\n \"Ф\"\n ],\n [\n 0,\n \"Х\"\n ],\n [\n 0,\n \"Ц\"\n ],\n [\n 0,\n \"Ч\"\n ],\n [\n 0,\n \"Ш\"\n ],\n [\n 0,\n \"Щ\"\n ],\n [\n 0,\n \"Ъ\"\n ],\n [\n 0,\n \"Ы\"\n ],\n [\n 0,\n \"Ь\"\n ],\n [\n 0,\n \"Э\"\n ],\n [\n 0,\n \"Ю\"\n ],\n [\n 0,\n \"Я\"\n ],\n [\n 0,\n \"а\"\n ],\n [\n 0,\n \"б\"\n ],\n [\n 0,\n \"в\"\n ],\n [\n 0,\n \"г\"\n ],\n [\n 0,\n \"д\"\n ],\n [\n 0,\n \"е\"\n ],\n [\n 0,\n \"ж\"\n ],\n [\n 0,\n \"з\"\n ],\n [\n 0,\n \"и\"\n ],\n [\n 0,\n \"й\"\n ],\n [\n 0,\n \"к\"\n ],\n [\n 0,\n \"л\"\n ],\n [\n 0,\n \"м\"\n ],\n [\n 0,\n \"н\"\n ],\n [\n 0,\n \"о\"\n ],\n [\n 0,\n \"п\"\n ],\n [\n 0,\n \"р\"\n ],\n [\n 0,\n \"с\"\n ],\n [\n 0,\n \"т\"\n ],\n [\n 0,\n \"у\"\n ],\n [\n 0,\n \"ф\"\n ],\n [\n 0,\n \"х\"\n ],\n [\n 0,\n \"ц\"\n ],\n [\n 0,\n \"ч\"\n ],\n [\n 0,\n \"ш\"\n ],\n [\n 0,\n \"щ\"\n ],\n [\n 0,\n \"ъ\"\n ],\n [\n 0,\n \"ы\"\n ],\n [\n 0,\n \"ь\"\n ],\n [\n 0,\n \"э\"\n ],\n [\n 0,\n \"ю\"\n ],\n [\n 0,\n \"я\"\n ],\n [\n 1,\n \"ё\"\n ],\n [\n 0,\n \"ђ\"\n ],\n [\n 0,\n \"ѓ\"\n ],\n [\n 0,\n \"є\"\n ],\n [\n 0,\n \"ѕ\"\n ],\n [\n 0,\n \"і\"\n ],\n [\n 0,\n \"ї\"\n ],\n [\n 0,\n \"ј\"\n ],\n [\n 0,\n \"љ\"\n ],\n [\n 0,\n \"њ\"\n ],\n [\n 0,\n \"ћ\"\n ],\n [\n 0,\n \"ќ\"\n ],\n [\n 1,\n \"ў\"\n ],\n [\n 0,\n \"џ\"\n ],\n [\n 7074,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 1,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \"​\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"‐\"\n ],\n [\n 2,\n \"–\"\n ],\n [\n 0,\n \"—\"\n ],\n [\n 0,\n \"―\"\n ],\n [\n 0,\n \"‖\"\n ],\n [\n 1,\n \"‘\"\n ],\n [\n 0,\n \"’\"\n ],\n [\n 0,\n \"‚\"\n ],\n [\n 1,\n \"“\"\n ],\n [\n 0,\n \"”\"\n ],\n [\n 0,\n \"„\"\n ],\n [\n 1,\n \"†\"\n ],\n [\n 0,\n \"‡\"\n ],\n [\n 0,\n \"•\"\n ],\n [\n 2,\n \"‥\"\n ],\n [\n 0,\n \"…\"\n ],\n [\n 9,\n \"‰\"\n ],\n [\n 0,\n \"‱\"\n ],\n [\n 0,\n \"′\"\n ],\n [\n 0,\n \"″\"\n ],\n [\n 0,\n \"‴\"\n ],\n [\n 0,\n \"‵\"\n ],\n [\n 3,\n \"‹\"\n ],\n [\n 0,\n \"›\"\n ],\n [\n 3,\n \"‾\"\n ],\n [\n 2,\n \"⁁\"\n ],\n [\n 1,\n \"⁃\"\n ],\n [\n 0,\n \"⁄\"\n ],\n [\n 10,\n \"⁏\"\n ],\n [\n 7,\n \"⁗\"\n ],\n [\n 7,\n {\n v: \" \",\n n: 8202,\n o: \"  \"\n }\n ],\n [\n 0,\n \"⁠\"\n ],\n [\n 0,\n \"⁡\"\n ],\n [\n 0,\n \"⁢\"\n ],\n [\n 0,\n \"⁣\"\n ],\n [\n 72,\n \"€\"\n ],\n [\n 46,\n \"⃛\"\n ],\n [\n 0,\n \"⃜\"\n ],\n [\n 37,\n \"ℂ\"\n ],\n [\n 2,\n \"℅\"\n ],\n [\n 4,\n \"ℊ\"\n ],\n [\n 0,\n \"ℋ\"\n ],\n [\n 0,\n \"ℌ\"\n ],\n [\n 0,\n \"ℍ\"\n ],\n [\n 0,\n \"ℎ\"\n ],\n [\n 0,\n \"ℏ\"\n ],\n [\n 0,\n \"ℐ\"\n ],\n [\n 0,\n \"ℑ\"\n ],\n [\n 0,\n \"ℒ\"\n ],\n [\n 0,\n \"ℓ\"\n ],\n [\n 1,\n \"ℕ\"\n ],\n [\n 0,\n \"№\"\n ],\n [\n 0,\n \"℗\"\n ],\n [\n 0,\n \"℘\"\n ],\n [\n 0,\n \"ℙ\"\n ],\n [\n 0,\n \"ℚ\"\n ],\n [\n 0,\n \"ℛ\"\n ],\n [\n 0,\n \"ℜ\"\n ],\n [\n 0,\n \"ℝ\"\n ],\n [\n 0,\n \"℞\"\n ],\n [\n 3,\n \"™\"\n ],\n [\n 1,\n \"ℤ\"\n ],\n [\n 2,\n \"℧\"\n ],\n [\n 0,\n \"ℨ\"\n ],\n [\n 0,\n \"℩\"\n ],\n [\n 2,\n \"ℬ\"\n ],\n [\n 0,\n \"ℭ\"\n ],\n [\n 1,\n \"ℯ\"\n ],\n [\n 0,\n \"ℰ\"\n ],\n [\n 0,\n \"ℱ\"\n ],\n [\n 1,\n \"ℳ\"\n ],\n [\n 0,\n \"ℴ\"\n ],\n [\n 0,\n \"ℵ\"\n ],\n [\n 0,\n \"ℶ\"\n ],\n [\n 0,\n \"ℷ\"\n ],\n [\n 0,\n \"ℸ\"\n ],\n [\n 12,\n \"ⅅ\"\n ],\n [\n 0,\n \"ⅆ\"\n ],\n [\n 0,\n \"ⅇ\"\n ],\n [\n 0,\n \"ⅈ\"\n ],\n [\n 10,\n \"⅓\"\n ],\n [\n 0,\n \"⅔\"\n ],\n [\n 0,\n \"⅕\"\n ],\n [\n 0,\n \"⅖\"\n ],\n [\n 0,\n \"⅗\"\n ],\n [\n 0,\n \"⅘\"\n ],\n [\n 0,\n \"⅙\"\n ],\n [\n 0,\n \"⅚\"\n ],\n [\n 0,\n \"⅛\"\n ],\n [\n 0,\n \"⅜\"\n ],\n [\n 0,\n \"⅝\"\n ],\n [\n 0,\n \"⅞\"\n ],\n [\n 49,\n \"←\"\n ],\n [\n 0,\n \"↑\"\n ],\n [\n 0,\n \"→\"\n ],\n [\n 0,\n \"↓\"\n ],\n [\n 0,\n \"↔\"\n ],\n [\n 0,\n \"↕\"\n ],\n [\n 0,\n \"↖\"\n ],\n [\n 0,\n \"↗\"\n ],\n [\n 0,\n \"↘\"\n ],\n [\n 0,\n \"↙\"\n ],\n [\n 0,\n \"↚\"\n ],\n [\n 0,\n \"↛\"\n ],\n [\n 1,\n {\n v: \"↝\",\n n: 824,\n o: \"↝̸\"\n }\n ],\n [\n 0,\n \"↞\"\n ],\n [\n 0,\n \"↟\"\n ],\n [\n 0,\n \"↠\"\n ],\n [\n 0,\n \"↡\"\n ],\n [\n 0,\n \"↢\"\n ],\n [\n 0,\n \"↣\"\n ],\n [\n 0,\n \"↤\"\n ],\n [\n 0,\n \"↥\"\n ],\n [\n 0,\n \"↦\"\n ],\n [\n 0,\n \"↧\"\n ],\n [\n 1,\n \"↩\"\n ],\n [\n 0,\n \"↪\"\n ],\n [\n 0,\n \"↫\"\n ],\n [\n 0,\n \"↬\"\n ],\n [\n 0,\n \"↭\"\n ],\n [\n 0,\n \"↮\"\n ],\n [\n 1,\n \"↰\"\n ],\n [\n 0,\n \"↱\"\n ],\n [\n 0,\n \"↲\"\n ],\n [\n 0,\n \"↳\"\n ],\n [\n 1,\n \"↵\"\n ],\n [\n 0,\n \"↶\"\n ],\n [\n 0,\n \"↷\"\n ],\n [\n 2,\n \"↺\"\n ],\n [\n 0,\n \"↻\"\n ],\n [\n 0,\n \"↼\"\n ],\n [\n 0,\n \"↽\"\n ],\n [\n 0,\n \"↾\"\n ],\n [\n 0,\n \"↿\"\n ],\n [\n 0,\n \"⇀\"\n ],\n [\n 0,\n \"⇁\"\n ],\n [\n 0,\n \"⇂\"\n ],\n [\n 0,\n \"⇃\"\n ],\n [\n 0,\n \"⇄\"\n ],\n [\n 0,\n \"⇅\"\n ],\n [\n 0,\n \"⇆\"\n ],\n [\n 0,\n \"⇇\"\n ],\n [\n 0,\n \"⇈\"\n ],\n [\n 0,\n \"⇉\"\n ],\n [\n 0,\n \"⇊\"\n ],\n [\n 0,\n \"⇋\"\n ],\n [\n 0,\n \"⇌\"\n ],\n [\n 0,\n \"⇍\"\n ],\n [\n 0,\n \"⇎\"\n ],\n [\n 0,\n \"⇏\"\n ],\n [\n 0,\n \"⇐\"\n ],\n [\n 0,\n \"⇑\"\n ],\n [\n 0,\n \"⇒\"\n ],\n [\n 0,\n \"⇓\"\n ],\n [\n 0,\n \"⇔\"\n ],\n [\n 0,\n \"⇕\"\n ],\n [\n 0,\n \"⇖\"\n ],\n [\n 0,\n \"⇗\"\n ],\n [\n 0,\n \"⇘\"\n ],\n [\n 0,\n \"⇙\"\n ],\n [\n 0,\n \"⇚\"\n ],\n [\n 0,\n \"⇛\"\n ],\n [\n 1,\n \"⇝\"\n ],\n [\n 6,\n \"⇤\"\n ],\n [\n 0,\n \"⇥\"\n ],\n [\n 15,\n \"⇵\"\n ],\n [\n 7,\n \"⇽\"\n ],\n [\n 0,\n \"⇾\"\n ],\n [\n 0,\n \"⇿\"\n ],\n [\n 0,\n \"∀\"\n ],\n [\n 0,\n \"∁\"\n ],\n [\n 0,\n {\n v: \"∂\",\n n: 824,\n o: \"∂̸\"\n }\n ],\n [\n 0,\n \"∃\"\n ],\n [\n 0,\n \"∄\"\n ],\n [\n 0,\n \"∅\"\n ],\n [\n 1,\n \"∇\"\n ],\n [\n 0,\n \"∈\"\n ],\n [\n 0,\n \"∉\"\n ],\n [\n 1,\n \"∋\"\n ],\n [\n 0,\n \"∌\"\n ],\n [\n 2,\n \"∏\"\n ],\n [\n 0,\n \"∐\"\n ],\n [\n 0,\n \"∑\"\n ],\n [\n 0,\n \"−\"\n ],\n [\n 0,\n \"∓\"\n ],\n [\n 0,\n \"∔\"\n ],\n [\n 1,\n \"∖\"\n ],\n [\n 0,\n \"∗\"\n ],\n [\n 0,\n \"∘\"\n ],\n [\n 1,\n \"√\"\n ],\n [\n 2,\n \"∝\"\n ],\n [\n 0,\n \"∞\"\n ],\n [\n 0,\n \"∟\"\n ],\n [\n 0,\n {\n v: \"∠\",\n n: 8402,\n o: \"∠⃒\"\n }\n ],\n [\n 0,\n \"∡\"\n ],\n [\n 0,\n \"∢\"\n ],\n [\n 0,\n \"∣\"\n ],\n [\n 0,\n \"∤\"\n ],\n [\n 0,\n \"∥\"\n ],\n [\n 0,\n \"∦\"\n ],\n [\n 0,\n \"∧\"\n ],\n [\n 0,\n \"∨\"\n ],\n [\n 0,\n {\n v: \"∩\",\n n: 65024,\n o: \"∩︀\"\n }\n ],\n [\n 0,\n {\n v: \"∪\",\n n: 65024,\n o: \"∪︀\"\n }\n ],\n [\n 0,\n \"∫\"\n ],\n [\n 0,\n \"∬\"\n ],\n [\n 0,\n \"∭\"\n ],\n [\n 0,\n \"∮\"\n ],\n [\n 0,\n \"∯\"\n ],\n [\n 0,\n \"∰\"\n ],\n [\n 0,\n \"∱\"\n ],\n [\n 0,\n \"∲\"\n ],\n [\n 0,\n \"∳\"\n ],\n [\n 0,\n \"∴\"\n ],\n [\n 0,\n \"∵\"\n ],\n [\n 0,\n \"∶\"\n ],\n [\n 0,\n \"∷\"\n ],\n [\n 0,\n \"∸\"\n ],\n [\n 1,\n \"∺\"\n ],\n [\n 0,\n \"∻\"\n ],\n [\n 0,\n {\n v: \"∼\",\n n: 8402,\n o: \"∼⃒\"\n }\n ],\n [\n 0,\n {\n v: \"∽\",\n n: 817,\n o: \"∽̱\"\n }\n ],\n [\n 0,\n {\n v: \"∾\",\n n: 819,\n o: \"∾̳\"\n }\n ],\n [\n 0,\n \"∿\"\n ],\n [\n 0,\n \"≀\"\n ],\n [\n 0,\n \"≁\"\n ],\n [\n 0,\n {\n v: \"≂\",\n n: 824,\n o: \"≂̸\"\n }\n ],\n [\n 0,\n \"≃\"\n ],\n [\n 0,\n \"≄\"\n ],\n [\n 0,\n \"≅\"\n ],\n [\n 0,\n \"≆\"\n ],\n [\n 0,\n \"≇\"\n ],\n [\n 0,\n \"≈\"\n ],\n [\n 0,\n \"≉\"\n ],\n [\n 0,\n \"≊\"\n ],\n [\n 0,\n {\n v: \"≋\",\n n: 824,\n o: \"≋̸\"\n }\n ],\n [\n 0,\n \"≌\"\n ],\n [\n 0,\n {\n v: \"≍\",\n n: 8402,\n o: \"≍⃒\"\n }\n ],\n [\n 0,\n {\n v: \"≎\",\n n: 824,\n o: \"≎̸\"\n }\n ],\n [\n 0,\n {\n v: \"≏\",\n n: 824,\n o: \"≏̸\"\n }\n ],\n [\n 0,\n {\n v: \"≐\",\n n: 824,\n o: \"≐̸\"\n }\n ],\n [\n 0,\n \"≑\"\n ],\n [\n 0,\n \"≒\"\n ],\n [\n 0,\n \"≓\"\n ],\n [\n 0,\n \"≔\"\n ],\n [\n 0,\n \"≕\"\n ],\n [\n 0,\n \"≖\"\n ],\n [\n 0,\n \"≗\"\n ],\n [\n 1,\n \"≙\"\n ],\n [\n 0,\n \"≚\"\n ],\n [\n 1,\n \"≜\"\n ],\n [\n 2,\n \"≟\"\n ],\n [\n 0,\n \"≠\"\n ],\n [\n 0,\n {\n v: \"≡\",\n n: 8421,\n o: \"≡⃥\"\n }\n ],\n [\n 0,\n \"≢\"\n ],\n [\n 1,\n {\n v: \"≤\",\n n: 8402,\n o: \"≤⃒\"\n }\n ],\n [\n 0,\n {\n v: \"≥\",\n n: 8402,\n o: \"≥⃒\"\n }\n ],\n [\n 0,\n {\n v: \"≦\",\n n: 824,\n o: \"≦̸\"\n }\n ],\n [\n 0,\n {\n v: \"≧\",\n n: 824,\n o: \"≧̸\"\n }\n ],\n [\n 0,\n {\n v: \"≨\",\n n: 65024,\n o: \"≨︀\"\n }\n ],\n [\n 0,\n {\n v: \"≩\",\n n: 65024,\n o: \"≩︀\"\n }\n ],\n [\n 0,\n {\n v: \"≪\",\n n: new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 824,\n \"≪̸\"\n ],\n [\n 7577,\n \"≪⃒\"\n ]\n ]))\n }\n ],\n [\n 0,\n {\n v: \"≫\",\n n: new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 824,\n \"≫̸\"\n ],\n [\n 7577,\n \"≫⃒\"\n ]\n ]))\n }\n ],\n [\n 0,\n \"≬\"\n ],\n [\n 0,\n \"≭\"\n ],\n [\n 0,\n \"≮\"\n ],\n [\n 0,\n \"≯\"\n ],\n [\n 0,\n \"≰\"\n ],\n [\n 0,\n \"≱\"\n ],\n [\n 0,\n \"≲\"\n ],\n [\n 0,\n \"≳\"\n ],\n [\n 0,\n \"≴\"\n ],\n [\n 0,\n \"≵\"\n ],\n [\n 0,\n \"≶\"\n ],\n [\n 0,\n \"≷\"\n ],\n [\n 0,\n \"≸\"\n ],\n [\n 0,\n \"≹\"\n ],\n [\n 0,\n \"≺\"\n ],\n [\n 0,\n \"≻\"\n ],\n [\n 0,\n \"≼\"\n ],\n [\n 0,\n \"≽\"\n ],\n [\n 0,\n \"≾\"\n ],\n [\n 0,\n {\n v: \"≿\",\n n: 824,\n o: \"≿̸\"\n }\n ],\n [\n 0,\n \"⊀\"\n ],\n [\n 0,\n \"⊁\"\n ],\n [\n 0,\n {\n v: \"⊂\",\n n: 8402,\n o: \"⊂⃒\"\n }\n ],\n [\n 0,\n {\n v: \"⊃\",\n n: 8402,\n o: \"⊃⃒\"\n }\n ],\n [\n 0,\n \"⊄\"\n ],\n [\n 0,\n \"⊅\"\n ],\n [\n 0,\n \"⊆\"\n ],\n [\n 0,\n \"⊇\"\n ],\n [\n 0,\n \"⊈\"\n ],\n [\n 0,\n \"⊉\"\n ],\n [\n 0,\n {\n v: \"⊊\",\n n: 65024,\n o: \"⊊︀\"\n }\n ],\n [\n 0,\n {\n v: \"⊋\",\n n: 65024,\n o: \"⊋︀\"\n }\n ],\n [\n 1,\n \"⊍\"\n ],\n [\n 0,\n \"⊎\"\n ],\n [\n 0,\n {\n v: \"⊏\",\n n: 824,\n o: \"⊏̸\"\n }\n ],\n [\n 0,\n {\n v: \"⊐\",\n n: 824,\n o: \"⊐̸\"\n }\n ],\n [\n 0,\n \"⊑\"\n ],\n [\n 0,\n \"⊒\"\n ],\n [\n 0,\n {\n v: \"⊓\",\n n: 65024,\n o: \"⊓︀\"\n }\n ],\n [\n 0,\n {\n v: \"⊔\",\n n: 65024,\n o: \"⊔︀\"\n }\n ],\n [\n 0,\n \"⊕\"\n ],\n [\n 0,\n \"⊖\"\n ],\n [\n 0,\n \"⊗\"\n ],\n [\n 0,\n \"⊘\"\n ],\n [\n 0,\n \"⊙\"\n ],\n [\n 0,\n \"⊚\"\n ],\n [\n 0,\n \"⊛\"\n ],\n [\n 1,\n \"⊝\"\n ],\n [\n 0,\n \"⊞\"\n ],\n [\n 0,\n \"⊟\"\n ],\n [\n 0,\n \"⊠\"\n ],\n [\n 0,\n \"⊡\"\n ],\n [\n 0,\n \"⊢\"\n ],\n [\n 0,\n \"⊣\"\n ],\n [\n 0,\n \"⊤\"\n ],\n [\n 0,\n \"⊥\"\n ],\n [\n 1,\n \"⊧\"\n ],\n [\n 0,\n \"⊨\"\n ],\n [\n 0,\n \"⊩\"\n ],\n [\n 0,\n \"⊪\"\n ],\n [\n 0,\n \"⊫\"\n ],\n [\n 0,\n \"⊬\"\n ],\n [\n 0,\n \"⊭\"\n ],\n [\n 0,\n \"⊮\"\n ],\n [\n 0,\n \"⊯\"\n ],\n [\n 0,\n \"⊰\"\n ],\n [\n 1,\n \"⊲\"\n ],\n [\n 0,\n \"⊳\"\n ],\n [\n 0,\n {\n v: \"⊴\",\n n: 8402,\n o: \"⊴⃒\"\n }\n ],\n [\n 0,\n {\n v: \"⊵\",\n n: 8402,\n o: \"⊵⃒\"\n }\n ],\n [\n 0,\n \"⊶\"\n ],\n [\n 0,\n \"⊷\"\n ],\n [\n 0,\n \"⊸\"\n ],\n [\n 0,\n \"⊹\"\n ],\n [\n 0,\n \"⊺\"\n ],\n [\n 0,\n \"⊻\"\n ],\n [\n 1,\n \"⊽\"\n ],\n [\n 0,\n \"⊾\"\n ],\n [\n 0,\n \"⊿\"\n ],\n [\n 0,\n \"⋀\"\n ],\n [\n 0,\n \"⋁\"\n ],\n [\n 0,\n \"⋂\"\n ],\n [\n 0,\n \"⋃\"\n ],\n [\n 0,\n \"⋄\"\n ],\n [\n 0,\n \"⋅\"\n ],\n [\n 0,\n \"⋆\"\n ],\n [\n 0,\n \"⋇\"\n ],\n [\n 0,\n \"⋈\"\n ],\n [\n 0,\n \"⋉\"\n ],\n [\n 0,\n \"⋊\"\n ],\n [\n 0,\n \"⋋\"\n ],\n [\n 0,\n \"⋌\"\n ],\n [\n 0,\n \"⋍\"\n ],\n [\n 0,\n \"⋎\"\n ],\n [\n 0,\n \"⋏\"\n ],\n [\n 0,\n \"⋐\"\n ],\n [\n 0,\n \"⋑\"\n ],\n [\n 0,\n \"⋒\"\n ],\n [\n 0,\n \"⋓\"\n ],\n [\n 0,\n \"⋔\"\n ],\n [\n 0,\n \"⋕\"\n ],\n [\n 0,\n \"⋖\"\n ],\n [\n 0,\n \"⋗\"\n ],\n [\n 0,\n {\n v: \"⋘\",\n n: 824,\n o: \"⋘̸\"\n }\n ],\n [\n 0,\n {\n v: \"⋙\",\n n: 824,\n o: \"⋙̸\"\n }\n ],\n [\n 0,\n {\n v: \"⋚\",\n n: 65024,\n o: \"⋚︀\"\n }\n ],\n [\n 0,\n {\n v: \"⋛\",\n n: 65024,\n o: \"⋛︀\"\n }\n ],\n [\n 2,\n \"⋞\"\n ],\n [\n 0,\n \"⋟\"\n ],\n [\n 0,\n \"⋠\"\n ],\n [\n 0,\n \"⋡\"\n ],\n [\n 0,\n \"⋢\"\n ],\n [\n 0,\n \"⋣\"\n ],\n [\n 2,\n \"⋦\"\n ],\n [\n 0,\n \"⋧\"\n ],\n [\n 0,\n \"⋨\"\n ],\n [\n 0,\n \"⋩\"\n ],\n [\n 0,\n \"⋪\"\n ],\n [\n 0,\n \"⋫\"\n ],\n [\n 0,\n \"⋬\"\n ],\n [\n 0,\n \"⋭\"\n ],\n [\n 0,\n \"⋮\"\n ],\n [\n 0,\n \"⋯\"\n ],\n [\n 0,\n \"⋰\"\n ],\n [\n 0,\n \"⋱\"\n ],\n [\n 0,\n \"⋲\"\n ],\n [\n 0,\n \"⋳\"\n ],\n [\n 0,\n \"⋴\"\n ],\n [\n 0,\n {\n v: \"⋵\",\n n: 824,\n o: \"⋵̸\"\n }\n ],\n [\n 0,\n \"⋶\"\n ],\n [\n 0,\n \"⋷\"\n ],\n [\n 1,\n {\n v: \"⋹\",\n n: 824,\n o: \"⋹̸\"\n }\n ],\n [\n 0,\n \"⋺\"\n ],\n [\n 0,\n \"⋻\"\n ],\n [\n 0,\n \"⋼\"\n ],\n [\n 0,\n \"⋽\"\n ],\n [\n 0,\n \"⋾\"\n ],\n [\n 6,\n \"⌅\"\n ],\n [\n 0,\n \"⌆\"\n ],\n [\n 1,\n \"⌈\"\n ],\n [\n 0,\n \"⌉\"\n ],\n [\n 0,\n \"⌊\"\n ],\n [\n 0,\n \"⌋\"\n ],\n [\n 0,\n \"⌌\"\n ],\n [\n 0,\n \"⌍\"\n ],\n [\n 0,\n \"⌎\"\n ],\n [\n 0,\n \"⌏\"\n ],\n [\n 0,\n \"⌐\"\n ],\n [\n 1,\n \"⌒\"\n ],\n [\n 0,\n \"⌓\"\n ],\n [\n 1,\n \"⌕\"\n ],\n [\n 0,\n \"⌖\"\n ],\n [\n 5,\n \"⌜\"\n ],\n [\n 0,\n \"⌝\"\n ],\n [\n 0,\n \"⌞\"\n ],\n [\n 0,\n \"⌟\"\n ],\n [\n 2,\n \"⌢\"\n ],\n [\n 0,\n \"⌣\"\n ],\n [\n 9,\n \"⌭\"\n ],\n [\n 0,\n \"⌮\"\n ],\n [\n 7,\n \"⌶\"\n ],\n [\n 6,\n \"⌽\"\n ],\n [\n 1,\n \"⌿\"\n ],\n [\n 60,\n \"⍼\"\n ],\n [\n 51,\n \"⎰\"\n ],\n [\n 0,\n \"⎱\"\n ],\n [\n 2,\n \"⎴\"\n ],\n [\n 0,\n \"⎵\"\n ],\n [\n 0,\n \"⎶\"\n ],\n [\n 37,\n \"⏜\"\n ],\n [\n 0,\n \"⏝\"\n ],\n [\n 0,\n \"⏞\"\n ],\n [\n 0,\n \"⏟\"\n ],\n [\n 2,\n \"⏢\"\n ],\n [\n 4,\n \"⏧\"\n ],\n [\n 59,\n \"␣\"\n ],\n [\n 164,\n \"Ⓢ\"\n ],\n [\n 55,\n \"─\"\n ],\n [\n 1,\n \"│\"\n ],\n [\n 9,\n \"┌\"\n ],\n [\n 3,\n \"┐\"\n ],\n [\n 3,\n \"└\"\n ],\n [\n 3,\n \"┘\"\n ],\n [\n 3,\n \"├\"\n ],\n [\n 7,\n \"┤\"\n ],\n [\n 7,\n \"┬\"\n ],\n [\n 7,\n \"┴\"\n ],\n [\n 7,\n \"┼\"\n ],\n [\n 19,\n \"═\"\n ],\n [\n 0,\n \"║\"\n ],\n [\n 0,\n \"╒\"\n ],\n [\n 0,\n \"╓\"\n ],\n [\n 0,\n \"╔\"\n ],\n [\n 0,\n \"╕\"\n ],\n [\n 0,\n \"╖\"\n ],\n [\n 0,\n \"╗\"\n ],\n [\n 0,\n \"╘\"\n ],\n [\n 0,\n \"╙\"\n ],\n [\n 0,\n \"╚\"\n ],\n [\n 0,\n \"╛\"\n ],\n [\n 0,\n \"╜\"\n ],\n [\n 0,\n \"╝\"\n ],\n [\n 0,\n \"╞\"\n ],\n [\n 0,\n \"╟\"\n ],\n [\n 0,\n \"╠\"\n ],\n [\n 0,\n \"╡\"\n ],\n [\n 0,\n \"╢\"\n ],\n [\n 0,\n \"╣\"\n ],\n [\n 0,\n \"╤\"\n ],\n [\n 0,\n \"╥\"\n ],\n [\n 0,\n \"╦\"\n ],\n [\n 0,\n \"╧\"\n ],\n [\n 0,\n \"╨\"\n ],\n [\n 0,\n \"╩\"\n ],\n [\n 0,\n \"╪\"\n ],\n [\n 0,\n \"╫\"\n ],\n [\n 0,\n \"╬\"\n ],\n [\n 19,\n \"▀\"\n ],\n [\n 3,\n \"▄\"\n ],\n [\n 3,\n \"█\"\n ],\n [\n 8,\n \"░\"\n ],\n [\n 0,\n \"▒\"\n ],\n [\n 0,\n \"▓\"\n ],\n [\n 13,\n \"□\"\n ],\n [\n 8,\n \"▪\"\n ],\n [\n 0,\n \"▫\"\n ],\n [\n 1,\n \"▭\"\n ],\n [\n 0,\n \"▮\"\n ],\n [\n 2,\n \"▱\"\n ],\n [\n 1,\n \"△\"\n ],\n [\n 0,\n \"▴\"\n ],\n [\n 0,\n \"▵\"\n ],\n [\n 2,\n \"▸\"\n ],\n [\n 0,\n \"▹\"\n ],\n [\n 3,\n \"▽\"\n ],\n [\n 0,\n \"▾\"\n ],\n [\n 0,\n \"▿\"\n ],\n [\n 2,\n \"◂\"\n ],\n [\n 0,\n \"◃\"\n ],\n [\n 6,\n \"◊\"\n ],\n [\n 0,\n \"○\"\n ],\n [\n 32,\n \"◬\"\n ],\n [\n 2,\n \"◯\"\n ],\n [\n 8,\n \"◸\"\n ],\n [\n 0,\n \"◹\"\n ],\n [\n 0,\n \"◺\"\n ],\n [\n 0,\n \"◻\"\n ],\n [\n 0,\n \"◼\"\n ],\n [\n 8,\n \"★\"\n ],\n [\n 0,\n \"☆\"\n ],\n [\n 7,\n \"☎\"\n ],\n [\n 49,\n \"♀\"\n ],\n [\n 1,\n \"♂\"\n ],\n [\n 29,\n \"♠\"\n ],\n [\n 2,\n \"♣\"\n ],\n [\n 1,\n \"♥\"\n ],\n [\n 0,\n \"♦\"\n ],\n [\n 3,\n \"♪\"\n ],\n [\n 2,\n \"♭\"\n ],\n [\n 0,\n \"♮\"\n ],\n [\n 0,\n \"♯\"\n ],\n [\n 163,\n \"✓\"\n ],\n [\n 3,\n \"✗\"\n ],\n [\n 8,\n \"✠\"\n ],\n [\n 21,\n \"✶\"\n ],\n [\n 33,\n \"❘\"\n ],\n [\n 25,\n \"❲\"\n ],\n [\n 0,\n \"❳\"\n ],\n [\n 84,\n \"⟈\"\n ],\n [\n 0,\n \"⟉\"\n ],\n [\n 28,\n \"⟦\"\n ],\n [\n 0,\n \"⟧\"\n ],\n [\n 0,\n \"〈\"\n ],\n [\n 0,\n \"〉\"\n ],\n [\n 0,\n \"⟪\"\n ],\n [\n 0,\n \"⟫\"\n ],\n [\n 0,\n \"⟬\"\n ],\n [\n 0,\n \"⟭\"\n ],\n [\n 7,\n \"⟵\"\n ],\n [\n 0,\n \"⟶\"\n ],\n [\n 0,\n \"⟷\"\n ],\n [\n 0,\n \"⟸\"\n ],\n [\n 0,\n \"⟹\"\n ],\n [\n 0,\n \"⟺\"\n ],\n [\n 1,\n \"⟼\"\n ],\n [\n 2,\n \"⟿\"\n ],\n [\n 258,\n \"⤂\"\n ],\n [\n 0,\n \"⤃\"\n ],\n [\n 0,\n \"⤄\"\n ],\n [\n 0,\n \"⤅\"\n ],\n [\n 6,\n \"⤌\"\n ],\n [\n 0,\n \"⤍\"\n ],\n [\n 0,\n \"⤎\"\n ],\n [\n 0,\n \"⤏\"\n ],\n [\n 0,\n \"⤐\"\n ],\n [\n 0,\n \"⤑\"\n ],\n [\n 0,\n \"⤒\"\n ],\n [\n 0,\n \"⤓\"\n ],\n [\n 2,\n \"⤖\"\n ],\n [\n 2,\n \"⤙\"\n ],\n [\n 0,\n \"⤚\"\n ],\n [\n 0,\n \"⤛\"\n ],\n [\n 0,\n \"⤜\"\n ],\n [\n 0,\n \"⤝\"\n ],\n [\n 0,\n \"⤞\"\n ],\n [\n 0,\n \"⤟\"\n ],\n [\n 0,\n \"⤠\"\n ],\n [\n 2,\n \"⤣\"\n ],\n [\n 0,\n \"⤤\"\n ],\n [\n 0,\n \"⤥\"\n ],\n [\n 0,\n \"⤦\"\n ],\n [\n 0,\n \"⤧\"\n ],\n [\n 0,\n \"⤨\"\n ],\n [\n 0,\n \"⤩\"\n ],\n [\n 0,\n \"⤪\"\n ],\n [\n 8,\n {\n v: \"⤳\",\n n: 824,\n o: \"⤳̸\"\n }\n ],\n [\n 1,\n \"⤵\"\n ],\n [\n 0,\n \"⤶\"\n ],\n [\n 0,\n \"⤷\"\n ],\n [\n 0,\n \"⤸\"\n ],\n [\n 0,\n \"⤹\"\n ],\n [\n 2,\n \"⤼\"\n ],\n [\n 0,\n \"⤽\"\n ],\n [\n 7,\n \"⥅\"\n ],\n [\n 2,\n \"⥈\"\n ],\n [\n 0,\n \"⥉\"\n ],\n [\n 0,\n \"⥊\"\n ],\n [\n 0,\n \"⥋\"\n ],\n [\n 2,\n \"⥎\"\n ],\n [\n 0,\n \"⥏\"\n ],\n [\n 0,\n \"⥐\"\n ],\n [\n 0,\n \"⥑\"\n ],\n [\n 0,\n \"⥒\"\n ],\n [\n 0,\n \"⥓\"\n ],\n [\n 0,\n \"⥔\"\n ],\n [\n 0,\n \"⥕\"\n ],\n [\n 0,\n \"⥖\"\n ],\n [\n 0,\n \"⥗\"\n ],\n [\n 0,\n \"⥘\"\n ],\n [\n 0,\n \"⥙\"\n ],\n [\n 0,\n \"⥚\"\n ],\n [\n 0,\n \"⥛\"\n ],\n [\n 0,\n \"⥜\"\n ],\n [\n 0,\n \"⥝\"\n ],\n [\n 0,\n \"⥞\"\n ],\n [\n 0,\n \"⥟\"\n ],\n [\n 0,\n \"⥠\"\n ],\n [\n 0,\n \"⥡\"\n ],\n [\n 0,\n \"⥢\"\n ],\n [\n 0,\n \"⥣\"\n ],\n [\n 0,\n \"⥤\"\n ],\n [\n 0,\n \"⥥\"\n ],\n [\n 0,\n \"⥦\"\n ],\n [\n 0,\n \"⥧\"\n ],\n [\n 0,\n \"⥨\"\n ],\n [\n 0,\n \"⥩\"\n ],\n [\n 0,\n \"⥪\"\n ],\n [\n 0,\n \"⥫\"\n ],\n [\n 0,\n \"⥬\"\n ],\n [\n 0,\n \"⥭\"\n ],\n [\n 0,\n \"⥮\"\n ],\n [\n 0,\n \"⥯\"\n ],\n [\n 0,\n \"⥰\"\n ],\n [\n 0,\n \"⥱\"\n ],\n [\n 0,\n \"⥲\"\n ],\n [\n 0,\n \"⥳\"\n ],\n [\n 0,\n \"⥴\"\n ],\n [\n 0,\n \"⥵\"\n ],\n [\n 0,\n \"⥶\"\n ],\n [\n 1,\n \"⥸\"\n ],\n [\n 0,\n \"⥹\"\n ],\n [\n 1,\n \"⥻\"\n ],\n [\n 0,\n \"⥼\"\n ],\n [\n 0,\n \"⥽\"\n ],\n [\n 0,\n \"⥾\"\n ],\n [\n 0,\n \"⥿\"\n ],\n [\n 5,\n \"⦅\"\n ],\n [\n 0,\n \"⦆\"\n ],\n [\n 4,\n \"⦋\"\n ],\n [\n 0,\n \"⦌\"\n ],\n [\n 0,\n \"⦍\"\n ],\n [\n 0,\n \"⦎\"\n ],\n [\n 0,\n \"⦏\"\n ],\n [\n 0,\n \"⦐\"\n ],\n [\n 0,\n \"⦑\"\n ],\n [\n 0,\n \"⦒\"\n ],\n [\n 0,\n \"⦓\"\n ],\n [\n 0,\n \"⦔\"\n ],\n [\n 0,\n \"⦕\"\n ],\n [\n 0,\n \"⦖\"\n ],\n [\n 3,\n \"⦚\"\n ],\n [\n 1,\n \"⦜\"\n ],\n [\n 0,\n \"⦝\"\n ],\n [\n 6,\n \"⦤\"\n ],\n [\n 0,\n \"⦥\"\n ],\n [\n 0,\n \"⦦\"\n ],\n [\n 0,\n \"⦧\"\n ],\n [\n 0,\n \"⦨\"\n ],\n [\n 0,\n \"⦩\"\n ],\n [\n 0,\n \"⦪\"\n ],\n [\n 0,\n \"⦫\"\n ],\n [\n 0,\n \"⦬\"\n ],\n [\n 0,\n \"⦭\"\n ],\n [\n 0,\n \"⦮\"\n ],\n [\n 0,\n \"⦯\"\n ],\n [\n 0,\n \"⦰\"\n ],\n [\n 0,\n \"⦱\"\n ],\n [\n 0,\n \"⦲\"\n ],\n [\n 0,\n \"⦳\"\n ],\n [\n 0,\n \"⦴\"\n ],\n [\n 0,\n \"⦵\"\n ],\n [\n 0,\n \"⦶\"\n ],\n [\n 0,\n \"⦷\"\n ],\n [\n 1,\n \"⦹\"\n ],\n [\n 1,\n \"⦻\"\n ],\n [\n 0,\n \"⦼\"\n ],\n [\n 1,\n \"⦾\"\n ],\n [\n 0,\n \"⦿\"\n ],\n [\n 0,\n \"⧀\"\n ],\n [\n 0,\n \"⧁\"\n ],\n [\n 0,\n \"⧂\"\n ],\n [\n 0,\n \"⧃\"\n ],\n [\n 0,\n \"⧄\"\n ],\n [\n 0,\n \"⧅\"\n ],\n [\n 3,\n \"⧉\"\n ],\n [\n 3,\n \"⧍\"\n ],\n [\n 0,\n \"⧎\"\n ],\n [\n 0,\n {\n v: \"⧏\",\n n: 824,\n o: \"⧏̸\"\n }\n ],\n [\n 0,\n {\n v: \"⧐\",\n n: 824,\n o: \"⧐̸\"\n }\n ],\n [\n 11,\n \"⧜\"\n ],\n [\n 0,\n \"⧝\"\n ],\n [\n 0,\n \"⧞\"\n ],\n [\n 4,\n \"⧣\"\n ],\n [\n 0,\n \"⧤\"\n ],\n [\n 0,\n \"⧥\"\n ],\n [\n 5,\n \"⧫\"\n ],\n [\n 8,\n \"⧴\"\n ],\n [\n 1,\n \"⧶\"\n ],\n [\n 9,\n \"⨀\"\n ],\n [\n 0,\n \"⨁\"\n ],\n [\n 0,\n \"⨂\"\n ],\n [\n 1,\n \"⨄\"\n ],\n [\n 1,\n \"⨆\"\n ],\n [\n 5,\n \"⨌\"\n ],\n [\n 0,\n \"⨍\"\n ],\n [\n 2,\n \"⨐\"\n ],\n [\n 0,\n \"⨑\"\n ],\n [\n 0,\n \"⨒\"\n ],\n [\n 0,\n \"⨓\"\n ],\n [\n 0,\n \"⨔\"\n ],\n [\n 0,\n \"⨕\"\n ],\n [\n 0,\n \"⨖\"\n ],\n [\n 0,\n \"⨗\"\n ],\n [\n 10,\n \"⨢\"\n ],\n [\n 0,\n \"⨣\"\n ],\n [\n 0,\n \"⨤\"\n ],\n [\n 0,\n \"⨥\"\n ],\n [\n 0,\n \"⨦\"\n ],\n [\n 0,\n \"⨧\"\n ],\n [\n 1,\n \"⨩\"\n ],\n [\n 0,\n \"⨪\"\n ],\n [\n 2,\n \"⨭\"\n ],\n [\n 0,\n \"⨮\"\n ],\n [\n 0,\n \"⨯\"\n ],\n [\n 0,\n \"⨰\"\n ],\n [\n 0,\n \"⨱\"\n ],\n [\n 1,\n \"⨳\"\n ],\n [\n 0,\n \"⨴\"\n ],\n [\n 0,\n \"⨵\"\n ],\n [\n 0,\n \"⨶\"\n ],\n [\n 0,\n \"⨷\"\n ],\n [\n 0,\n \"⨸\"\n ],\n [\n 0,\n \"⨹\"\n ],\n [\n 0,\n \"⨺\"\n ],\n [\n 0,\n \"⨻\"\n ],\n [\n 0,\n \"⨼\"\n ],\n [\n 2,\n \"⨿\"\n ],\n [\n 0,\n \"⩀\"\n ],\n [\n 1,\n \"⩂\"\n ],\n [\n 0,\n \"⩃\"\n ],\n [\n 0,\n \"⩄\"\n ],\n [\n 0,\n \"⩅\"\n ],\n [\n 0,\n \"⩆\"\n ],\n [\n 0,\n \"⩇\"\n ],\n [\n 0,\n \"⩈\"\n ],\n [\n 0,\n \"⩉\"\n ],\n [\n 0,\n \"⩊\"\n ],\n [\n 0,\n \"⩋\"\n ],\n [\n 0,\n \"⩌\"\n ],\n [\n 0,\n \"⩍\"\n ],\n [\n 2,\n \"⩐\"\n ],\n [\n 2,\n \"⩓\"\n ],\n [\n 0,\n \"⩔\"\n ],\n [\n 0,\n \"⩕\"\n ],\n [\n 0,\n \"⩖\"\n ],\n [\n 0,\n \"⩗\"\n ],\n [\n 0,\n \"⩘\"\n ],\n [\n 1,\n \"⩚\"\n ],\n [\n 0,\n \"⩛\"\n ],\n [\n 0,\n \"⩜\"\n ],\n [\n 0,\n \"⩝\"\n ],\n [\n 1,\n \"⩟\"\n ],\n [\n 6,\n \"⩦\"\n ],\n [\n 3,\n \"⩪\"\n ],\n [\n 2,\n {\n v: \"⩭\",\n n: 824,\n o: \"⩭̸\"\n }\n ],\n [\n 0,\n \"⩮\"\n ],\n [\n 0,\n \"⩯\"\n ],\n [\n 0,\n {\n v: \"⩰\",\n n: 824,\n o: \"⩰̸\"\n }\n ],\n [\n 0,\n \"⩱\"\n ],\n [\n 0,\n \"⩲\"\n ],\n [\n 0,\n \"⩳\"\n ],\n [\n 0,\n \"⩴\"\n ],\n [\n 0,\n \"⩵\"\n ],\n [\n 1,\n \"⩷\"\n ],\n [\n 0,\n \"⩸\"\n ],\n [\n 0,\n \"⩹\"\n ],\n [\n 0,\n \"⩺\"\n ],\n [\n 0,\n \"⩻\"\n ],\n [\n 0,\n \"⩼\"\n ],\n [\n 0,\n {\n v: \"⩽\",\n n: 824,\n o: \"⩽̸\"\n }\n ],\n [\n 0,\n {\n v: \"⩾\",\n n: 824,\n o: \"⩾̸\"\n }\n ],\n [\n 0,\n \"⩿\"\n ],\n [\n 0,\n \"⪀\"\n ],\n [\n 0,\n \"⪁\"\n ],\n [\n 0,\n \"⪂\"\n ],\n [\n 0,\n \"⪃\"\n ],\n [\n 0,\n \"⪄\"\n ],\n [\n 0,\n \"⪅\"\n ],\n [\n 0,\n \"⪆\"\n ],\n [\n 0,\n \"⪇\"\n ],\n [\n 0,\n \"⪈\"\n ],\n [\n 0,\n \"⪉\"\n ],\n [\n 0,\n \"⪊\"\n ],\n [\n 0,\n \"⪋\"\n ],\n [\n 0,\n \"⪌\"\n ],\n [\n 0,\n \"⪍\"\n ],\n [\n 0,\n \"⪎\"\n ],\n [\n 0,\n \"⪏\"\n ],\n [\n 0,\n \"⪐\"\n ],\n [\n 0,\n \"⪑\"\n ],\n [\n 0,\n \"⪒\"\n ],\n [\n 0,\n \"⪓\"\n ],\n [\n 0,\n \"⪔\"\n ],\n [\n 0,\n \"⪕\"\n ],\n [\n 0,\n \"⪖\"\n ],\n [\n 0,\n \"⪗\"\n ],\n [\n 0,\n \"⪘\"\n ],\n [\n 0,\n \"⪙\"\n ],\n [\n 0,\n \"⪚\"\n ],\n [\n 2,\n \"⪝\"\n ],\n [\n 0,\n \"⪞\"\n ],\n [\n 0,\n \"⪟\"\n ],\n [\n 0,\n \"⪠\"\n ],\n [\n 0,\n {\n v: \"⪡\",\n n: 824,\n o: \"⪡̸\"\n }\n ],\n [\n 0,\n {\n v: \"⪢\",\n n: 824,\n o: \"⪢̸\"\n }\n ],\n [\n 1,\n \"⪤\"\n ],\n [\n 0,\n \"⪥\"\n ],\n [\n 0,\n \"⪦\"\n ],\n [\n 0,\n \"⪧\"\n ],\n [\n 0,\n \"⪨\"\n ],\n [\n 0,\n \"⪩\"\n ],\n [\n 0,\n \"⪪\"\n ],\n [\n 0,\n \"⪫\"\n ],\n [\n 0,\n {\n v: \"⪬\",\n n: 65024,\n o: \"⪬︀\"\n }\n ],\n [\n 0,\n {\n v: \"⪭\",\n n: 65024,\n o: \"⪭︀\"\n }\n ],\n [\n 0,\n \"⪮\"\n ],\n [\n 0,\n {\n v: \"⪯\",\n n: 824,\n o: \"⪯̸\"\n }\n ],\n [\n 0,\n {\n v: \"⪰\",\n n: 824,\n o: \"⪰̸\"\n }\n ],\n [\n 2,\n \"⪳\"\n ],\n [\n 0,\n \"⪴\"\n ],\n [\n 0,\n \"⪵\"\n ],\n [\n 0,\n \"⪶\"\n ],\n [\n 0,\n \"⪷\"\n ],\n [\n 0,\n \"⪸\"\n ],\n [\n 0,\n \"⪹\"\n ],\n [\n 0,\n \"⪺\"\n ],\n [\n 0,\n \"⪻\"\n ],\n [\n 0,\n \"⪼\"\n ],\n [\n 0,\n \"⪽\"\n ],\n [\n 0,\n \"⪾\"\n ],\n [\n 0,\n \"⪿\"\n ],\n [\n 0,\n \"⫀\"\n ],\n [\n 0,\n \"⫁\"\n ],\n [\n 0,\n \"⫂\"\n ],\n [\n 0,\n \"⫃\"\n ],\n [\n 0,\n \"⫄\"\n ],\n [\n 0,\n {\n v: \"⫅\",\n n: 824,\n o: \"⫅̸\"\n }\n ],\n [\n 0,\n {\n v: \"⫆\",\n n: 824,\n o: \"⫆̸\"\n }\n ],\n [\n 0,\n \"⫇\"\n ],\n [\n 0,\n \"⫈\"\n ],\n [\n 2,\n {\n v: \"⫋\",\n n: 65024,\n o: \"⫋︀\"\n }\n ],\n [\n 0,\n {\n v: \"⫌\",\n n: 65024,\n o: \"⫌︀\"\n }\n ],\n [\n 2,\n \"⫏\"\n ],\n [\n 0,\n \"⫐\"\n ],\n [\n 0,\n \"⫑\"\n ],\n [\n 0,\n \"⫒\"\n ],\n [\n 0,\n \"⫓\"\n ],\n [\n 0,\n \"⫔\"\n ],\n [\n 0,\n \"⫕\"\n ],\n [\n 0,\n \"⫖\"\n ],\n [\n 0,\n \"⫗\"\n ],\n [\n 0,\n \"⫘\"\n ],\n [\n 0,\n \"⫙\"\n ],\n [\n 0,\n \"⫚\"\n ],\n [\n 0,\n \"⫛\"\n ],\n [\n 8,\n \"⫤\"\n ],\n [\n 1,\n \"⫦\"\n ],\n [\n 0,\n \"⫧\"\n ],\n [\n 0,\n \"⫨\"\n ],\n [\n 0,\n \"⫩\"\n ],\n [\n 1,\n \"⫫\"\n ],\n [\n 0,\n \"⫬\"\n ],\n [\n 0,\n \"⫭\"\n ],\n [\n 0,\n \"⫮\"\n ],\n [\n 0,\n \"⫯\"\n ],\n [\n 0,\n \"⫰\"\n ],\n [\n 0,\n \"⫱\"\n ],\n [\n 0,\n \"⫲\"\n ],\n [\n 0,\n \"⫳\"\n ],\n [\n 9,\n {\n v: \"⫽\",\n n: 8421,\n o: \"⫽⃥\"\n }\n ],\n [\n 44343,\n {\n n: new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 56476,\n \"𝒜\"\n ],\n [\n 1,\n \"𝒞\"\n ],\n [\n 0,\n \"𝒟\"\n ],\n [\n 2,\n \"𝒢\"\n ],\n [\n 2,\n \"𝒥\"\n ],\n [\n 0,\n \"𝒦\"\n ],\n [\n 2,\n \"𝒩\"\n ],\n [\n 0,\n \"𝒪\"\n ],\n [\n 0,\n \"𝒫\"\n ],\n [\n 0,\n \"𝒬\"\n ],\n [\n 1,\n \"𝒮\"\n ],\n [\n 0,\n \"𝒯\"\n ],\n [\n 0,\n \"𝒰\"\n ],\n [\n 0,\n \"𝒱\"\n ],\n [\n 0,\n \"𝒲\"\n ],\n [\n 0,\n \"𝒳\"\n ],\n [\n 0,\n \"𝒴\"\n ],\n [\n 0,\n \"𝒵\"\n ],\n [\n 0,\n \"𝒶\"\n ],\n [\n 0,\n \"𝒷\"\n ],\n [\n 0,\n \"𝒸\"\n ],\n [\n 0,\n \"𝒹\"\n ],\n [\n 1,\n \"𝒻\"\n ],\n [\n 1,\n \"𝒽\"\n ],\n [\n 0,\n \"𝒾\"\n ],\n [\n 0,\n \"𝒿\"\n ],\n [\n 0,\n \"𝓀\"\n ],\n [\n 0,\n \"𝓁\"\n ],\n [\n 0,\n \"𝓂\"\n ],\n [\n 0,\n \"𝓃\"\n ],\n [\n 1,\n \"𝓅\"\n ],\n [\n 0,\n \"𝓆\"\n ],\n [\n 0,\n \"𝓇\"\n ],\n [\n 0,\n \"𝓈\"\n ],\n [\n 0,\n \"𝓉\"\n ],\n [\n 0,\n \"𝓊\"\n ],\n [\n 0,\n \"𝓋\"\n ],\n [\n 0,\n \"𝓌\"\n ],\n [\n 0,\n \"𝓍\"\n ],\n [\n 0,\n \"𝓎\"\n ],\n [\n 0,\n \"𝓏\"\n ],\n [\n 52,\n \"𝔄\"\n ],\n [\n 0,\n \"𝔅\"\n ],\n [\n 1,\n \"𝔇\"\n ],\n [\n 0,\n \"𝔈\"\n ],\n [\n 0,\n \"𝔉\"\n ],\n [\n 0,\n \"𝔊\"\n ],\n [\n 2,\n \"𝔍\"\n ],\n [\n 0,\n \"𝔎\"\n ],\n [\n 0,\n \"𝔏\"\n ],\n [\n 0,\n \"𝔐\"\n ],\n [\n 0,\n \"𝔑\"\n ],\n [\n 0,\n \"𝔒\"\n ],\n [\n 0,\n \"𝔓\"\n ],\n [\n 0,\n \"𝔔\"\n ],\n [\n 1,\n \"𝔖\"\n ],\n [\n 0,\n \"𝔗\"\n ],\n [\n 0,\n \"𝔘\"\n ],\n [\n 0,\n \"𝔙\"\n ],\n [\n 0,\n \"𝔚\"\n ],\n [\n 0,\n \"𝔛\"\n ],\n [\n 0,\n \"𝔜\"\n ],\n [\n 1,\n \"𝔞\"\n ],\n [\n 0,\n \"𝔟\"\n ],\n [\n 0,\n \"𝔠\"\n ],\n [\n 0,\n \"𝔡\"\n ],\n [\n 0,\n \"𝔢\"\n ],\n [\n 0,\n \"𝔣\"\n ],\n [\n 0,\n \"𝔤\"\n ],\n [\n 0,\n \"𝔥\"\n ],\n [\n 0,\n \"𝔦\"\n ],\n [\n 0,\n \"𝔧\"\n ],\n [\n 0,\n \"𝔨\"\n ],\n [\n 0,\n \"𝔩\"\n ],\n [\n 0,\n \"𝔪\"\n ],\n [\n 0,\n \"𝔫\"\n ],\n [\n 0,\n \"𝔬\"\n ],\n [\n 0,\n \"𝔭\"\n ],\n [\n 0,\n \"𝔮\"\n ],\n [\n 0,\n \"𝔯\"\n ],\n [\n 0,\n \"𝔰\"\n ],\n [\n 0,\n \"𝔱\"\n ],\n [\n 0,\n \"𝔲\"\n ],\n [\n 0,\n \"𝔳\"\n ],\n [\n 0,\n \"𝔴\"\n ],\n [\n 0,\n \"𝔵\"\n ],\n [\n 0,\n \"𝔶\"\n ],\n [\n 0,\n \"𝔷\"\n ],\n [\n 0,\n \"𝔸\"\n ],\n [\n 0,\n \"𝔹\"\n ],\n [\n 1,\n \"𝔻\"\n ],\n [\n 0,\n \"𝔼\"\n ],\n [\n 0,\n \"𝔽\"\n ],\n [\n 0,\n \"𝔾\"\n ],\n [\n 1,\n \"𝕀\"\n ],\n [\n 0,\n \"𝕁\"\n ],\n [\n 0,\n \"𝕂\"\n ],\n [\n 0,\n \"𝕃\"\n ],\n [\n 0,\n \"𝕄\"\n ],\n [\n 1,\n \"𝕆\"\n ],\n [\n 3,\n \"𝕊\"\n ],\n [\n 0,\n \"𝕋\"\n ],\n [\n 0,\n \"𝕌\"\n ],\n [\n 0,\n \"𝕍\"\n ],\n [\n 0,\n \"𝕎\"\n ],\n [\n 0,\n \"𝕏\"\n ],\n [\n 0,\n \"𝕐\"\n ],\n [\n 1,\n \"𝕒\"\n ],\n [\n 0,\n \"𝕓\"\n ],\n [\n 0,\n \"𝕔\"\n ],\n [\n 0,\n \"𝕕\"\n ],\n [\n 0,\n \"𝕖\"\n ],\n [\n 0,\n \"𝕗\"\n ],\n [\n 0,\n \"𝕘\"\n ],\n [\n 0,\n \"𝕙\"\n ],\n [\n 0,\n \"𝕚\"\n ],\n [\n 0,\n \"𝕛\"\n ],\n [\n 0,\n \"𝕜\"\n ],\n [\n 0,\n \"𝕝\"\n ],\n [\n 0,\n \"𝕞\"\n ],\n [\n 0,\n \"𝕟\"\n ],\n [\n 0,\n \"𝕠\"\n ],\n [\n 0,\n \"𝕡\"\n ],\n [\n 0,\n \"𝕢\"\n ],\n [\n 0,\n \"𝕣\"\n ],\n [\n 0,\n \"𝕤\"\n ],\n [\n 0,\n \"𝕥\"\n ],\n [\n 0,\n \"𝕦\"\n ],\n [\n 0,\n \"𝕧\"\n ],\n [\n 0,\n \"𝕨\"\n ],\n [\n 0,\n \"𝕩\"\n ],\n [\n 0,\n \"𝕪\"\n ],\n [\n 0,\n \"𝕫\"\n ]\n ]))\n }\n ],\n [\n 8906,\n \"ff\"\n ],\n [\n 0,\n \"fi\"\n ],\n [\n 0,\n \"fl\"\n ],\n [\n 0,\n \"ffi\"\n ],\n [\n 0,\n \"ffl\"\n ]\n]));\n\n});\n\nparcelRegister(\"i7QF4\", function(module, exports) {\n\n$parcel$export(module.exports, \"xmlReplacer\", () => $d321bae15adf01a4$export$5699810ce3244ab8);\n$parcel$export(module.exports, \"getCodePoint\", () => $d321bae15adf01a4$export$e02688b8085d016b);\n$parcel$export(module.exports, \"encodeXML\", () => $d321bae15adf01a4$export$18855ec5be97da16);\n$parcel$export(module.exports, \"escapeUTF8\", () => $d321bae15adf01a4$export$9e081872deefdcb0);\n$parcel$export(module.exports, \"escapeAttribute\", () => $d321bae15adf01a4$export$30330f3d5eb70e11);\n$parcel$export(module.exports, \"escapeText\", () => $d321bae15adf01a4$export$96e6fc3a139b2555);\nconst $d321bae15adf01a4$export$5699810ce3244ab8 = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst $d321bae15adf01a4$var$xmlCodeMap = new Map([\n [\n 34,\n \""\"\n ],\n [\n 38,\n \"&\"\n ],\n [\n 39,\n \"'\"\n ],\n [\n 60,\n \"<\"\n ],\n [\n 62,\n \">\"\n ]\n]);\nconst $d321bae15adf01a4$export$e02688b8085d016b = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null ? (str, index)=>str.codePointAt(index) : (c, index)=>(c.charCodeAt(index) & 0xfc00) === 0xd800 ? (c.charCodeAt(index) - 0xd800) * 0x400 + c.charCodeAt(index + 1) - 0xdc00 + 0x10000 : c.charCodeAt(index);\nfunction $d321bae15adf01a4$export$18855ec5be97da16(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while((match = $d321bae15adf01a4$export$5699810ce3244ab8.exec(str)) !== null){\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = $d321bae15adf01a4$var$xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n } else {\n ret += `${str.substring(lastIdx, i)}${$d321bae15adf01a4$export$e02688b8085d016b(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = $d321bae15adf01a4$export$5699810ce3244ab8.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\nconst $d321bae15adf01a4$export$4e7f196112fea3c5 = $d321bae15adf01a4$export$18855ec5be97da16;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */ function $d321bae15adf01a4$var$getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while(match = regex.exec(data)){\n if (lastIdx !== match.index) result += data.substring(lastIdx, match.index);\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\nconst $d321bae15adf01a4$export$9e081872deefdcb0 = $d321bae15adf01a4$var$getEscaper(/[&<>'\"]/g, $d321bae15adf01a4$var$xmlCodeMap);\nconst $d321bae15adf01a4$export$30330f3d5eb70e11 = $d321bae15adf01a4$var$getEscaper(/[\"&\\u00A0]/g, new Map([\n [\n 34,\n \""\"\n ],\n [\n 38,\n \"&\"\n ],\n [\n 160,\n \" \"\n ]\n]));\nconst $d321bae15adf01a4$export$96e6fc3a139b2555 = $d321bae15adf01a4$var$getEscaper(/[&<>\\u00A0]/g, new Map([\n [\n 38,\n \"&\"\n ],\n [\n 60,\n \"<\"\n ],\n [\n 62,\n \">\"\n ],\n [\n 160,\n \" \"\n ]\n]));\n\n});\n\n\n\nparcelRegister(\"5CdvS\", function(module, exports) {\n\n$parcel$export(module.exports, \"elementNames\", () => $416afbc7a414ed28$export$82b917442d249e05);\n$parcel$export(module.exports, \"attributeNames\", () => $416afbc7a414ed28$export$b4cfbfd90280b005);\nconst $416afbc7a414ed28$export$82b917442d249e05 = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\"\n].map((val)=>[\n val.toLowerCase(),\n val\n ]));\nconst $416afbc7a414ed28$export$b4cfbfd90280b005 = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\"\n].map((val)=>[\n val.toLowerCase(),\n val\n ]));\n\n});\n\n\n\nparcelRegister(\"63Sud\", function(module, exports) {\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\nfunction $469d49c0c2788608$export$f8cf48ee793b41be(elem) {\n return (0, $lftuc.hasChildren)(elem) ? elem.children : [];\n}\nfunction $469d49c0c2788608$export$58081aedf094d85b(elem) {\n return elem.parent || null;\n}\nfunction $469d49c0c2788608$export$f312c3733b79ac0d(elem) {\n const parent = $469d49c0c2788608$export$58081aedf094d85b(elem);\n if (parent != null) return $469d49c0c2788608$export$f8cf48ee793b41be(parent);\n const siblings = [\n elem\n ];\n let { prev: prev, next: next } = elem;\n while(prev != null){\n siblings.unshift(prev);\n ({ prev: prev } = prev);\n }\n while(next != null){\n siblings.push(next);\n ({ next: next } = next);\n }\n return siblings;\n}\nfunction $469d49c0c2788608$export$1e335898aa11b111(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\nfunction $469d49c0c2788608$export$aa37f90c17957f38(elem, name) {\n return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null;\n}\nfunction $469d49c0c2788608$export$7d9f7e9c1c02b41e(elem) {\n return elem.name;\n}\nfunction $469d49c0c2788608$export$9be3779649ef9cc7(elem) {\n let { next: next } = elem;\n while(next !== null && !(0, $lftuc.isTag)(next))({ next: next } = next);\n return next;\n}\nfunction $469d49c0c2788608$export$c8bafb6e59c0b8e(elem) {\n let { prev: prev } = elem;\n while(prev !== null && !(0, $lftuc.isTag)(prev))({ prev: prev } = prev);\n return prev;\n}\n\n});\n\nparcelRegister(\"fVc2z\", function(module, exports) {\n/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */ function $b97584d8d1d972f9$export$f883456a56996078(elem) {\n if (elem.prev) elem.prev.next = elem.next;\n if (elem.next) elem.next.prev = elem.prev;\n if (elem.parent) {\n const childs = elem.parent.children;\n const childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) childs.splice(childsIndex, 1);\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\nfunction $b97584d8d1d972f9$export$2dfe578f95754f6a(elem, replacement) {\n const prev = replacement.prev = elem.prev;\n if (prev) prev.next = replacement;\n const next = replacement.next = elem.next;\n if (next) next.prev = replacement;\n const parent = replacement.parent = elem.parent;\n if (parent) {\n const childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\nfunction $b97584d8d1d972f9$export$1b8e57c9ea42f1d2(parent, child) {\n $b97584d8d1d972f9$export$f883456a56996078(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n const sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n } else child.prev = null;\n}\nfunction $b97584d8d1d972f9$export$10d8903dec122b9d(elem, next) {\n $b97584d8d1d972f9$export$f883456a56996078(next);\n const { parent: parent } = elem;\n const currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n } else if (parent) parent.children.push(next);\n}\nfunction $b97584d8d1d972f9$export$47b51e6d100007bc(parent, child) {\n $b97584d8d1d972f9$export$f883456a56996078(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n const sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n } else child.next = null;\n}\nfunction $b97584d8d1d972f9$export$68159836694e22c1(elem, prev) {\n $b97584d8d1d972f9$export$f883456a56996078(prev);\n const { parent: parent } = elem;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) elem.prev.next = prev;\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n\n});\n\nparcelRegister(\"jAAIj\", function(module, exports) {\n\n$parcel$export(module.exports, \"filter\", () => $e42ddbaefcc2cb3e$export$3dea766d36a8935f);\n$parcel$export(module.exports, \"findOne\", () => $e42ddbaefcc2cb3e$export$a541876d5d7daf90);\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\nfunction $e42ddbaefcc2cb3e$export$3dea766d36a8935f(test, node, recurse = true, limit = Infinity) {\n return $e42ddbaefcc2cb3e$export$71aa6c912b956294(test, Array.isArray(node) ? node : [\n node\n ], recurse, limit);\n}\nfunction $e42ddbaefcc2cb3e$export$71aa6c912b956294(test, nodes, recurse, limit) {\n const result = [];\n /** Stack of the arrays we are looking at. */ const nodeStack = [\n nodes\n ];\n /** Stack of the indices within the arrays. */ const indexStack = [\n 0\n ];\n for(;;){\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) return result;\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0) return result;\n }\n if (recurse && (0, $lftuc.hasChildren)(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */ indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\nfunction $e42ddbaefcc2cb3e$export$ac03a862904ce329(test, nodes) {\n return nodes.find(test);\n}\nfunction $e42ddbaefcc2cb3e$export$a541876d5d7daf90(test, nodes, recurse = true) {\n let elem = null;\n for(let i = 0; i < nodes.length && !elem; i++){\n const node = nodes[i];\n if (!(0, $lftuc.isTag)(node)) continue;\n else if (test(node)) elem = node;\n else if (recurse && node.children.length > 0) elem = $e42ddbaefcc2cb3e$export$a541876d5d7daf90(test, node.children, true);\n }\n return elem;\n}\nfunction $e42ddbaefcc2cb3e$export$9d99dce58ac4a31b(test, nodes) {\n return nodes.some((checked)=>(0, $lftuc.isTag)(checked) && (test(checked) || $e42ddbaefcc2cb3e$export$9d99dce58ac4a31b(test, checked.children)));\n}\nfunction $e42ddbaefcc2cb3e$export$18200ea6c8035394(test, nodes) {\n const result = [];\n const nodeStack = [\n nodes\n ];\n const indexStack = [\n 0\n ];\n for(;;){\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) return result;\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (!(0, $lftuc.isTag)(elem)) continue;\n if (test(elem)) result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n\n});\n\nparcelRegister(\"7zAkY\", function(module, exports) {\n\n$parcel$export(module.exports, \"getElementsByTagName\", () => $5837fd230ec46d88$export$af941c3c7c3b40f5);\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\n\nvar $jAAIj = parcelRequire(\"jAAIj\");\n/**\n * A map of functions to check nodes against.\n */ const $5837fd230ec46d88$var$Checks = {\n tag_name (name) {\n if (typeof name === \"function\") return (elem)=>(0, $lftuc.isTag)(elem) && name(elem.name);\n else if (name === \"*\") return 0, $lftuc.isTag;\n return (elem)=>(0, $lftuc.isTag)(elem) && elem.name === name;\n },\n tag_type (type) {\n if (typeof type === \"function\") return (elem)=>type(elem.type);\n return (elem)=>elem.type === type;\n },\n tag_contains (data) {\n if (typeof data === \"function\") return (elem)=>(0, $lftuc.isText)(elem) && data(elem.data);\n return (elem)=>(0, $lftuc.isText)(elem) && elem.data === data;\n }\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */ function $5837fd230ec46d88$var$getAttribCheck(attrib, value) {\n if (typeof value === \"function\") return (elem)=>(0, $lftuc.isTag)(elem) && value(elem.attribs[attrib]);\n return (elem)=>(0, $lftuc.isTag)(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */ function $5837fd230ec46d88$var$combineFuncs(a, b) {\n return (elem)=>a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */ function $5837fd230ec46d88$var$compileTest(options) {\n const funcs = Object.keys(options).map((key)=>{\n const value = options[key];\n return Object.prototype.hasOwnProperty.call($5837fd230ec46d88$var$Checks, key) ? $5837fd230ec46d88$var$Checks[key](value) : $5837fd230ec46d88$var$getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce($5837fd230ec46d88$var$combineFuncs);\n}\nfunction $5837fd230ec46d88$export$7b31db6b5a0b2f32(options, node) {\n const test = $5837fd230ec46d88$var$compileTest(options);\n return test ? test(node) : true;\n}\nfunction $5837fd230ec46d88$export$73eac51a39d6b0eb(options, nodes, recurse, limit = Infinity) {\n const test = $5837fd230ec46d88$var$compileTest(options);\n return test ? (0, $jAAIj.filter)(test, nodes, recurse, limit) : [];\n}\nfunction $5837fd230ec46d88$export$83595b84fc78b9b4(id, nodes, recurse = true) {\n if (!Array.isArray(nodes)) nodes = [\n nodes\n ];\n return (0, $jAAIj.findOne)($5837fd230ec46d88$var$getAttribCheck(\"id\", id), nodes, recurse);\n}\nfunction $5837fd230ec46d88$export$af941c3c7c3b40f5(tagName, nodes, recurse = true, limit = Infinity) {\n return (0, $jAAIj.filter)($5837fd230ec46d88$var$Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\nfunction $5837fd230ec46d88$export$f5d981e30be5545b(type, nodes, recurse = true, limit = Infinity) {\n return (0, $jAAIj.filter)($5837fd230ec46d88$var$Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n\n});\n\nparcelRegister(\"dIjgl\", function(module, exports) {\nparcelRequire(\"kyMdm\");\nvar $lftuc = parcelRequire(\"lftuc\");\nfunction $9fbe5392cb849ded$export$171dc294232ebeef(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */ while(--idx >= 0){\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */ if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for(let ancestor = node.parent; ancestor; ancestor = ancestor.parent)if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n return nodes;\n}\nvar $9fbe5392cb849ded$export$406a59d989e8005a;\n(function(DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})($9fbe5392cb849ded$export$406a59d989e8005a || ($9fbe5392cb849ded$export$406a59d989e8005a = {}));\nfunction $9fbe5392cb849ded$export$17303b8fea718ecc(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) return 0;\n let current = (0, $lftuc.hasChildren)(nodeA) ? nodeA : nodeA.parent;\n while(current){\n aParents.unshift(current);\n current = current.parent;\n }\n current = (0, $lftuc.hasChildren)(nodeB) ? nodeB : nodeB.parent;\n while(current){\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while(idx < maxIdx && aParents[idx] === bParents[idx])idx++;\n if (idx === 0) return $9fbe5392cb849ded$export$406a59d989e8005a.DISCONNECTED;\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) return $9fbe5392cb849ded$export$406a59d989e8005a.FOLLOWING | $9fbe5392cb849ded$export$406a59d989e8005a.CONTAINED_BY;\n return $9fbe5392cb849ded$export$406a59d989e8005a.FOLLOWING;\n }\n if (sharedParent === nodeA) return $9fbe5392cb849ded$export$406a59d989e8005a.PRECEDING | $9fbe5392cb849ded$export$406a59d989e8005a.CONTAINS;\n return $9fbe5392cb849ded$export$406a59d989e8005a.PRECEDING;\n}\nfunction $9fbe5392cb849ded$export$1c267319665a7e7e(nodes) {\n nodes = nodes.filter((node, i, arr)=>!arr.includes(node, i + 1));\n nodes.sort((a, b)=>{\n const relative = $9fbe5392cb849ded$export$17303b8fea718ecc(a, b);\n if (relative & $9fbe5392cb849ded$export$406a59d989e8005a.PRECEDING) return -1;\n else if (relative & $9fbe5392cb849ded$export$406a59d989e8005a.FOLLOWING) return 1;\n return 0;\n });\n return nodes;\n}\n\n});\n\nparcelRegister(\"9YZre\", function(module, exports) {\n\n$parcel$export(module.exports, \"getFeed\", () => $74495ffac5d924b7$export$ad32138c9e09ad4);\n\nvar $1LvIR = parcelRequire(\"1LvIR\");\n\nvar $7zAkY = parcelRequire(\"7zAkY\");\nfunction $74495ffac5d924b7$export$ad32138c9e09ad4(doc) {\n const feedRoot = $74495ffac5d924b7$var$getOneElement($74495ffac5d924b7$var$isValidFeed, doc);\n return !feedRoot ? null : feedRoot.name === \"feed\" ? $74495ffac5d924b7$var$getAtomFeed(feedRoot) : $74495ffac5d924b7$var$getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */ function $74495ffac5d924b7$var$getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: (0, $7zAkY.getElementsByTagName)(\"entry\", childs).map((item)=>{\n var _a;\n const { children: children } = item;\n const entry = {\n media: $74495ffac5d924b7$var$getMediaElements(children)\n };\n $74495ffac5d924b7$var$addConditionally(entry, \"id\", \"id\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = $74495ffac5d924b7$var$getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) entry.link = href;\n const description = $74495ffac5d924b7$var$fetch(\"summary\", children) || $74495ffac5d924b7$var$fetch(\"content\", children);\n if (description) entry.description = description;\n const pubDate = $74495ffac5d924b7$var$fetch(\"updated\", children);\n if (pubDate) entry.pubDate = new Date(pubDate);\n return entry;\n })\n };\n $74495ffac5d924b7$var$addConditionally(feed, \"id\", \"id\", childs);\n $74495ffac5d924b7$var$addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = $74495ffac5d924b7$var$getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) feed.link = href;\n $74495ffac5d924b7$var$addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = $74495ffac5d924b7$var$fetch(\"updated\", childs);\n if (updated) feed.updated = new Date(updated);\n $74495ffac5d924b7$var$addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */ function $74495ffac5d924b7$var$getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = $74495ffac5d924b7$var$getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: (0, $7zAkY.getElementsByTagName)(\"item\", feedRoot.children).map((item)=>{\n const { children: children } = item;\n const entry = {\n media: $74495ffac5d924b7$var$getMediaElements(children)\n };\n $74495ffac5d924b7$var$addConditionally(entry, \"id\", \"guid\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"title\", \"title\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"link\", \"link\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"description\", \"description\", children);\n const pubDate = $74495ffac5d924b7$var$fetch(\"pubDate\", children) || $74495ffac5d924b7$var$fetch(\"dc:date\", children);\n if (pubDate) entry.pubDate = new Date(pubDate);\n return entry;\n })\n };\n $74495ffac5d924b7$var$addConditionally(feed, \"title\", \"title\", childs);\n $74495ffac5d924b7$var$addConditionally(feed, \"link\", \"link\", childs);\n $74495ffac5d924b7$var$addConditionally(feed, \"description\", \"description\", childs);\n const updated = $74495ffac5d924b7$var$fetch(\"lastBuildDate\", childs);\n if (updated) feed.updated = new Date(updated);\n $74495ffac5d924b7$var$addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst $74495ffac5d924b7$var$MEDIA_KEYS_STRING = [\n \"url\",\n \"type\",\n \"lang\"\n];\nconst $74495ffac5d924b7$var$MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\"\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */ function $74495ffac5d924b7$var$getMediaElements(where) {\n return (0, $7zAkY.getElementsByTagName)(\"media:content\", where).map((elem)=>{\n const { attribs: attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"]\n };\n for (const attrib of $74495ffac5d924b7$var$MEDIA_KEYS_STRING)if (attribs[attrib]) media[attrib] = attribs[attrib];\n for (const attrib of $74495ffac5d924b7$var$MEDIA_KEYS_INT)if (attribs[attrib]) media[attrib] = parseInt(attribs[attrib], 10);\n if (attribs[\"expression\"]) media.expression = attribs[\"expression\"];\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */ function $74495ffac5d924b7$var$getOneElement(tagName, node) {\n return (0, $7zAkY.getElementsByTagName)(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */ function $74495ffac5d924b7$var$fetch(tagName, where, recurse = false) {\n return (0, $1LvIR.textContent)((0, $7zAkY.getElementsByTagName)(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */ function $74495ffac5d924b7$var$addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = $74495ffac5d924b7$var$fetch(tagName, where, recurse);\n if (val) obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */ function $74495ffac5d924b7$var$isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n\n});\n\n\n\nparcelRegister(\"4CCA2\", function(module, exports) {\n\"use strict\";\nvar $35d8a34091988186$var$isMergeableObject = function isMergeableObject(value) {\n return $35d8a34091988186$var$isNonNullObject(value) && !$35d8a34091988186$var$isSpecial(value);\n};\nfunction $35d8a34091988186$var$isNonNullObject(value) {\n return !!value && typeof value === \"object\";\n}\nfunction $35d8a34091988186$var$isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === \"[object RegExp]\" || stringValue === \"[object Date]\" || $35d8a34091988186$var$isReactElement(value);\n}\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar $35d8a34091988186$var$canUseSymbol = typeof Symbol === \"function\" && Symbol.for;\nvar $35d8a34091988186$var$REACT_ELEMENT_TYPE = $35d8a34091988186$var$canUseSymbol ? Symbol.for(\"react.element\") : 0xeac7;\nfunction $35d8a34091988186$var$isReactElement(value) {\n return value.$$typeof === $35d8a34091988186$var$REACT_ELEMENT_TYPE;\n}\nfunction $35d8a34091988186$var$emptyTarget(val) {\n return Array.isArray(val) ? [] : {};\n}\nfunction $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? $35d8a34091988186$var$deepmerge($35d8a34091988186$var$emptyTarget(value), value, options) : value;\n}\nfunction $35d8a34091988186$var$defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function(element) {\n return $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(element, options);\n });\n}\nfunction $35d8a34091988186$var$getMergeFunction(key, options) {\n if (!options.customMerge) return $35d8a34091988186$var$deepmerge;\n var customMerge = options.customMerge(key);\n return typeof customMerge === \"function\" ? customMerge : $35d8a34091988186$var$deepmerge;\n}\nfunction $35d8a34091988186$var$getEnumerableOwnPropertySymbols(target) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n return Object.propertyIsEnumerable.call(target, symbol);\n }) : [];\n}\nfunction $35d8a34091988186$var$getKeys(target) {\n return Object.keys(target).concat($35d8a34091988186$var$getEnumerableOwnPropertySymbols(target));\n}\nfunction $35d8a34091988186$var$propertyIsOnObject(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n}\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction $35d8a34091988186$var$propertyIsUnsafe(target, key) {\n return $35d8a34091988186$var$propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key) // and also unsafe if they're nonenumerable.\n );\n}\nfunction $35d8a34091988186$var$mergeObject(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) $35d8a34091988186$var$getKeys(target).forEach(function(key) {\n destination[key] = $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(target[key], options);\n });\n $35d8a34091988186$var$getKeys(source).forEach(function(key) {\n if ($35d8a34091988186$var$propertyIsUnsafe(target, key)) return;\n if ($35d8a34091988186$var$propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) destination[key] = $35d8a34091988186$var$getMergeFunction(key, options)(target[key], source[key], options);\n else destination[key] = $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(source[key], options);\n });\n return destination;\n}\nfunction $35d8a34091988186$var$deepmerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || $35d8a34091988186$var$defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || $35d8a34091988186$var$isMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = $35d8a34091988186$var$cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) return $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(source, options);\n else if (sourceIsArray) return options.arrayMerge(target, source, options);\n else return $35d8a34091988186$var$mergeObject(target, source, options);\n}\n$35d8a34091988186$var$deepmerge.all = function deepmergeAll(array, options) {\n if (!Array.isArray(array)) throw new Error(\"first argument should be an array\");\n return array.reduce(function(prev, next) {\n return $35d8a34091988186$var$deepmerge(prev, next, options);\n }, {});\n};\nvar $35d8a34091988186$var$deepmerge_1 = $35d8a34091988186$var$deepmerge;\nmodule.exports = $35d8a34091988186$var$deepmerge_1;\n\n});\n\n\nparcelRegister(\"gx5Hu\", function(module, exports) {\n// https://github.com/farzher/fuzzysort v3.0.2\n// UMD (Universal Module Definition) for fuzzysort\n((root, UMD)=>{\n if (typeof define === \"function\" && define.amd) define([], UMD);\n else if (0, module.exports) module.exports = UMD();\n else root[\"fuzzysort\"] = UMD();\n})(module.exports, (_)=>{\n \"use strict\";\n var single = (search, target)=>{\n if (!search || !target) return NULL;\n var preparedSearch = getPreparedSearch(search);\n if (!isPrepared(target)) target = getPrepared(target);\n var searchBitflags = preparedSearch.bitflags;\n if ((searchBitflags & target._bitflags) !== searchBitflags) return NULL;\n return algorithm(preparedSearch, target);\n };\n var go = (search, targets, options)=>{\n if (!search) return options?.all ? all(targets, options) : noResults;\n var preparedSearch = getPreparedSearch(search);\n var searchBitflags = preparedSearch.bitflags;\n var containsSpace = preparedSearch.containsSpace;\n var threshold = denormalizeScore(options?.threshold || 0);\n var limit = options?.limit || INFINITY;\n var resultsLen = 0;\n var limitedCount = 0;\n var targetsLen = targets.length;\n function push_result(result) {\n if (resultsLen < limit) {\n q.add(result);\n ++resultsLen;\n } else {\n ++limitedCount;\n if (result._score > q.peek()._score) q.replaceTop(result);\n }\n }\n // This code is copy/pasted 3 times for performance reasons [options.key, options.keys, no keys]\n // options.key\n if (options?.key) {\n var key = options.key;\n for(var i = 0; i < targetsLen; ++i){\n var obj = targets[i];\n var target = getValue(obj, key);\n if (!target) continue;\n if (!isPrepared(target)) target = getPrepared(target);\n if ((searchBitflags & target._bitflags) !== searchBitflags) continue;\n var result = algorithm(preparedSearch, target);\n if (result === NULL) continue;\n if (result._score < threshold) continue;\n result.obj = obj;\n push_result(result);\n }\n // options.keys\n } else if (options?.keys) {\n var keys = options.keys;\n var keysLen = keys.length;\n outer: for(var i = 0; i < targetsLen; ++i){\n var obj = targets[i];\n var keysBitflags = 0;\n for(var keyI = 0; keyI < keysLen; ++keyI){\n var key = keys[keyI];\n var target = getValue(obj, key);\n if (!target) {\n tmpTargets[keyI] = noTarget;\n continue;\n }\n if (!isPrepared(target)) target = getPrepared(target);\n tmpTargets[keyI] = target;\n keysBitflags |= target._bitflags;\n }\n if ((searchBitflags & keysBitflags) !== searchBitflags) continue;\n if (containsSpace) for(let i = 0; i < preparedSearch.spaceSearches.length; i++)keysSpacesBestScores[i] = NEGATIVE_INFINITY;\n for(var keyI = 0; keyI < keysLen; ++keyI){\n target = tmpTargets[keyI];\n if (target === noTarget) {\n tmpResults[keyI] = noTarget;\n continue;\n }\n tmpResults[keyI] = algorithm(preparedSearch, target, /*allowSpaces=*/ false, /*allowPartialMatch=*/ containsSpace);\n if (tmpResults[keyI] === NULL) {\n tmpResults[keyI] = noTarget;\n continue;\n }\n // todo: this seems weird and wrong. like what if our first match wasn't good. this should just replace it instead of averaging with it\n // if our second match isn't good we ignore it instead of averaging with it\n if (containsSpace) for(let i = 0; i < preparedSearch.spaceSearches.length; i++){\n if (allowPartialMatchScores[i] > -1000) {\n if (keysSpacesBestScores[i] > NEGATIVE_INFINITY) {\n var tmp = (keysSpacesBestScores[i] + allowPartialMatchScores[i]) / 4 /*bonus score for having multiple matches*/ ;\n if (tmp > keysSpacesBestScores[i]) keysSpacesBestScores[i] = tmp;\n }\n }\n if (allowPartialMatchScores[i] > keysSpacesBestScores[i]) keysSpacesBestScores[i] = allowPartialMatchScores[i];\n }\n }\n if (containsSpace) for(let i = 0; i < preparedSearch.spaceSearches.length; i++){\n if (keysSpacesBestScores[i] === NEGATIVE_INFINITY) continue outer;\n }\n else {\n var hasAtLeast1Match = false;\n for(let i = 0; i < keysLen; i++)if (tmpResults[i]._score !== NEGATIVE_INFINITY) {\n hasAtLeast1Match = true;\n break;\n }\n if (!hasAtLeast1Match) continue;\n }\n var objResults = new KeysResult(keysLen);\n for(let i = 0; i < keysLen; i++)objResults[i] = tmpResults[i];\n if (containsSpace) {\n var score = 0;\n for(let i = 0; i < preparedSearch.spaceSearches.length; i++)score += keysSpacesBestScores[i];\n } else {\n // todo could rewrite this scoring to be more similar to when there's spaces\n // if we match multiple keys give us bonus points\n var score = NEGATIVE_INFINITY;\n for(let i = 0; i < keysLen; i++){\n var result = objResults[i];\n if (result._score > -1000) {\n if (score > NEGATIVE_INFINITY) {\n var tmp = (score + result._score) / 4 /*bonus score for having multiple matches*/ ;\n if (tmp > score) score = tmp;\n }\n }\n if (result._score > score) score = result._score;\n }\n }\n objResults.obj = obj;\n objResults._score = score;\n if (options?.scoreFn) {\n score = options.scoreFn(objResults);\n if (!score) continue;\n score = denormalizeScore(score);\n objResults._score = score;\n }\n if (score < threshold) continue;\n push_result(objResults);\n }\n // no keys\n } else for(var i = 0; i < targetsLen; ++i){\n var target = targets[i];\n if (!target) continue;\n if (!isPrepared(target)) target = getPrepared(target);\n if ((searchBitflags & target._bitflags) !== searchBitflags) continue;\n var result = algorithm(preparedSearch, target);\n if (result === NULL) continue;\n if (result._score < threshold) continue;\n push_result(result);\n }\n if (resultsLen === 0) return noResults;\n var results = new Array(resultsLen);\n for(var i = resultsLen - 1; i >= 0; --i)results[i] = q.poll();\n results.total = resultsLen + limitedCount;\n return results;\n };\n // this is written as 1 function instead of 2 for minification. perf seems fine ...\n // except when minified. the perf is very slow\n var highlight = (result, open = \"\", close = \" \")=>{\n var callback = typeof open === \"function\" ? open : undefined;\n var target = result.target;\n var targetLen = target.length;\n var indexes = result.indexes;\n var highlighted = \"\";\n var matchI = 0;\n var indexesI = 0;\n var opened = false;\n var parts = [];\n for(var i = 0; i < targetLen; ++i){\n var char = target[i];\n if (indexes[indexesI] === i) {\n ++indexesI;\n if (!opened) {\n opened = true;\n if (callback) {\n parts.push(highlighted);\n highlighted = \"\";\n } else highlighted += open;\n }\n if (indexesI === indexes.length) {\n if (callback) {\n highlighted += char;\n parts.push(callback(highlighted, matchI++));\n highlighted = \"\";\n parts.push(target.substr(i + 1));\n } else highlighted += char + close + target.substr(i + 1);\n break;\n }\n } else if (opened) {\n opened = false;\n if (callback) {\n parts.push(callback(highlighted, matchI++));\n highlighted = \"\";\n } else highlighted += close;\n }\n highlighted += char;\n }\n return callback ? parts : highlighted;\n };\n var prepare = (target)=>{\n if (typeof target === \"number\") target = \"\" + target;\n else if (typeof target !== \"string\") target = \"\";\n var info = prepareLowerInfo(target);\n return new_result(target, {\n _targetLower: info._lower,\n _targetLowerCodes: info.lowerCodes,\n _bitflags: info.bitflags\n });\n };\n var cleanup = ()=>{\n preparedCache.clear();\n preparedSearchCache.clear();\n };\n // Below this point is only internal code\n // Below this point is only internal code\n // Below this point is only internal code\n // Below this point is only internal code\n class Result {\n get [\"indexes\"]() {\n return this._indexes.slice(0, this._indexes.len).sort((a, b)=>a - b);\n }\n set [\"indexes\"](indexes) {\n return this._indexes = indexes;\n }\n [\"highlight\"](open, close) {\n return highlight(this, open, close);\n }\n get [\"score\"]() {\n return normalizeScore(this._score);\n }\n set [\"score\"](score) {\n this._score = denormalizeScore(score);\n }\n }\n class KeysResult extends Array {\n get [\"score\"]() {\n return normalizeScore(this._score);\n }\n set [\"score\"](score) {\n this._score = denormalizeScore(score);\n }\n }\n var new_result = (target, options)=>{\n const result = new Result();\n result[\"target\"] = target;\n result[\"obj\"] = options.obj ?? NULL;\n result._score = options._score ?? NEGATIVE_INFINITY;\n result._indexes = options._indexes ?? [];\n result._targetLower = options._targetLower ?? \"\";\n result._targetLowerCodes = options._targetLowerCodes ?? NULL;\n result._nextBeginningIndexes = options._nextBeginningIndexes ?? NULL;\n result._bitflags = options._bitflags ?? 0;\n return result;\n };\n var normalizeScore = (score)=>{\n if (score === NEGATIVE_INFINITY) return 0;\n if (score > 1) return score;\n return Math.E ** (((-score + 1) ** .04307 - 1) * -2);\n };\n var denormalizeScore = (normalizedScore)=>{\n if (normalizedScore === 0) return NEGATIVE_INFINITY;\n if (normalizedScore > 1) return normalizedScore;\n return 1 - Math.pow(Math.log(normalizedScore) / -2 + 1, 1 / 0.04307);\n };\n var prepareSearch = (search)=>{\n if (typeof search === \"number\") search = \"\" + search;\n else if (typeof search !== \"string\") search = \"\";\n search = search.trim();\n var info = prepareLowerInfo(search);\n var spaceSearches = [];\n if (info.containsSpace) {\n var searches = search.split(/\\s+/);\n searches = [\n ...new Set(searches)\n ] // distinct\n ;\n for(var i = 0; i < searches.length; i++){\n if (searches[i] === \"\") continue;\n var _info = prepareLowerInfo(searches[i]);\n spaceSearches.push({\n lowerCodes: _info.lowerCodes,\n _lower: searches[i].toLowerCase(),\n containsSpace: false\n });\n }\n }\n return {\n lowerCodes: info.lowerCodes,\n _lower: info._lower,\n containsSpace: info.containsSpace,\n bitflags: info.bitflags,\n spaceSearches: spaceSearches\n };\n };\n var getPrepared = (target)=>{\n if (target.length > 999) return prepare(target) // don't cache huge targets\n ;\n var targetPrepared = preparedCache.get(target);\n if (targetPrepared !== undefined) return targetPrepared;\n targetPrepared = prepare(target);\n preparedCache.set(target, targetPrepared);\n return targetPrepared;\n };\n var getPreparedSearch = (search)=>{\n if (search.length > 999) return prepareSearch(search) // don't cache huge searches\n ;\n var searchPrepared = preparedSearchCache.get(search);\n if (searchPrepared !== undefined) return searchPrepared;\n searchPrepared = prepareSearch(search);\n preparedSearchCache.set(search, searchPrepared);\n return searchPrepared;\n };\n var all = (targets, options)=>{\n var results = [];\n results.total = targets.length // this total can be wrong if some targets are skipped\n ;\n var limit = options?.limit || INFINITY;\n if (options?.key) for(var i = 0; i < targets.length; i++){\n var obj = targets[i];\n var target = getValue(obj, options.key);\n if (target == NULL) continue;\n if (!isPrepared(target)) target = getPrepared(target);\n var result = new_result(target.target, {\n _score: target._score,\n obj: obj\n });\n results.push(result);\n if (results.length >= limit) return results;\n }\n else if (options?.keys) for(var i = 0; i < targets.length; i++){\n var obj = targets[i];\n var objResults = new KeysResult(options.keys.length);\n for(var keyI = options.keys.length - 1; keyI >= 0; --keyI){\n var target = getValue(obj, options.keys[keyI]);\n if (!target) {\n objResults[keyI] = noTarget;\n continue;\n }\n if (!isPrepared(target)) target = getPrepared(target);\n target._score = NEGATIVE_INFINITY;\n target._indexes.len = 0;\n objResults[keyI] = target;\n }\n objResults.obj = obj;\n objResults._score = NEGATIVE_INFINITY;\n results.push(objResults);\n if (results.length >= limit) return results;\n }\n else for(var i = 0; i < targets.length; i++){\n var target = targets[i];\n if (target == NULL) continue;\n if (!isPrepared(target)) target = getPrepared(target);\n target._score = NEGATIVE_INFINITY;\n target._indexes.len = 0;\n results.push(target);\n if (results.length >= limit) return results;\n }\n return results;\n };\n var algorithm = (preparedSearch, prepared, allowSpaces = false, allowPartialMatch = false)=>{\n if (allowSpaces === false && preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared, allowPartialMatch);\n var searchLower = preparedSearch._lower;\n var searchLowerCodes = preparedSearch.lowerCodes;\n var searchLowerCode = searchLowerCodes[0];\n var targetLowerCodes = prepared._targetLowerCodes;\n var searchLen = searchLowerCodes.length;\n var targetLen = targetLowerCodes.length;\n var searchI = 0 // where we at\n ;\n var targetI = 0 // where you at\n ;\n var matchesSimpleLen = 0;\n // very basic fuzzy match; to remove non-matching targets ASAP!\n // walk through target. find sequential matches.\n // if all chars aren't found then exit\n for(;;){\n var isMatch = searchLowerCode === targetLowerCodes[targetI];\n if (isMatch) {\n matchesSimple[matchesSimpleLen++] = targetI;\n ++searchI;\n if (searchI === searchLen) break;\n searchLowerCode = searchLowerCodes[searchI];\n }\n ++targetI;\n if (targetI >= targetLen) return NULL // Failed to find searchI\n ;\n }\n var searchI = 0;\n var successStrict = false;\n var matchesStrictLen = 0;\n var nextBeginningIndexes = prepared._nextBeginningIndexes;\n if (nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target);\n targetI = matchesSimple[0] === 0 ? 0 : nextBeginningIndexes[matchesSimple[0] - 1];\n // Our target string successfully matched all characters in sequence!\n // Let's try a more advanced and strict test to improve the score\n // only count it as a match if it's consecutive or a beginning character!\n var backtrackCount = 0;\n if (targetI !== targetLen) for(;;)if (targetI >= targetLen) {\n // We failed to find a good spot for this search char, go back to the previous search char and force it forward\n if (searchI <= 0) break; // We failed to push chars forward for a better match\n ++backtrackCount;\n if (backtrackCount > 200) break; // exponential backtracking is taking too long, just give up and return a bad match\n --searchI;\n var lastMatch = matchesStrict[--matchesStrictLen];\n targetI = nextBeginningIndexes[lastMatch];\n } else {\n var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI];\n if (isMatch) {\n matchesStrict[matchesStrictLen++] = targetI;\n ++searchI;\n if (searchI === searchLen) {\n successStrict = true;\n break;\n }\n ++targetI;\n } else targetI = nextBeginningIndexes[targetI];\n }\n // check if it's a substring match\n var substringIndex = searchLen <= 1 ? -1 : prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow\n ;\n var isSubstring = !!~substringIndex;\n var isSubstringBeginning = !isSubstring ? false : substringIndex === 0 || prepared._nextBeginningIndexes[substringIndex - 1] === substringIndex;\n // if it's a substring match but not at a beginning index, let's try to find a substring starting at a beginning index for a better score\n if (isSubstring && !isSubstringBeginning) for(var i = 0; i < nextBeginningIndexes.length; i = nextBeginningIndexes[i]){\n if (i <= substringIndex) continue;\n for(var s = 0; s < searchLen; s++)if (searchLowerCodes[s] !== prepared._targetLowerCodes[i + s]) break;\n if (s === searchLen) {\n substringIndex = i;\n isSubstringBeginning = true;\n break;\n }\n }\n // tally up the score & keep track of matches for highlighting later\n // if it's a simple match, we'll switch to a substring match if a substring exists\n // if it's a strict match, we'll switch to a substring match only if that's a better score\n var calculateScore = (matches)=>{\n var score = 0;\n var extraMatchGroupCount = 0;\n for(var i = 1; i < searchLen; ++i)if (matches[i] - matches[i - 1] !== 1) {\n score -= matches[i];\n ++extraMatchGroupCount;\n }\n var unmatchedDistance = matches[searchLen - 1] - matches[0] - (searchLen - 1);\n score -= (12 + unmatchedDistance) * extraMatchGroupCount // penality for more groups\n ;\n if (matches[0] !== 0) score -= matches[0] * matches[0] * .2 // penality for not starting near the beginning\n ;\n if (!successStrict) score *= 1000;\n else {\n // successStrict on a target with too many beginning indexes loses points for being a bad target\n var uniqueBeginningIndexes = 1;\n for(var i = nextBeginningIndexes[0]; i < targetLen; i = nextBeginningIndexes[i])++uniqueBeginningIndexes;\n if (uniqueBeginningIndexes > 24) score *= (uniqueBeginningIndexes - 24) * 10 // quite arbitrary numbers here ...\n ;\n }\n score -= (targetLen - searchLen) / 2 // penality for longer targets\n ;\n if (isSubstring) score /= 1 + searchLen * searchLen * 1 // bonus for being a full substring\n ;\n if (isSubstringBeginning) score /= 1 + searchLen * searchLen * 1 // bonus for substring starting on a beginningIndex\n ;\n score -= (targetLen - searchLen) / 2 // penality for longer targets\n ;\n return score;\n };\n if (!successStrict) {\n if (isSubstring) for(var i = 0; i < searchLen; ++i)matchesSimple[i] = substringIndex + i // at this point it's safe to overwrite matchehsSimple with substr matches\n ;\n var matchesBest = matchesSimple;\n var score = calculateScore(matchesBest);\n } else if (isSubstringBeginning) {\n for(var i = 0; i < searchLen; ++i)matchesSimple[i] = substringIndex + i // at this point it's safe to overwrite matchehsSimple with substr matches\n ;\n var matchesBest = matchesSimple;\n var score = calculateScore(matchesSimple);\n } else {\n var matchesBest = matchesStrict;\n var score = calculateScore(matchesStrict);\n }\n prepared._score = score;\n for(var i = 0; i < searchLen; ++i)prepared._indexes[i] = matchesBest[i];\n prepared._indexes.len = searchLen;\n const result = new Result();\n result.target = prepared.target;\n result._score = prepared._score;\n result._indexes = prepared._indexes;\n return result;\n };\n var algorithmSpaces = (preparedSearch, target, allowPartialMatch)=>{\n var seen_indexes = new Set();\n var score = 0;\n var result = NULL;\n var first_seen_index_last_search = 0;\n var searches = preparedSearch.spaceSearches;\n var searchesLen = searches.length;\n var changeslen = 0;\n // Return _nextBeginningIndexes back to its normal state\n var resetNextBeginningIndexes = ()=>{\n for(let i = changeslen - 1; i >= 0; i--)target._nextBeginningIndexes[nextBeginningIndexesChanges[i * 2 + 0]] = nextBeginningIndexesChanges[i * 2 + 1];\n };\n var hasAtLeast1Match = false;\n for(var i = 0; i < searchesLen; ++i){\n allowPartialMatchScores[i] = NEGATIVE_INFINITY;\n var search = searches[i];\n result = algorithm(search, target);\n if (allowPartialMatch) {\n if (result === NULL) continue;\n hasAtLeast1Match = true;\n } else if (result === NULL) {\n resetNextBeginningIndexes();\n return NULL;\n }\n // if not the last search, we need to mutate _nextBeginningIndexes for the next search\n var isTheLastSearch = i === searchesLen - 1;\n if (!isTheLastSearch) {\n var indexes = result._indexes;\n var indexesIsConsecutiveSubstring = true;\n for(let i = 0; i < indexes.len - 1; i++)if (indexes[i + 1] - indexes[i] !== 1) {\n indexesIsConsecutiveSubstring = false;\n break;\n }\n if (indexesIsConsecutiveSubstring) {\n var newBeginningIndex = indexes[indexes.len - 1] + 1;\n var toReplace = target._nextBeginningIndexes[newBeginningIndex - 1];\n for(let i = newBeginningIndex - 1; i >= 0; i--){\n if (toReplace !== target._nextBeginningIndexes[i]) break;\n target._nextBeginningIndexes[i] = newBeginningIndex;\n nextBeginningIndexesChanges[changeslen * 2 + 0] = i;\n nextBeginningIndexesChanges[changeslen * 2 + 1] = toReplace;\n changeslen++;\n }\n }\n }\n score += result._score / searchesLen;\n allowPartialMatchScores[i] = result._score / searchesLen;\n // dock points based on order otherwise \"c man\" returns Manifest.cpp instead of CheatManager.h\n if (result._indexes[0] < first_seen_index_last_search) score -= (first_seen_index_last_search - result._indexes[0]) * 2;\n first_seen_index_last_search = result._indexes[0];\n for(var j = 0; j < result._indexes.len; ++j)seen_indexes.add(result._indexes[j]);\n }\n if (allowPartialMatch && !hasAtLeast1Match) return NULL;\n resetNextBeginningIndexes();\n // allows a search with spaces that's an exact substring to score well\n var allowSpacesResult = algorithm(preparedSearch, target, /*allowSpaces=*/ true);\n if (allowSpacesResult !== NULL && allowSpacesResult._score > score) {\n if (allowPartialMatch) for(var i = 0; i < searchesLen; ++i)allowPartialMatchScores[i] = allowSpacesResult._score / searchesLen;\n return allowSpacesResult;\n }\n if (allowPartialMatch) result = target;\n result._score = score;\n var i = 0;\n for (let index of seen_indexes)result._indexes[i++] = index;\n result._indexes.len = i;\n return result;\n };\n var prepareLowerInfo = (str)=>{\n var strLen = str.length;\n var lower = str.toLowerCase();\n var lowerCodes = [] // new Array(strLen) sparse array is too slow\n ;\n var bitflags = 0;\n var containsSpace = false // space isn't stored in bitflags because of how searching with a space works\n ;\n for(var i = 0; i < strLen; ++i){\n var lowerCode = lowerCodes[i] = lower.charCodeAt(i);\n if (lowerCode === 32) {\n containsSpace = true;\n continue; // it's important that we don't set any bitflags for space\n }\n var bit = lowerCode >= 97 && lowerCode <= 122 ? lowerCode - 97 // alphabet\n : lowerCode >= 48 && lowerCode <= 57 ? 26 // numbers\n : lowerCode <= 127 ? 30 // other ascii\n : 31 // other utf8\n ;\n bitflags |= 1 << bit;\n }\n return {\n lowerCodes: lowerCodes,\n bitflags: bitflags,\n containsSpace: containsSpace,\n _lower: lower\n };\n };\n var prepareBeginningIndexes = (target)=>{\n var targetLen = target.length;\n var beginningIndexes = [];\n var beginningIndexesLen = 0;\n var wasUpper = false;\n var wasAlphanum = false;\n for(var i = 0; i < targetLen; ++i){\n var targetCode = target.charCodeAt(i);\n var isUpper = targetCode >= 65 && targetCode <= 90;\n var isAlphanum = isUpper || targetCode >= 97 && targetCode <= 122 || targetCode >= 48 && targetCode <= 57;\n var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum;\n wasUpper = isUpper;\n wasAlphanum = isAlphanum;\n if (isBeginning) beginningIndexes[beginningIndexesLen++] = i;\n }\n return beginningIndexes;\n };\n var prepareNextBeginningIndexes = (target)=>{\n var targetLen = target.length;\n var beginningIndexes = prepareBeginningIndexes(target);\n var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow\n ;\n var lastIsBeginning = beginningIndexes[0];\n var lastIsBeginningI = 0;\n for(var i = 0; i < targetLen; ++i)if (lastIsBeginning > i) nextBeginningIndexes[i] = lastIsBeginning;\n else {\n lastIsBeginning = beginningIndexes[++lastIsBeginningI];\n nextBeginningIndexes[i] = lastIsBeginning === undefined ? targetLen : lastIsBeginning;\n }\n return nextBeginningIndexes;\n };\n var preparedCache = new Map();\n var preparedSearchCache = new Map();\n // the theory behind these being globals is to reduce garbage collection by not making new arrays\n var matchesSimple = [];\n var matchesStrict = [];\n var nextBeginningIndexesChanges = [] // allows straw berry to match strawberry well, by modifying the end of a substring to be considered a beginning index for the rest of the search\n ;\n var keysSpacesBestScores = [];\n var allowPartialMatchScores = [];\n var tmpTargets = [];\n var tmpResults = [];\n // prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]\n // prop = 'key1.key2' 10ms\n // prop = ['key1', 'key2'] 27ms\n // prop = obj => obj.tags.join() ??ms\n var getValue = (obj, prop)=>{\n var tmp = obj[prop];\n if (tmp !== undefined) return tmp;\n if (typeof prop === \"function\") return prop(obj) // this should run first. but that makes string props slower\n ;\n var segs = prop;\n if (!Array.isArray(prop)) segs = prop.split(\".\");\n var len = segs.length;\n var i = -1;\n while(obj && ++i < len)obj = obj[segs[i]];\n return obj;\n };\n var isPrepared = (x)=>{\n return typeof x === \"object\" && typeof x._bitflags === \"number\";\n };\n var INFINITY = Infinity;\n var NEGATIVE_INFINITY = -INFINITY;\n var noResults = [];\n noResults.total = 0;\n var NULL = null;\n var noTarget = prepare(\"\");\n // Hacked version of https://github.com/lemire/FastPriorityQueue.js\n var fastpriorityqueue = (r)=>{\n var e = [], o = 0, a = {}, v = (r)=>{\n for(var a = 0, v = e[a], c = 1; c < o;){\n var s = c + 1;\n a = c, s < o && e[s]._score < e[c]._score && (a = s), e[a - 1 >> 1] = e[a], c = 1 + (a << 1);\n }\n for(var f = a - 1 >> 1; a > 0 && v._score < e[f]._score; f = (a = f) - 1 >> 1)e[a] = e[f];\n e[a] = v;\n };\n return a.add = (r)=>{\n var a = o;\n e[o++] = r;\n for(var v = a - 1 >> 1; a > 0 && r._score < e[v]._score; v = (a = v) - 1 >> 1)e[a] = e[v];\n e[a] = r;\n }, a.poll = (r)=>{\n if (0 !== o) {\n var a = e[0];\n return e[0] = e[--o], v(), a;\n }\n }, a.peek = (r)=>{\n if (0 !== o) return e[0];\n }, a.replaceTop = (r)=>{\n e[0] = r, v();\n }, a;\n };\n var q = fastpriorityqueue() // reuse this\n ;\n // fuzzysort is written this way for minification. all names are mangeled unless quoted\n return {\n \"single\": single,\n \"go\": go,\n \"prepare\": prepare,\n \"cleanup\": cleanup\n };\n}) // UMD\n;\n\n});\n\n\nparcelRegister(\"df1N6\", function(module, exports) {\n\n$parcel$export(module.exports, \"safeURIEncode\", () => $9171b13acd3e378e$export$f912fcae84d27ddf);\n$parcel$export(module.exports, \"convertToPixels\", () => $9171b13acd3e378e$export$a0b4c99153c9b294);\nwindow.setTimeout(()=>{\n document.body.classList.add(\"post-buffered\");\n}, 100);\nwindow.addEventListener(\"DOMContentLoaded\", $9171b13acd3e378e$var$stripUrlTextFragment);\nfunction $9171b13acd3e378e$var$stripUrlTextFragment() {\n const rawURL = performance.getEntriesByType(\"navigation\")[0].name;\n if (rawURL.includes(\"#:~:text=\")) window.history.replaceState(null, \"\", rawURL.split(\"#\")[0]);\n}\nfunction $9171b13acd3e378e$export$f912fcae84d27ddf(string) {\n return encodeURIComponent(string).replace(/[-]/g, \"%2D\").replace(/[.]/g, \"%2E\").replace(/[_]/g, \"%5F\").replace(/[~]/g, \"%7E\").replace(/[*]/g, \"%2A\").replace(/['']/g, \"%27\").replace(/[(]/g, \"%28\").replace(/[)]/g, \"%29\").replace(/[,]/g, \"%2C\");\n}\nfunction $9171b13acd3e378e$export$a0b4c99153c9b294(element, value) {\n const tempElement = document.createElement(\"div\");\n tempElement.style.position = \"absolute\";\n tempElement.style.visibility = \"hidden\";\n tempElement.style.height = value;\n element.appendChild(tempElement);\n const pixels = window.getComputedStyle(tempElement).height;\n element.removeChild(tempElement);\n return parseFloat(pixels);\n}\n\n});\n\nparcelRegister(\"742Ng\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $1716747725c23613$export$2e2bcd8739ae039);\n\nvar $gx5Hu = parcelRequire(\"gx5Hu\");\n\nvar $lHYGq = parcelRequire(\"lHYGq\");\nconst $1716747725c23613$var$SEARCH_RESULTS_HIGHLIGHT_CLASS = \"highlight\";\nvar $1716747725c23613$var$SearchMode;\n(function(SearchMode) {\n SearchMode[\"NORMAL\"] = \"normal\";\n SearchMode[\"TITLE\"] = \"title\";\n SearchMode[\"CONTENT\"] = \"content\";\n})($1716747725c23613$var$SearchMode || ($1716747725c23613$var$SearchMode = {}));\nconst $1716747725c23613$var$SEARCH_PREFIX = Object.freeze(new Map([\n [\n \"!\",\n \"title\"\n ],\n [\n \":\",\n \"content\"\n ]\n]));\nconst $1716747725c23613$var$SEARCH_KEYS = Object.freeze(new Map([\n [\n \"normal\",\n [\n (0, $lHYGq.IndexableFields).TITLE,\n (0, $lHYGq.IndexableFields).CONTENT\n ]\n ],\n [\n \"title\",\n [\n (0, $lHYGq.IndexableFields).TITLE\n ]\n ],\n [\n \"content\",\n [\n (0, $lHYGq.IndexableFields).CONTENT\n ]\n ]\n]));\nconst $1716747725c23613$var$searchResultsCache = new Map();\nasync function $1716747725c23613$var$doSearch(query, searchTargets) {\n query = query.trim();\n const cacheResult = $1716747725c23613$var$searchResultsCache.get(query);\n const searchMode = $1716747725c23613$var$SEARCH_PREFIX.get(query[0]) ?? \"normal\";\n if (searchMode !== \"normal\") query = query.slice(1).trim();\n return query === \"\" ? {\n aborted: true\n } : {\n aborted: false,\n searchMode: searchMode,\n results: cacheResult ?? await (async ()=>{\n const compiledResults = await $1716747725c23613$var$compileSearchResults(searchMode, query, searchTargets);\n $1716747725c23613$var$searchResultsCache.set(query, compiledResults);\n return compiledResults;\n })(),\n usedCache: cacheResult !== undefined\n };\n}\nasync function $1716747725c23613$var$compileSearchResults(searchMode, query, searchTargets) {\n const compiledResults = [];\n //! PERFORMANCE\n const fuzzysortStartTime = performance.now();\n //! -----------\n const results = (0, (/*@__PURE__*/$parcel$interopDefault($gx5Hu))).go(query, searchTargets, {\n keys: $1716747725c23613$var$SEARCH_KEYS.get(searchMode) ?? (()=>{\n throw new Error(`Search keys not found for search mode ${searchMode}`);\n })()\n });\n //! PERFORMANCE\n const fuzzysortEndTime = performance.now();\n //! -----------\n //! PERFORMANCE\n const compilationStartTime = performance.now();\n //! -----------\n results.forEach((result)=>{\n console.log(result);\n const { titleResult: titleResult, contentResult: contentResult } = (()=>{\n switch(searchMode){\n case \"normal\":\n return {\n titleResult: result[0],\n contentResult: result[1]\n };\n case \"title\":\n return {\n titleResult: result[0],\n contentResult: undefined\n };\n case \"content\":\n return {\n titleResult: undefined,\n contentResult: result[0]\n };\n default:\n throw new Error(`Search mode ${searchMode} not implemented`);\n }\n })();\n compiledResults.push({\n path: result.obj.path,\n score: result.score,\n title: result.obj.title.target,\n highlightedTitleChunks: titleResult !== undefined ? getHighlighted(query, titleResult) : [\n result.obj.title.target\n ],\n highlightedContentChunks: contentResult !== undefined ? getHighlighted(query, contentResult) : [\n getAbbreviated(result.obj.content.target)\n ]\n });\n });\n //! PERFORMANCE\n const compilationEndTime = performance.now();\n console.log(\"Fuzzysort took\", fuzzysortEndTime - fuzzysortStartTime, \"ms\");\n console.log(\"Compilation took\", compilationEndTime - compilationStartTime, \"ms\");\n //! -----------\n return compiledResults;\n //\n function getHighlighted(query, result) {\n const OPEN_TAG = ``;\n const CLOSE_TAG = \" \";\n // preliminary highlight using fuzzysort highlight function\n // this only cares about the first match and ignores the rest\n const preHighlightedTokens = result.highlight((highlightText)=>`${OPEN_TAG}${highlightText}${CLOSE_TAG}`);\n if (preHighlightedTokens.length === 0) return [];\n // highlight the rest, atomise them, and push them into the same array\n const TAGGED_REGEX = new RegExp(String.raw`^${OPEN_TAG}.*${CLOSE_TAG}$`, \"g\");\n const comprehensiveTokens = getComprehensiveTokens(preHighlightedTokens);\n const [atomicTokens, tagTokenIndices] = atomiseTokens(comprehensiveTokens);\n // condense the tokens\n const condensedTokens = condenseTokens(atomicTokens, tagTokenIndices);\n return condensedTokens;\n //\n function getComprehensiveTokens(inputTokens) {\n const compTokens = [];\n inputTokens.forEach((token)=>{\n if (token.match(TAGGED_REGEX)) // is tag\n compTokens.push(token);\n else {\n // is sentences\n const taggedSentences = highlightMore(token);\n const tokenisedHighlightedSentences = tokeniseTaggedSentences(taggedSentences);\n compTokens.push(...tokenisedHighlightedSentences);\n }\n });\n return compTokens;\n //\n function highlightMore(text) {\n const queries = query.split(\" \").filter((word)=>word.length > 0).map((word)=>word.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"));\n const comprehensiveQueryRegex = new RegExp(String.raw`(${queries.join(\"|\")})`, \"gi\");\n return text.replace(comprehensiveQueryRegex, `${OPEN_TAG}$1${CLOSE_TAG}`);\n }\n function tokeniseTaggedSentences(taggedSentences) {\n const tagSplitRegex = new RegExp(String.raw`(?=${OPEN_TAG})|(?<=${CLOSE_TAG})`, \"g\");\n return taggedSentences.split(tagSplitRegex);\n }\n }\n function atomiseTokens(inputTokens) {\n const tokens = [];\n const tokenIndices = [];\n inputTokens.forEach((token)=>{\n if (token.match(TAGGED_REGEX)) {\n // is tag\n tokenIndices.push(tokens.length);\n tokens.push(token);\n } else // is sentences\n tokens.push(...tokeniseSentences(token));\n });\n return [\n tokens,\n tokenIndices\n ];\n //\n function tokeniseSentences(sentences) {\n const tokens = sentences.split(/(?<=\\n|\\.\\s|\\?\\s|!\\s)/g).filter((sentence)=>sentence.length > 0);\n const paddedTokens = replaceNewlinesWithEmptyElements(tokens);\n return paddedTokens;\n //\n function replaceNewlinesWithEmptyElements(tokens) {\n for(let i = 0; i < tokens.length; i++){\n const splitTokens = tokens[i].split(\"\\n\");\n if (splitTokens.length > 1) {\n const withEmptyElements = interweaveEmptyElements(splitTokens);\n tokens.splice(i, 1, ...withEmptyElements);\n i += withEmptyElements.length - 1;\n }\n }\n return tokens;\n }\n function interweaveEmptyElements(splitTokens) {\n const interweaved = [];\n for(let j = 0; j < splitTokens.length; j++){\n interweaved.push(splitTokens[j]);\n if (j < splitTokens.length - 1) interweaved.push(\"\");\n }\n return interweaved;\n }\n }\n }\n function condenseTokens(inputTokens, tagIndices) {\n const condensedTokens = [];\n let condensedTokenIndex = 0;\n while(condensedTokenIndex < inputTokens.length){\n let currentCondensedToken = \"\";\n let position;\n while(isTruthy(position = tokenIsTagOrAdjacentToTag(condensedTokenIndex))){\n const token = inputTokens[condensedTokenIndex];\n if (token === undefined) break;\n condensedTokenIndex++;\n //\n currentCondensedToken += token;\n if (!position.isBefore && position.isAfter) break;\n }\n if (currentCondensedToken.length > 0) condensedTokens.push(currentCondensedToken.trim());\n else condensedTokenIndex++;\n }\n return condensedTokens;\n function tokenIsTagOrAdjacentToTag(index) {\n return {\n isBefore: tagIndices.includes(index + 1),\n isTag: tagIndices.includes(index),\n isAfter: tagIndices.includes(index - 1)\n };\n }\n function isTruthy(position) {\n return position.isBefore || position.isTag || position.isAfter;\n }\n }\n }\n function getAbbreviated(text) {\n const MAX_LENGTH = 200;\n return text.length > MAX_LENGTH ? text.slice(0, MAX_LENGTH) + \"...\" : text;\n }\n}\nclass $1716747725c23613$export$2e2bcd8739ae039 {\n static{\n this.doSearch = $1716747725c23613$var$doSearch;\n }\n}\n\n});\n\n\nvar $lHYGq = parcelRequire(\"lHYGq\");\n\nvar $df1N6 = parcelRequire(\"df1N6\");\n\nvar $742Ng = parcelRequire(\"742Ng\");\n(async ()=>{\n const searchbarElement = document.getElementById(\"searchbar\") ?? (()=>{\n throw new Error(\"Searchbar not found\");\n })();\n const headerSearchFieldElement = document.getElementById(\"header-search-field\") ?? (()=>{\n throw new Error(\"Search field not found\");\n })();\n const mainSearchFieldElement = document.getElementById(\"main-search-field\") ?? (()=>{\n throw new Error(\"Search field not found\");\n })();\n const searchDialogElement = document.getElementById(\"search-dialog\") ?? (()=>{\n throw new Error(\"Search dialog not found\");\n })();\n const searchResultsElement = document.getElementById(\"search-results\") ?? (()=>{\n throw new Error(\"Search results not found\");\n })();\n const searchResultTemplate = (()=>{\n const searchResultTemplateElement = document.getElementById(\"search-result-template\") ?? (()=>{\n throw new Error(\"Search result template not found\");\n })();\n return searchResultTemplateElement.content.cloneNode(true);\n })();\n const searchResultsEndTemplate = (()=>{\n const searchResultsEndTemplateElement = document.getElementById(\"search-results-end-template\") ?? (()=>{\n throw new Error(\"Search results end template not found\");\n })();\n return searchResultsEndTemplateElement.content.cloneNode(true);\n })();\n const prefixTipsTemplate = (()=>{\n const prefixTipsTemplateElement = document.getElementById(\"prefix-tips-template\") ?? (()=>{\n throw new Error(\"Prefix tips template not found\");\n })();\n return prefixTipsTemplateElement.content.cloneNode(true);\n })();\n const queryTimeElement = document.getElementById(\"query-time\") ?? (()=>{\n throw new Error(\"Query time element not found\");\n })();\n const redrawTimeElement = document.getElementById(\"redraw-time\") ?? (()=>{\n throw new Error(\"Redraw time element not found\");\n })();\n //\n searchResultsElement.appendChild(prefixTipsTemplate.cloneNode(true));\n //\n const BASE_URL = document.head.querySelector(\"meta[base-url]\")?.getAttribute(\"base-url\") ?? \".\";\n (0, $lHYGq.default).index = await (await fetch(`/${BASE_URL}/search-index.json`)).json();\n const searchTargets = (0, $lHYGq.default).targets;\n // console.log({ index: Searchable.index, targets: Searchable.targets });\n /* -------------------------------------------------------------------------- */ headerSearchFieldElement.addEventListener(\"focusin\", ()=>{\n mainSearchFieldElement.focus();\n });\n /* -------------------------------------------------------------------------- */ let oldSearchFieldQuery;\n mainSearchFieldElement.addEventListener(\"keydown\", onSearchFieldKeyDown);\n function onSearchFieldKeyDown() {\n //? the query is inexplicably one character behind if we don't use requestAnimationFrame\n //? + slight throttling\n requestAnimationFrame(updateSearch);\n }\n function updateSearch() {\n headerSearchFieldElement.value = mainSearchFieldElement.value;\n const query = mainSearchFieldElement.value.trim();\n if (query === oldSearchFieldQuery) return;\n oldSearchFieldQuery = query;\n updateSearchResults(query);\n }\n //\n mainSearchFieldElement.addEventListener(\"input\", onSearchFieldInput);\n function onSearchFieldInput(event) {\n const inputElement = event.target;\n if (inputElement.value === \"\") {\n console.log(\"Cancel button clicked\");\n requestAnimationFrame(updateSearch);\n }\n }\n /* -------------------------------------------------------------------------- */ searchbarElement.addEventListener(\"keydown\", (event)=>{\n // allow non-typing keys pass through\n const nonTypingKeys = [\n \"Shift\",\n \"Control\",\n \"Alt\",\n \"Meta\",\n \"Enter\",\n \"Tab\",\n \"CapsLock\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\"\n ];\n if (nonTypingKeys.includes(event.key)) return;\n // allow arrow up down navigation\n if ([\n \"ArrowUp\",\n \"ArrowDown\"\n ].includes(event.key)) {\n event.preventDefault();\n const isDown = event.key === \"ArrowDown\";\n // focus on the next or previous search result\n const searchResults = searchResultsElement.children;\n const focusedElement = document.activeElement;\n const focusedIndex = Array.from(searchResults).indexOf(focusedElement);\n if (focusedIndex === -1 && !isDown) return;\n const nextIndex = Math.min(focusedIndex + (isDown ? 1 : -1), searchResults.length - 1);\n const elementToFocus = searchResults[nextIndex] || mainSearchFieldElement;\n elementToFocus.focus();\n elementToFocus.scrollIntoView({\n block: \"start\",\n behavior: \"instant\"\n });\n return;\n }\n // allow escape to close the search dialog when the search field is empty\n if (event.key === \"Escape\" && mainSearchFieldElement.value === \"\") {\n mainSearchFieldElement.focus();\n mainSearchFieldElement.blur();\n return;\n }\n // regular typing\n mainSearchFieldElement.focus();\n searchResultsElement.scrollTo(0, 0);\n requestAnimationFrame(()=>{\n headerSearchFieldElement.value = mainSearchFieldElement.value;\n updateSearch();\n });\n });\n searchbarElement.addEventListener(\"focusin\", ()=>{\n searchDialogElement.toggleAttribute(\"open\", true);\n });\n searchbarElement.addEventListener(\"focusout\", ()=>{\n searchDialogElement.toggleAttribute(\"open\", false);\n });\n //\n window.addEventListener(\"keydown\", (event)=>{\n if (event.ctrlKey && event.shiftKey && event.key === \"F\") {\n event.preventDefault();\n mainSearchFieldElement.focus();\n }\n });\n //\n async function updateSearchResults(query) {\n const startTime = performance.now();\n const searchResponse = await (0, $742Ng.default).doSearch(query, searchTargets);\n const queryEndTime = performance.now();\n const queryElapsedTime = queryEndTime - startTime;\n searchResponse.aborted ? console.log(`Query for \"${query}\" aborted`) : console.log(`Querying for \"${query}\" in`, searchResponse.searchMode, \"mode took\", queryElapsedTime, \"ms\", searchResponse.usedCache ? \"(from cache)\" : \"\");\n redrawSearchResults(searchResponse);\n const redrawEndTime = performance.now();\n const redrawElapsedTime = redrawEndTime - queryEndTime;\n console.log(\"Redrawing search results took\", redrawElapsedTime, \"ms\");\n queryTimeElement.textContent = queryElapsedTime.toFixed(2);\n redrawTimeElement.textContent = redrawElapsedTime.toFixed(2);\n return;\n //\n function redrawSearchResults(searchResponse) {\n searchResultsElement.innerHTML = \"\";\n if (searchResponse.aborted) {\n searchResultsElement.appendChild(prefixTipsTemplate.cloneNode(true));\n return;\n }\n //\n console.log(searchResponse.results);\n for (const result of searchResponse.results.sort((a, b)=>b.score - a.score)){\n const newSearchResultElement = searchResultTemplate.cloneNode(true);\n //\n const baselessResultPageHref = `/${result.path}${window.location.pathname.endsWith(\".html\") ? \".html\" : \"\"}`;\n const resultPageHref = `/${BASE_URL}${baselessResultPageHref}`;\n newSearchResultElement.querySelector(\"#result-title\").innerHTML = result.highlightedTitleChunks.join(\" \").trim() || result.title;\n newSearchResultElement.querySelector(\"#result-path\").textContent = result.path;\n //\n const contentElement = newSearchResultElement.querySelector(\"#result-content\");\n for (const contentChunk of result.highlightedContentChunks){\n const contentChunkElement = document.createElement(\"a\");\n contentChunkElement.innerHTML = contentChunk;\n //\n const safeText = (0, $df1N6.safeURIEncode)((contentChunkElement.textContent || (()=>{\n throw new Error(\"Empty content chunk\");\n })()).trim());\n const resultTextHref = `${resultPageHref}#:~:text=${safeText}`;\n contentChunkElement.href = resultTextHref;\n if (window.location.href.endsWith(baselessResultPageHref)) // same page search\n contentChunkElement.addEventListener(\"click\", ()=>{\n searchDialogElement.toggleAttribute(\"open\", false);\n const oParent = searchDialogElement.parentNode;\n document.body.appendChild(searchDialogElement);\n window.location.href = resultTextHref;\n requestAnimationFrame(()=>{\n oParent?.appendChild(searchDialogElement);\n });\n });\n //\n contentElement.appendChild(contentChunkElement);\n }\n //\n searchResultsElement.appendChild(newSearchResultElement);\n // I have no idea why this jank is necessary\n searchResultsElement.lastElementChild.href = resultPageHref;\n }\n searchResultsElement.appendChild(searchResultsEndTemplate.cloneNode(true));\n }\n }\n})();\n\n})();\n//# sourceMappingURL=searchbar.js.map\n","import { PageData } from './PageData';\nimport { htmlToText } from 'html-to-text';\nimport fuzzysort from 'fuzzysort';\n\ntype SearchIndex = SearchIndexEntry[];\ntype SearchIndexEntry = {\n path: string;\n title: string;\n content: string;\n}\nexport enum IndexableFields {\n TITLE = 'title',\n CONTENT = 'content',\n}\nexport type SearchTarget = { path: string, title: Fuzzysort.Prepared, content: Fuzzysort.Prepared };\n\nfunction sanitiseRawContent(htmlPollutedRawContent: string): string {\n let sanitisedRawContent = htmlToText(htmlPollutedRawContent,\n {\n wordwrap: false,\n selectors: [\n { selector: '*', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'img', format: 'skip' },\n { selector: 'hr', format: 'skip' },\n { selector: 'blockquote', format: 'block' },\n { selector: 'a', options: { ignoreHref: true } },\n ],\n }\n );\n // sanitisedRawContent = sanitisedRawContent.replace(/\\s/g, ' ');\n // sanitisedRawContent = sanitisedRawContent.replace(/\\s{2,}/g, '\\n');\n sanitisedRawContent = sanitisedRawContent.replace(/\\n{2,}/g, '\\n');\n return sanitisedRawContent;\n}\n\nexport default class Searchable {\n static index: SearchIndex = [];\n private static _targets: SearchTarget[];\n\n static get targets(): SearchTarget[] {\n const targets: SearchTarget[] = [];\n this.index.forEach(entry => targets.push({\n path: entry.path,\n title: fuzzysort.prepare(entry.title),\n content: fuzzysort.prepare(entry.content.replace('', '').replace(' ', ''))\n }));\n this._targets = targets;\n return this._targets;\n }\n\n static addEntry(path: string, title: string, pageData: PageData) {\n this.index.push({\n path, title, content: sanitiseRawContent(\n pageData.htmlPollutedRawContent\n ?? (() => { throw new Error(`htmlPollutedRawContent not found for ${path}!`) })()\n )\n });\n }\n}","import { hp2Builder } from '@selderee/plugin-htmlparser2';\nimport { parseDocument } from 'htmlparser2';\nimport { DecisionTree } from 'selderee';\nimport merge from 'deepmerge';\nimport { render } from 'dom-serializer';\n\n/**\n * Make a recursive function that will only run to a given depth\n * and switches to an alternative function at that depth. \\\n * No limitation if `n` is `undefined` (Just wraps `f` in that case).\n *\n * @param { number | undefined } n Allowed depth of recursion. `undefined` for no limitation.\n * @param { Function } f Function that accepts recursive callback as the first argument.\n * @param { Function } [g] Function to run instead, when maximum depth was reached. Do nothing by default.\n * @returns { Function }\n */\nfunction limitedDepthRecursive (n, f, g = () => undefined) {\n if (n === undefined) {\n const f1 = function (...args) { return f(f1, ...args); };\n return f1;\n }\n if (n >= 0) {\n return function (...args) { return f(limitedDepthRecursive(n - 1, f, g), ...args); };\n }\n return g;\n}\n\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from each side.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */\nfunction trimCharacter (str, char) {\n let start = 0;\n let end = str.length;\n while (start < end && str[start] === char) { ++start; }\n while (end > start && str[end - 1] === char) { --end; }\n return (start > 0 || end < str.length)\n ? str.substring(start, end)\n : str;\n}\n\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from the end only.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */\nfunction trimCharacterEnd (str, char) {\n let end = str.length;\n while (end > 0 && str[end - 1] === char) { --end; }\n return (end < str.length)\n ? str.substring(0, end)\n : str;\n}\n\n/**\n * Return a new string will all characters replaced with unicode escape sequences.\n * This extreme kind of escaping can used to be safely compose regular expressions.\n *\n * @param { string } str A string to escape.\n * @returns { string } A string of unicode escape sequences.\n */\nfunction unicodeEscape (str) {\n return str.replace(/[\\s\\S]/g, c => '\\\\u' + c.charCodeAt().toString(16).padStart(4, '0'));\n}\n\n/**\n * Deduplicate an array by a given key callback.\n * Item properties are merged recursively and with the preference for last defined values.\n * Of items with the same key, merged item takes the place of the last item,\n * others are omitted.\n *\n * @param { any[] } items An array to deduplicate.\n * @param { (x: any) => string } getKey Callback to get a value that distinguishes unique items.\n * @returns { any[] }\n */\nfunction mergeDuplicatesPreferLast (items, getKey) {\n const map = new Map();\n for (let i = items.length; i-- > 0;) {\n const item = items[i];\n const key = getKey(item);\n map.set(\n key,\n (map.has(key))\n ? merge(item, map.get(key), { arrayMerge: overwriteMerge$1 })\n : item\n );\n }\n return [...map.values()].reverse();\n}\n\nconst overwriteMerge$1 = (acc, src, options) => [...src];\n\n/**\n * Get a nested property from an object.\n *\n * @param { object } obj The object to query for the value.\n * @param { string[] } path The path to the property.\n * @returns { any }\n */\nfunction get (obj, path) {\n for (const key of path) {\n if (!obj) { return undefined; }\n obj = obj[key];\n }\n return obj;\n}\n\n/**\n * Convert a number into alphabetic sequence representation (Sequence without zeroes).\n *\n * For example: `a, ..., z, aa, ..., zz, aaa, ...`.\n *\n * @param { number } num Number to convert. Must be >= 1.\n * @param { string } [baseChar = 'a'] Character for 1 in the sequence.\n * @param { number } [base = 26] Number of characters in the sequence.\n * @returns { string }\n */\nfunction numberToLetterSequence (num, baseChar = 'a', base = 26) {\n const digits = [];\n do {\n num -= 1;\n digits.push(num % base);\n num = (num / base) >> 0; // quick `floor`\n } while (num > 0);\n const baseCode = baseChar.charCodeAt(0);\n return digits\n .reverse()\n .map(n => String.fromCharCode(baseCode + n))\n .join('');\n}\n\nconst I = ['I', 'X', 'C', 'M'];\nconst V = ['V', 'L', 'D'];\n\n/**\n * Convert a number to it's Roman representation. No large numbers extension.\n *\n * @param { number } num Number to convert. `0 < num <= 3999`.\n * @returns { string }\n */\nfunction numberToRoman (num) {\n return [...(num) + '']\n .map(n => +n)\n .reverse()\n .map((v, i) => ((v % 5 < 4)\n ? (v < 5 ? '' : V[i]) + I[i].repeat(v % 5)\n : I[i] + (v < 5 ? V[i] : I[i + 1])))\n .reverse()\n .join('');\n}\n\n/**\n * Helps to build text from words.\n */\nclass InlineTextBuilder {\n /**\n * Creates an instance of InlineTextBuilder.\n *\n * If `maxLineLength` is not provided then it is either `options.wordwrap` or unlimited.\n *\n * @param { Options } options HtmlToText options.\n * @param { number } [ maxLineLength ] This builder will try to wrap text to fit this line length.\n */\n constructor (options, maxLineLength = undefined) {\n /** @type { string[][] } */\n this.lines = [];\n /** @type { string[] } */\n this.nextLineWords = [];\n this.maxLineLength = maxLineLength || options.wordwrap || Number.MAX_VALUE;\n this.nextLineAvailableChars = this.maxLineLength;\n this.wrapCharacters = get(options, ['longWordSplit', 'wrapCharacters']) || [];\n this.forceWrapOnLimit = get(options, ['longWordSplit', 'forceWrapOnLimit']) || false;\n\n this.stashedSpace = false;\n this.wordBreakOpportunity = false;\n }\n\n /**\n * Add a new word.\n *\n * @param { string } word A word to add.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n pushWord (word, noWrap = false) {\n if (this.nextLineAvailableChars <= 0 && !noWrap) {\n this.startNewLine();\n }\n const isLineStart = this.nextLineWords.length === 0;\n const cost = word.length + (isLineStart ? 0 : 1);\n if ((cost <= this.nextLineAvailableChars) || noWrap) { // Fits into available budget\n\n this.nextLineWords.push(word);\n this.nextLineAvailableChars -= cost;\n\n } else { // Does not fit - try to split the word\n\n // The word is moved to a new line - prefer to wrap between words.\n const [first, ...rest] = this.splitLongWord(word);\n if (!isLineStart) { this.startNewLine(); }\n this.nextLineWords.push(first);\n this.nextLineAvailableChars -= first.length;\n for (const part of rest) {\n this.startNewLine();\n this.nextLineWords.push(part);\n this.nextLineAvailableChars -= part.length;\n }\n\n }\n }\n\n /**\n * Pop a word from the currently built line.\n * This doesn't affect completed lines.\n *\n * @returns { string }\n */\n popWord () {\n const lastWord = this.nextLineWords.pop();\n if (lastWord !== undefined) {\n const isLineStart = this.nextLineWords.length === 0;\n const cost = lastWord.length + (isLineStart ? 0 : 1);\n this.nextLineAvailableChars += cost;\n }\n return lastWord;\n }\n\n /**\n * Concat a word to the last word already in the builder.\n * Adds a new word in case there are no words yet in the last line.\n *\n * @param { string } word A word to be concatenated.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n concatWord (word, noWrap = false) {\n if (this.wordBreakOpportunity && word.length > this.nextLineAvailableChars) {\n this.pushWord(word, noWrap);\n this.wordBreakOpportunity = false;\n } else {\n const lastWord = this.popWord();\n this.pushWord((lastWord) ? lastWord.concat(word) : word, noWrap);\n }\n }\n\n /**\n * Add current line (and more empty lines if provided argument > 1) to the list of complete lines and start a new one.\n *\n * @param { number } n Number of line breaks that will be added to the resulting string.\n */\n startNewLine (n = 1) {\n this.lines.push(this.nextLineWords);\n if (n > 1) {\n this.lines.push(...Array.from({ length: n - 1 }, () => []));\n }\n this.nextLineWords = [];\n this.nextLineAvailableChars = this.maxLineLength;\n }\n\n /**\n * No words in this builder.\n *\n * @returns { boolean }\n */\n isEmpty () {\n return this.lines.length === 0\n && this.nextLineWords.length === 0;\n }\n\n clear () {\n this.lines.length = 0;\n this.nextLineWords.length = 0;\n this.nextLineAvailableChars = this.maxLineLength;\n }\n\n /**\n * Join all lines of words inside the InlineTextBuilder into a complete string.\n *\n * @returns { string }\n */\n toString () {\n return [...this.lines, this.nextLineWords]\n .map(words => words.join(' '))\n .join('\\n');\n }\n\n /**\n * Split a long word up to fit within the word wrap limit.\n * Use either a character to split looking back from the word wrap limit,\n * or truncate to the word wrap limit.\n *\n * @param { string } word Input word.\n * @returns { string[] } Parts of the word.\n */\n splitLongWord (word) {\n const parts = [];\n let idx = 0;\n while (word.length > this.maxLineLength) {\n\n const firstLine = word.substring(0, this.maxLineLength);\n const remainingChars = word.substring(this.maxLineLength);\n\n const splitIndex = firstLine.lastIndexOf(this.wrapCharacters[idx]);\n\n if (splitIndex > -1) { // Found a character to split on\n\n word = firstLine.substring(splitIndex + 1) + remainingChars;\n parts.push(firstLine.substring(0, splitIndex + 1));\n\n } else { // Not found a character to split on\n\n idx++;\n if (idx < this.wrapCharacters.length) { // There is next character to try\n\n word = firstLine + remainingChars;\n\n } else { // No more characters to try\n\n if (this.forceWrapOnLimit) {\n parts.push(firstLine);\n word = remainingChars;\n if (word.length > this.maxLineLength) {\n continue;\n }\n } else {\n word = firstLine + remainingChars;\n }\n break;\n\n }\n\n }\n\n }\n parts.push(word); // Add remaining part to array\n return parts;\n }\n}\n\n/* eslint-disable max-classes-per-file */\n\n\nclass StackItem {\n constructor (next = null) { this.next = next; }\n\n getRoot () { return (this.next) ? this.next : this; }\n}\n\nclass BlockStackItem extends StackItem {\n constructor (options, next = null, leadingLineBreaks = 1, maxLineLength = undefined) {\n super(next);\n this.leadingLineBreaks = leadingLineBreaks;\n this.inlineTextBuilder = new InlineTextBuilder(options, maxLineLength);\n this.rawText = '';\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass ListStackItem extends BlockStackItem {\n constructor (\n options,\n next = null,\n {\n interRowLineBreaks = 1,\n leadingLineBreaks = 2,\n maxLineLength = undefined,\n maxPrefixLength = 0,\n prefixAlign = 'left',\n } = {}\n ) {\n super(options, next, leadingLineBreaks, maxLineLength);\n this.maxPrefixLength = maxPrefixLength;\n this.prefixAlign = prefixAlign;\n this.interRowLineBreaks = interRowLineBreaks;\n }\n}\n\nclass ListItemStackItem extends BlockStackItem {\n constructor (\n options,\n next = null,\n {\n leadingLineBreaks = 1,\n maxLineLength = undefined,\n prefix = '',\n } = {}\n ) {\n super(options, next, leadingLineBreaks, maxLineLength);\n this.prefix = prefix;\n }\n}\n\nclass TableStackItem extends StackItem {\n constructor (next = null) {\n super(next);\n this.rows = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TableRowStackItem extends StackItem {\n constructor (next = null) {\n super(next);\n this.cells = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TableCellStackItem extends StackItem {\n constructor (options, next = null, maxColumnWidth = undefined) {\n super(next);\n this.inlineTextBuilder = new InlineTextBuilder(options, maxColumnWidth);\n this.rawText = '';\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TransformerStackItem extends StackItem {\n constructor (next = null, transform) {\n super(next);\n this.transform = transform;\n }\n}\n\nfunction charactersToCodes (str) {\n return [...str]\n .map(c => '\\\\u' + c.charCodeAt(0).toString(16).padStart(4, '0'))\n .join('');\n}\n\n/**\n * Helps to handle HTML whitespaces.\n *\n * @class WhitespaceProcessor\n */\nclass WhitespaceProcessor {\n\n /**\n * Creates an instance of WhitespaceProcessor.\n *\n * @param { Options } options HtmlToText options.\n * @memberof WhitespaceProcessor\n */\n constructor (options) {\n this.whitespaceChars = (options.preserveNewlines)\n ? options.whitespaceCharacters.replace(/\\n/g, '')\n : options.whitespaceCharacters;\n const whitespaceCodes = charactersToCodes(this.whitespaceChars);\n this.leadingWhitespaceRe = new RegExp(`^[${whitespaceCodes}]`);\n this.trailingWhitespaceRe = new RegExp(`[${whitespaceCodes}]$`);\n this.allWhitespaceOrEmptyRe = new RegExp(`^[${whitespaceCodes}]*$`);\n this.newlineOrNonWhitespaceRe = new RegExp(`(\\\\n|[^\\\\n${whitespaceCodes}])`, 'g');\n this.newlineOrNonNewlineStringRe = new RegExp(`(\\\\n|[^\\\\n]+)`, 'g');\n\n if (options.preserveNewlines) {\n\n const wordOrNewlineRe = new RegExp(`\\\\n|[^\\\\n${whitespaceCodes}]+`, 'gm');\n\n /**\n * Shrink whitespaces and wrap text, add to the builder.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { (str: string) => string } [ transform ] A transform to be applied to words.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n this.shrinkWrapAdd = function (text, inlineTextBuilder, transform = (str => str), noWrap = false) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordOrNewlineRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else if (previouslyStashedSpace || this.testLeadingWhitespace(text)) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n } else {\n inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n }\n while ((m = wordOrNewlineRe.exec(text)) !== null) {\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch) || (this.testTrailingWhitespace(text));\n // No need to stash a space in case last added item was a new line,\n // but that won't affect anything later anyway.\n };\n\n } else {\n\n const wordRe = new RegExp(`[^${whitespaceCodes}]+`, 'g');\n\n this.shrinkWrapAdd = function (text, inlineTextBuilder, transform = (str => str), noWrap = false) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordRe.exec(text);\n if (m) {\n anyMatch = true;\n if (previouslyStashedSpace || this.testLeadingWhitespace(text)) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n } else {\n inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n }\n while ((m = wordRe.exec(text)) !== null) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch) || this.testTrailingWhitespace(text);\n };\n\n }\n }\n\n /**\n * Add text with only minimal processing.\n * Everything between newlines considered a single word.\n * No whitespace is trimmed.\n * Not affected by preserveNewlines option - `\\n` always starts a new line.\n *\n * `noWrap` argument is `true` by default - this won't start a new line\n * even if there is not enough space left in the current line.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n addLiteral (text, inlineTextBuilder, noWrap = true) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = this.newlineOrNonNewlineStringRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else if (previouslyStashedSpace) {\n inlineTextBuilder.pushWord(m[0], noWrap);\n } else {\n inlineTextBuilder.concatWord(m[0], noWrap);\n }\n while ((m = this.newlineOrNonNewlineStringRe.exec(text)) !== null) {\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else {\n inlineTextBuilder.pushWord(m[0], noWrap);\n }\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch);\n }\n\n /**\n * Test whether the given text starts with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testLeadingWhitespace (text) {\n return this.leadingWhitespaceRe.test(text);\n }\n\n /**\n * Test whether the given text ends with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testTrailingWhitespace (text) {\n return this.trailingWhitespaceRe.test(text);\n }\n\n /**\n * Test whether the given text contains any non-whitespace characters.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testContainsWords (text) {\n return !this.allWhitespaceOrEmptyRe.test(text);\n }\n\n /**\n * Return the number of newlines if there are no words.\n *\n * If any word is found then return zero regardless of the actual number of newlines.\n *\n * @param { string } text Input string.\n * @returns { number }\n */\n countNewlinesNoWords (text) {\n this.newlineOrNonWhitespaceRe.lastIndex = 0;\n let counter = 0;\n let match;\n while ((match = this.newlineOrNonWhitespaceRe.exec(text)) !== null) {\n if (match[0] === '\\n') {\n counter++;\n } else {\n return 0;\n }\n }\n return counter;\n }\n\n}\n\n/**\n * Helps to build text from inline and block elements.\n *\n * @class BlockTextBuilder\n */\nclass BlockTextBuilder {\n\n /**\n * Creates an instance of BlockTextBuilder.\n *\n * @param { Options } options HtmlToText options.\n * @param { import('selderee').Picker } picker Selectors decision tree picker.\n * @param { any} [metadata] Optional metadata for HTML document, for use in formatters.\n */\n constructor (options, picker, metadata = undefined) {\n this.options = options;\n this.picker = picker;\n this.metadata = metadata;\n this.whitespaceProcessor = new WhitespaceProcessor(options);\n /** @type { StackItem } */\n this._stackItem = new BlockStackItem(options);\n /** @type { TransformerStackItem } */\n this._wordTransformer = undefined;\n }\n\n /**\n * Put a word-by-word transform function onto the transformations stack.\n *\n * Mainly used for uppercasing. Can be bypassed to add unformatted text such as URLs.\n *\n * Word transformations applied before wrapping.\n *\n * @param { (str: string) => string } wordTransform Word transformation function.\n */\n pushWordTransform (wordTransform) {\n this._wordTransformer = new TransformerStackItem(this._wordTransformer, wordTransform);\n }\n\n /**\n * Remove a function from the word transformations stack.\n *\n * @returns { (str: string) => string } A function that was removed.\n */\n popWordTransform () {\n if (!this._wordTransformer) { return undefined; }\n const transform = this._wordTransformer.transform;\n this._wordTransformer = this._wordTransformer.next;\n return transform;\n }\n\n /**\n * Ignore wordwrap option in followup inline additions and disable automatic wrapping.\n */\n startNoWrap () {\n this._stackItem.isNoWrap = true;\n }\n\n /**\n * Return automatic wrapping to behavior defined by options.\n */\n stopNoWrap () {\n this._stackItem.isNoWrap = false;\n }\n\n /** @returns { (str: string) => string } */\n _getCombinedWordTransformer () {\n const wt = (this._wordTransformer)\n ? ((str) => applyTransformer(str, this._wordTransformer))\n : undefined;\n const ce = this.options.encodeCharacters;\n return (wt)\n ? ((ce) ? (str) => ce(wt(str)) : wt)\n : ce;\n }\n\n _popStackItem () {\n const item = this._stackItem;\n this._stackItem = item.next;\n return item;\n }\n\n /**\n * Add a line break into currently built block.\n */\n addLineBreak () {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n if (this._stackItem.isPre) {\n this._stackItem.rawText += '\\n';\n } else {\n this._stackItem.inlineTextBuilder.startNewLine();\n }\n }\n\n /**\n * Allow to break line in case directly following text will not fit.\n */\n addWordBreakOpportunity () {\n if (\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n ) {\n this._stackItem.inlineTextBuilder.wordBreakOpportunity = true;\n }\n }\n\n /**\n * Add a node inline into the currently built block.\n *\n * @param { string } str\n * Text content of a node to add.\n *\n * @param { object } [param1]\n * Object holding the parameters of the operation.\n *\n * @param { boolean } [param1.noWordTransform]\n * Ignore word transformers if there are any.\n * Don't encode characters as well.\n * (Use this for things like URL addresses).\n */\n addInline (str, { noWordTransform = false } = {}) {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n\n if (\n str.length === 0 || // empty string\n (\n this._stackItem.stashedLineBreaks && // stashed linebreaks make whitespace irrelevant\n !this.whitespaceProcessor.testContainsWords(str) // no words to add\n )\n ) { return; }\n\n if (this.options.preserveNewlines) {\n const newlinesNumber = this.whitespaceProcessor.countNewlinesNoWords(str);\n if (newlinesNumber > 0) {\n this._stackItem.inlineTextBuilder.startNewLine(newlinesNumber);\n // keep stashedLineBreaks unchanged\n return;\n }\n }\n\n if (this._stackItem.stashedLineBreaks) {\n this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n }\n this.whitespaceProcessor.shrinkWrapAdd(\n str,\n this._stackItem.inlineTextBuilder,\n (noWordTransform) ? undefined : this._getCombinedWordTransformer(),\n this._stackItem.isNoWrap\n );\n this._stackItem.stashedLineBreaks = 0; // inline text doesn't introduce line breaks\n }\n\n /**\n * Add a string inline into the currently built block.\n *\n * Use this for markup elements that don't have to adhere\n * to text layout rules.\n *\n * @param { string } str Text to add.\n */\n addLiteral (str) {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n\n if (str.length === 0) { return; }\n\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n\n if (this._stackItem.stashedLineBreaks) {\n this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n }\n this.whitespaceProcessor.addLiteral(\n str,\n this._stackItem.inlineTextBuilder,\n this._stackItem.isNoWrap\n );\n this._stackItem.stashedLineBreaks = 0;\n }\n\n /**\n * Start building a new block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any preceding block.\n *\n * @param { number } [param0.reservedLineLength]\n * Reserve this number of characters on each line for block markup.\n *\n * @param { boolean } [param0.isPre]\n * Should HTML whitespace be preserved inside this block.\n */\n openBlock ({ leadingLineBreaks = 1, reservedLineLength = 0, isPre = false } = {}) {\n const maxLineLength = Math.max(20, this._stackItem.inlineTextBuilder.maxLineLength - reservedLineLength);\n this._stackItem = new BlockStackItem(\n this.options,\n this._stackItem,\n leadingLineBreaks,\n maxLineLength\n );\n if (isPre) { this._stackItem.isPre = true; }\n }\n\n /**\n * Finalize currently built block, add it's content to the parent block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any following block.\n *\n * @param { (str: string) => string } [param0.blockTransform]\n * A function to transform the block text before adding to the parent block.\n * This happens after word wrap and should be used in combination with reserved line length\n * in order to keep line lengths correct.\n * Used for whole block markup.\n */\n closeBlock ({ trailingLineBreaks = 1, blockTransform = undefined } = {}) {\n const block = this._popStackItem();\n const blockText = (blockTransform) ? blockTransform(getText(block)) : getText(block);\n addText(this._stackItem, blockText, block.leadingLineBreaks, Math.max(block.stashedLineBreaks, trailingLineBreaks));\n }\n\n /**\n * Start building a new list.\n *\n * @param { object } [param0]\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.maxPrefixLength]\n * Length of the longest list item prefix.\n * If not supplied or too small then list items won't be aligned properly.\n *\n * @param { 'left' | 'right' } [param0.prefixAlign]\n * Specify how prefixes of different lengths have to be aligned\n * within a column.\n *\n * @param { number } [param0.interRowLineBreaks]\n * Minimum number of line breaks between list items.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any preceding block.\n */\n openList ({ maxPrefixLength = 0, prefixAlign = 'left', interRowLineBreaks = 1, leadingLineBreaks = 2 } = {}) {\n this._stackItem = new ListStackItem(this.options, this._stackItem, {\n interRowLineBreaks: interRowLineBreaks,\n leadingLineBreaks: leadingLineBreaks,\n maxLineLength: this._stackItem.inlineTextBuilder.maxLineLength,\n maxPrefixLength: maxPrefixLength,\n prefixAlign: prefixAlign\n });\n }\n\n /**\n * Start building a new list item.\n *\n * @param {object} param0\n * Object holding the parameters of the list item.\n *\n * @param { string } [param0.prefix]\n * Prefix for this list item (item number, bullet point, etc).\n */\n openListItem ({ prefix = '' } = {}) {\n if (!(this._stackItem instanceof ListStackItem)) {\n throw new Error('Can\\'t add a list item to something that is not a list! Check the formatter.');\n }\n const list = this._stackItem;\n const prefixLength = Math.max(prefix.length, list.maxPrefixLength);\n const maxLineLength = Math.max(20, list.inlineTextBuilder.maxLineLength - prefixLength);\n this._stackItem = new ListItemStackItem(this.options, list, {\n prefix: prefix,\n maxLineLength: maxLineLength,\n leadingLineBreaks: list.interRowLineBreaks\n });\n }\n\n /**\n * Finalize currently built list item, add it's content to the parent list.\n */\n closeListItem () {\n const listItem = this._popStackItem();\n const list = listItem.next;\n\n const prefixLength = Math.max(listItem.prefix.length, list.maxPrefixLength);\n const spacing = '\\n' + ' '.repeat(prefixLength);\n const prefix = (list.prefixAlign === 'right')\n ? listItem.prefix.padStart(prefixLength)\n : listItem.prefix.padEnd(prefixLength);\n const text = prefix + getText(listItem).replace(/\\n/g, spacing);\n\n addText(\n list,\n text,\n listItem.leadingLineBreaks,\n Math.max(listItem.stashedLineBreaks, list.interRowLineBreaks)\n );\n }\n\n /**\n * Finalize currently built list, add it's content to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any following block.\n */\n closeList ({ trailingLineBreaks = 2 } = {}) {\n const list = this._popStackItem();\n const text = getText(list);\n if (text) {\n addText(this._stackItem, text, list.leadingLineBreaks, trailingLineBreaks);\n }\n }\n\n /**\n * Start building a table.\n */\n openTable () {\n this._stackItem = new TableStackItem(this._stackItem);\n }\n\n /**\n * Start building a table row.\n */\n openTableRow () {\n if (!(this._stackItem instanceof TableStackItem)) {\n throw new Error('Can\\'t add a table row to something that is not a table! Check the formatter.');\n }\n this._stackItem = new TableRowStackItem(this._stackItem);\n }\n\n /**\n * Start building a table cell.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.maxColumnWidth]\n * Wrap cell content to this width. Fall back to global wordwrap value if undefined.\n */\n openTableCell ({ maxColumnWidth = undefined } = {}) {\n if (!(this._stackItem instanceof TableRowStackItem)) {\n throw new Error('Can\\'t add a table cell to something that is not a table row! Check the formatter.');\n }\n this._stackItem = new TableCellStackItem(this.options, this._stackItem, maxColumnWidth);\n }\n\n /**\n * Finalize currently built table cell and add it to parent table row's cells.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.colspan] How many columns this cell should occupy.\n * @param { number } [param0.rowspan] How many rows this cell should occupy.\n */\n closeTableCell ({ colspan = 1, rowspan = 1 } = {}) {\n const cell = this._popStackItem();\n const text = trimCharacter(getText(cell), '\\n');\n cell.next.cells.push({ colspan: colspan, rowspan: rowspan, text: text });\n }\n\n /**\n * Finalize currently built table row and add it to parent table's rows.\n */\n closeTableRow () {\n const row = this._popStackItem();\n row.next.rows.push(row.cells);\n }\n\n /**\n * Finalize currently built table and add the rendered text to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the table.\n *\n * @param { TablePrinter } param0.tableToString\n * A function to convert a table of stringified cells into a complete table.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This table should have at least this number of line breaks to separate if from any preceding block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This table should have at least this number of line breaks to separate it from any following block.\n */\n closeTable ({ tableToString, leadingLineBreaks = 2, trailingLineBreaks = 2 }) {\n const table = this._popStackItem();\n const output = tableToString(table.rows);\n if (output) {\n addText(this._stackItem, output, leadingLineBreaks, trailingLineBreaks);\n }\n }\n\n /**\n * Return the rendered text content of this builder.\n *\n * @returns { string }\n */\n toString () {\n return getText(this._stackItem.getRoot());\n // There should only be the root item if everything is closed properly.\n }\n\n}\n\nfunction getText (stackItem) {\n if (!(\n stackItem instanceof BlockStackItem\n || stackItem instanceof ListItemStackItem\n || stackItem instanceof TableCellStackItem\n )) {\n throw new Error('Only blocks, list items and table cells can be requested for text contents.');\n }\n return (stackItem.inlineTextBuilder.isEmpty())\n ? stackItem.rawText\n : stackItem.rawText + stackItem.inlineTextBuilder.toString();\n}\n\nfunction addText (stackItem, text, leadingLineBreaks, trailingLineBreaks) {\n if (!(\n stackItem instanceof BlockStackItem\n || stackItem instanceof ListItemStackItem\n || stackItem instanceof TableCellStackItem\n )) {\n throw new Error('Only blocks, list items and table cells can contain text.');\n }\n const parentText = getText(stackItem);\n const lineBreaks = Math.max(stackItem.stashedLineBreaks, leadingLineBreaks);\n stackItem.inlineTextBuilder.clear();\n if (parentText) {\n stackItem.rawText = parentText + '\\n'.repeat(lineBreaks) + text;\n } else {\n stackItem.rawText = text;\n stackItem.leadingLineBreaks = lineBreaks;\n }\n stackItem.stashedLineBreaks = trailingLineBreaks;\n}\n\n/**\n * @param { string } str A string to transform.\n * @param { TransformerStackItem } transformer A transformer item (with possible continuation).\n * @returns { string }\n */\nfunction applyTransformer (str, transformer) {\n return ((transformer) ? applyTransformer(transformer.transform(str), transformer.next) : str);\n}\n\n/**\n * Compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options (defaults, formatters, user options merged, deduplicated).\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */\nfunction compile$1 (options = {}) {\n const selectorsWithoutFormat = options.selectors.filter(s => !s.format);\n if (selectorsWithoutFormat.length) {\n throw new Error(\n 'Following selectors have no specified format: ' +\n selectorsWithoutFormat.map(s => `\\`${s.selector}\\``).join(', ')\n );\n }\n const picker = new DecisionTree(\n options.selectors.map(s => [s.selector, s])\n ).build(hp2Builder);\n\n if (typeof options.encodeCharacters !== 'function') {\n options.encodeCharacters = makeReplacerFromDict(options.encodeCharacters);\n }\n\n const baseSelectorsPicker = new DecisionTree(\n options.baseElements.selectors.map((s, i) => [s, i + 1])\n ).build(hp2Builder);\n function findBaseElements (dom) {\n return findBases(dom, options, baseSelectorsPicker);\n }\n\n const limitedWalk = limitedDepthRecursive(\n options.limits.maxDepth,\n recursiveWalk,\n function (dom, builder) {\n builder.addInline(options.limits.ellipsis || '');\n }\n );\n\n return function (html, metadata = undefined) {\n return process(html, metadata, options, picker, findBaseElements, limitedWalk);\n };\n}\n\n\n/**\n * Convert given HTML according to preprocessed options.\n *\n * @param { string } html HTML content to convert.\n * @param { any } metadata Optional metadata for HTML document, for use in formatters.\n * @param { Options } options HtmlToText options (preprocessed).\n * @param { import('selderee').Picker } picker\n * Tag definition picker for DOM nodes processing.\n * @param { (dom: DomNode[]) => DomNode[] } findBaseElements\n * Function to extract elements from HTML DOM\n * that will only be present in the output text.\n * @param { RecursiveCallback } walk Recursive callback.\n * @returns { string }\n */\nfunction process (html, metadata, options, picker, findBaseElements, walk) {\n const maxInputLength = options.limits.maxInputLength;\n if (maxInputLength && html && html.length > maxInputLength) {\n console.warn(\n `Input length ${html.length} is above allowed limit of ${maxInputLength}. Truncating without ellipsis.`\n );\n html = html.substring(0, maxInputLength);\n }\n\n const document = parseDocument(html, { decodeEntities: options.decodeEntities });\n const bases = findBaseElements(document.children);\n const builder = new BlockTextBuilder(options, picker, metadata);\n walk(bases, builder);\n return builder.toString();\n}\n\n\nfunction findBases (dom, options, baseSelectorsPicker) {\n const results = [];\n\n function recursiveWalk (walk, /** @type { DomNode[] } */ dom) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n for (const elem of dom) {\n if (elem.type !== 'tag') {\n continue;\n }\n const pickedSelectorIndex = baseSelectorsPicker.pick1(elem);\n if (pickedSelectorIndex > 0) {\n results.push({ selectorIndex: pickedSelectorIndex, element: elem });\n } else if (elem.children) {\n walk(elem.children);\n }\n if (results.length >= options.limits.maxBaseElements) {\n return;\n }\n }\n }\n\n const limitedWalk = limitedDepthRecursive(\n options.limits.maxDepth,\n recursiveWalk\n );\n limitedWalk(dom);\n\n if (options.baseElements.orderBy !== 'occurrence') { // 'selectors'\n results.sort((a, b) => a.selectorIndex - b.selectorIndex);\n }\n return (options.baseElements.returnDomByDefault && results.length === 0)\n ? dom\n : results.map(x => x.element);\n}\n\n/**\n * Function to walk through DOM nodes and accumulate their string representations.\n *\n * @param { RecursiveCallback } walk Recursive callback.\n * @param { DomNode[] } [dom] Nodes array to process.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @private\n */\nfunction recursiveWalk (walk, dom, builder) {\n if (!dom) { return; }\n\n const options = builder.options;\n\n const tooManyChildNodes = dom.length > options.limits.maxChildNodes;\n if (tooManyChildNodes) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n dom.push({\n data: options.limits.ellipsis,\n type: 'text'\n });\n }\n\n for (const elem of dom) {\n switch (elem.type) {\n case 'text': {\n builder.addInline(elem.data);\n break;\n }\n case 'tag': {\n const tagDefinition = builder.picker.pick1(elem);\n const format = options.formatters[tagDefinition.format];\n format(elem, walk, builder, tagDefinition.options || {});\n break;\n }\n }\n }\n\n return;\n}\n\n/**\n * @param { Object } dict\n * A dictionary where keys are characters to replace\n * and values are replacement strings.\n *\n * First code point from dict keys is used.\n * Compound emojis with ZWJ are not supported (not until Node 16).\n *\n * @returns { ((str: string) => string) | undefined }\n */\nfunction makeReplacerFromDict (dict) {\n if (!dict || Object.keys(dict).length === 0) {\n return undefined;\n }\n /** @type { [string, string][] } */\n const entries = Object.entries(dict).filter(([, v]) => v !== false);\n const regex = new RegExp(\n entries\n .map(([c]) => `(${unicodeEscape([...c][0])})`)\n .join('|'),\n 'g'\n );\n const values = entries.map(([, v]) => v);\n const replacer = (m, ...cgs) => values[cgs.findIndex(cg => cg)];\n return (str) => str.replace(regex, replacer);\n}\n\n/**\n * Dummy formatter that discards the input and does nothing.\n *\n * @type { FormatCallback }\n */\nfunction formatSkip (elem, walk, builder, formatOptions) {\n /* do nothing */\n}\n\n/**\n * Insert the given string literal inline instead of a tag.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineString (elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.string || '');\n}\n\n/**\n * Insert a block with the given string literal instead of a tag.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockString (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.addLiteral(formatOptions.string || '');\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process an inline-level element.\n *\n * @type { FormatCallback }\n */\nfunction formatInline (elem, walk, builder, formatOptions) {\n walk(elem.children, builder);\n}\n\n/**\n * Process a block-level container.\n *\n * @type { FormatCallback }\n */\nfunction formatBlock$1 (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\nfunction renderOpenTag (elem) {\n const attrs = (elem.attribs && elem.attribs.length)\n ? ' ' + Object.entries(elem.attribs)\n .map(([k, v]) => ((v === '') ? k : `${k}=${v.replace(/\"/g, '"')}`))\n .join(' ')\n : '';\n return `<${elem.name}${attrs}>`;\n}\n\nfunction renderCloseTag (elem) {\n return `${elem.name}>`;\n}\n\n/**\n * Render an element as inline HTML tag, walk through it's children.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineTag (elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral(renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral(renderCloseTag(elem));\n builder.stopNoWrap();\n}\n\n/**\n * Render an element as HTML block bag, walk through it's children.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockTag (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.startNoWrap();\n builder.addLiteral(renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral(renderCloseTag(elem));\n builder.stopNoWrap();\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Render an element with all it's children as inline HTML.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineHtml (elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral(\n render(elem, { decodeEntities: builder.options.decodeEntities })\n );\n builder.stopNoWrap();\n}\n\n/**\n * Render an element with all it's children as HTML block.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockHtml (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.startNoWrap();\n builder.addLiteral(\n render(elem, { decodeEntities: builder.options.decodeEntities })\n );\n builder.stopNoWrap();\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Render inline element wrapped with given strings.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineSurround (elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.prefix || '');\n walk(elem.children, builder);\n builder.addLiteral(formatOptions.suffix || '');\n}\n\nvar genericFormatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n block: formatBlock$1,\n blockHtml: formatBlockHtml,\n blockString: formatBlockString,\n blockTag: formatBlockTag,\n inline: formatInline,\n inlineHtml: formatInlineHtml,\n inlineString: formatInlineString,\n inlineSurround: formatInlineSurround,\n inlineTag: formatInlineTag,\n skip: formatSkip\n});\n\nfunction getRow (matrix, j) {\n if (!matrix[j]) { matrix[j] = []; }\n return matrix[j];\n}\n\nfunction findFirstVacantIndex (row, x = 0) {\n while (row[x]) { x++; }\n return x;\n}\n\nfunction transposeInPlace (matrix, maxSize) {\n for (let i = 0; i < maxSize; i++) {\n const rowI = getRow(matrix, i);\n for (let j = 0; j < i; j++) {\n const rowJ = getRow(matrix, j);\n if (rowI[j] || rowJ[i]) {\n const temp = rowI[j];\n rowI[j] = rowJ[i];\n rowJ[i] = temp;\n }\n }\n }\n}\n\nfunction putCellIntoLayout (cell, layout, baseRow, baseCol) {\n for (let r = 0; r < cell.rowspan; r++) {\n const layoutRow = getRow(layout, baseRow + r);\n for (let c = 0; c < cell.colspan; c++) {\n layoutRow[baseCol + c] = cell;\n }\n }\n}\n\nfunction getOrInitOffset (offsets, index) {\n if (offsets[index] === undefined) {\n offsets[index] = (index === 0) ? 0 : 1 + getOrInitOffset(offsets, index - 1);\n }\n return offsets[index];\n}\n\nfunction updateOffset (offsets, base, span, value) {\n offsets[base + span] = Math.max(\n getOrInitOffset(offsets, base + span),\n getOrInitOffset(offsets, base) + value\n );\n}\n\n/**\n * Render a table into a string.\n * Cells can contain multiline text and span across multiple rows and columns.\n *\n * Modifies cells to add lines array.\n *\n * @param { TablePrinterCell[][] } tableRows Table to render.\n * @param { number } rowSpacing Number of spaces between columns.\n * @param { number } colSpacing Number of empty lines between rows.\n * @returns { string }\n */\nfunction tableToString (tableRows, rowSpacing, colSpacing) {\n const layout = [];\n let colNumber = 0;\n const rowNumber = tableRows.length;\n const rowOffsets = [0];\n // Fill the layout table and row offsets row-by-row.\n for (let j = 0; j < rowNumber; j++) {\n const layoutRow = getRow(layout, j);\n const cells = tableRows[j];\n let x = 0;\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i];\n x = findFirstVacantIndex(layoutRow, x);\n putCellIntoLayout(cell, layout, j, x);\n x += cell.colspan;\n cell.lines = cell.text.split('\\n');\n const cellHeight = cell.lines.length;\n updateOffset(rowOffsets, j, cell.rowspan, cellHeight + rowSpacing);\n }\n colNumber = (layoutRow.length > colNumber) ? layoutRow.length : colNumber;\n }\n\n transposeInPlace(layout, (rowNumber > colNumber) ? rowNumber : colNumber);\n\n const outputLines = [];\n const colOffsets = [0];\n // Fill column offsets and output lines column-by-column.\n for (let x = 0; x < colNumber; x++) {\n let y = 0;\n let cell;\n const rowsInThisColumn = Math.min(rowNumber, layout[x].length);\n while (y < rowsInThisColumn) {\n cell = layout[x][y];\n if (cell) {\n if (!cell.rendered) {\n let cellWidth = 0;\n for (let j = 0; j < cell.lines.length; j++) {\n const line = cell.lines[j];\n const lineOffset = rowOffsets[y] + j;\n outputLines[lineOffset] = (outputLines[lineOffset] || '').padEnd(colOffsets[x]) + line;\n cellWidth = (line.length > cellWidth) ? line.length : cellWidth;\n }\n updateOffset(colOffsets, x, cell.colspan, cellWidth + colSpacing);\n cell.rendered = true;\n }\n y += cell.rowspan;\n } else {\n const lineOffset = rowOffsets[y];\n outputLines[lineOffset] = (outputLines[lineOffset] || '');\n y++;\n }\n }\n }\n\n return outputLines.join('\\n');\n}\n\n/**\n * Process a line-break.\n *\n * @type { FormatCallback }\n */\nfunction formatLineBreak (elem, walk, builder, formatOptions) {\n builder.addLineBreak();\n}\n\n/**\n * Process a `wbr` tag (word break opportunity).\n *\n * @type { FormatCallback }\n */\nfunction formatWbr (elem, walk, builder, formatOptions) {\n builder.addWordBreakOpportunity();\n}\n\n/**\n * Process a horizontal line.\n *\n * @type { FormatCallback }\n */\nfunction formatHorizontalLine (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.addInline('-'.repeat(formatOptions.length || builder.options.wordwrap || 40));\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a paragraph.\n *\n * @type { FormatCallback }\n */\nfunction formatParagraph (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a preformatted content.\n *\n * @type { FormatCallback }\n */\nfunction formatPre (elem, walk, builder, formatOptions) {\n builder.openBlock({\n isPre: true,\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a heading.\n *\n * @type { FormatCallback }\n */\nfunction formatHeading (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n if (formatOptions.uppercase !== false) {\n builder.pushWordTransform(str => str.toUpperCase());\n walk(elem.children, builder);\n builder.popWordTransform();\n } else {\n walk(elem.children, builder);\n }\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a blockquote.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockquote (elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2,\n reservedLineLength: 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2,\n blockTransform: str => ((formatOptions.trimEmptyLines !== false) ? trimCharacter(str, '\\n') : str)\n .split('\\n')\n .map(line => '> ' + line)\n .join('\\n')\n });\n}\n\nfunction withBrackets (str, brackets) {\n if (!brackets) { return str; }\n\n const lbr = (typeof brackets[0] === 'string')\n ? brackets[0]\n : '[';\n const rbr = (typeof brackets[1] === 'string')\n ? brackets[1]\n : ']';\n return lbr + str + rbr;\n}\n\nfunction pathRewrite (path, rewriter, baseUrl, metadata, elem) {\n const modifiedPath = (typeof rewriter === 'function')\n ? rewriter(path, metadata, elem)\n : path;\n return (modifiedPath[0] === '/' && baseUrl)\n ? trimCharacterEnd(baseUrl, '/') + modifiedPath\n : modifiedPath;\n}\n\n/**\n * Process an image.\n *\n * @type { FormatCallback }\n */\nfunction formatImage (elem, walk, builder, formatOptions) {\n const attribs = elem.attribs || {};\n const alt = (attribs.alt)\n ? attribs.alt\n : '';\n const src = (!attribs.src)\n ? ''\n : pathRewrite(attribs.src, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n const text = (!src)\n ? alt\n : (!alt)\n ? withBrackets(src, formatOptions.linkBrackets)\n : alt + ' ' + withBrackets(src, formatOptions.linkBrackets);\n\n builder.addInline(text, { noWordTransform: true });\n}\n\n// a img baseUrl\n// a img pathRewrite\n// a img linkBrackets\n\n// a ignoreHref: false\n// ignoreText ?\n// a noAnchorUrl: true\n// can be replaced with selector\n// a hideLinkHrefIfSameAsText: false\n// how to compare, what to show (text, href, normalized) ?\n// a mailto protocol removed without options\n\n// a protocols: mailto, tel, ...\n// can be matched with selector?\n\n// anchors, protocols - only if no pathRewrite fn is provided\n\n// normalize-url ?\n\n// a\n// a[href^=\"#\"] - format:skip by default\n// a[href^=\"mailto:\"] - ?\n\n/**\n * Process an anchor.\n *\n * @type { FormatCallback }\n */\nfunction formatAnchor (elem, walk, builder, formatOptions) {\n function getHref () {\n if (formatOptions.ignoreHref) { return ''; }\n if (!elem.attribs || !elem.attribs.href) { return ''; }\n let href = elem.attribs.href.replace(/^mailto:/, '');\n if (formatOptions.noAnchorUrl && href[0] === '#') { return ''; }\n href = pathRewrite(href, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n return href;\n }\n const href = getHref();\n if (!href) {\n walk(elem.children, builder);\n } else {\n let text = '';\n builder.pushWordTransform(\n str => {\n if (str) { text += str; }\n return str;\n }\n );\n walk(elem.children, builder);\n builder.popWordTransform();\n\n const hideSameLink = formatOptions.hideLinkHrefIfSameAsText && href === text;\n if (!hideSameLink) {\n builder.addInline(\n (!text)\n ? href\n : ' ' + withBrackets(href, formatOptions.linkBrackets),\n { noWordTransform: true }\n );\n }\n }\n}\n\n/**\n * @param { DomNode } elem List items with their prefixes.\n * @param { RecursiveCallback } walk Recursive callback to process child nodes.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @param { FormatOptions } formatOptions Options specific to a formatter.\n * @param { () => string } nextPrefixCallback Function that returns increasing index each time it is called.\n */\nfunction formatList (elem, walk, builder, formatOptions, nextPrefixCallback) {\n const isNestedList = get(elem, ['parent', 'name']) === 'li';\n\n // With Roman numbers, index length is not as straightforward as with Arabic numbers or letters,\n // so the dumb length comparison is the most robust way to get the correct value.\n let maxPrefixLength = 0;\n const listItems = (elem.children || [])\n // it might be more accurate to check only for html spaces here, but no significant benefit\n .filter(child => child.type !== 'text' || !/^\\s*$/.test(child.data))\n .map(function (child) {\n if (child.name !== 'li') {\n return { node: child, prefix: '' };\n }\n const prefix = (isNestedList)\n ? nextPrefixCallback().trimStart()\n : nextPrefixCallback();\n if (prefix.length > maxPrefixLength) { maxPrefixLength = prefix.length; }\n return { node: child, prefix: prefix };\n });\n if (!listItems.length) { return; }\n\n builder.openList({\n interRowLineBreaks: 1,\n leadingLineBreaks: isNestedList ? 1 : (formatOptions.leadingLineBreaks || 2),\n maxPrefixLength: maxPrefixLength,\n prefixAlign: 'left'\n });\n\n for (const { node, prefix } of listItems) {\n builder.openListItem({ prefix: prefix });\n walk([node], builder);\n builder.closeListItem();\n }\n\n builder.closeList({ trailingLineBreaks: isNestedList ? 1 : (formatOptions.trailingLineBreaks || 2) });\n}\n\n/**\n * Process an unordered list.\n *\n * @type { FormatCallback }\n */\nfunction formatUnorderedList (elem, walk, builder, formatOptions) {\n const prefix = formatOptions.itemPrefix || ' * ';\n return formatList(elem, walk, builder, formatOptions, () => prefix);\n}\n\n/**\n * Process an ordered list.\n *\n * @type { FormatCallback }\n */\nfunction formatOrderedList (elem, walk, builder, formatOptions) {\n let nextIndex = Number(elem.attribs.start || '1');\n const indexFunction = getOrderedListIndexFunction(elem.attribs.type);\n const nextPrefixCallback = () => ' ' + indexFunction(nextIndex++) + '. ';\n return formatList(elem, walk, builder, formatOptions, nextPrefixCallback);\n}\n\n/**\n * Return a function that can be used to generate index markers of a specified format.\n *\n * @param { string } [olType='1'] Marker type.\n * @returns { (i: number) => string }\n */\nfunction getOrderedListIndexFunction (olType = '1') {\n switch (olType) {\n case 'a': return (i) => numberToLetterSequence(i, 'a');\n case 'A': return (i) => numberToLetterSequence(i, 'A');\n case 'i': return (i) => numberToRoman(i).toLowerCase();\n case 'I': return (i) => numberToRoman(i);\n case '1':\n default: return (i) => (i).toString();\n }\n}\n\n/**\n * Given a list of class and ID selectors (prefixed with '.' and '#'),\n * return them as separate lists of names without prefixes.\n *\n * @param { string[] } selectors Class and ID selectors (`[\".class\", \"#id\"]` etc).\n * @returns { { classes: string[], ids: string[] } }\n */\nfunction splitClassesAndIds (selectors) {\n const classes = [];\n const ids = [];\n for (const selector of selectors) {\n if (selector.startsWith('.')) {\n classes.push(selector.substring(1));\n } else if (selector.startsWith('#')) {\n ids.push(selector.substring(1));\n }\n }\n return { classes: classes, ids: ids };\n}\n\nfunction isDataTable (attr, tables) {\n if (tables === true) { return true; }\n if (!attr) { return false; }\n\n const { classes, ids } = splitClassesAndIds(tables);\n const attrClasses = (attr['class'] || '').split(' ');\n const attrIds = (attr['id'] || '').split(' ');\n\n return attrClasses.some(x => classes.includes(x)) || attrIds.some(x => ids.includes(x));\n}\n\n/**\n * Process a table (either as a container or as a data table, depending on options).\n *\n * @type { FormatCallback }\n */\nfunction formatTable (elem, walk, builder, formatOptions) {\n return isDataTable(elem.attribs, builder.options.tables)\n ? formatDataTable(elem, walk, builder, formatOptions)\n : formatBlock(elem, walk, builder, formatOptions);\n}\n\nfunction formatBlock (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks });\n}\n\n/**\n * Process a data table.\n *\n * @type { FormatCallback }\n */\nfunction formatDataTable (elem, walk, builder, formatOptions) {\n builder.openTable();\n elem.children.forEach(walkTable);\n builder.closeTable({\n tableToString: (rows) => tableToString(rows, formatOptions.rowSpacing ?? 0, formatOptions.colSpacing ?? 3),\n leadingLineBreaks: formatOptions.leadingLineBreaks,\n trailingLineBreaks: formatOptions.trailingLineBreaks\n });\n\n function formatCell (cellNode) {\n const colspan = +get(cellNode, ['attribs', 'colspan']) || 1;\n const rowspan = +get(cellNode, ['attribs', 'rowspan']) || 1;\n builder.openTableCell({ maxColumnWidth: formatOptions.maxColumnWidth });\n walk(cellNode.children, builder);\n builder.closeTableCell({ colspan: colspan, rowspan: rowspan });\n }\n\n function walkTable (elem) {\n if (elem.type !== 'tag') { return; }\n\n const formatHeaderCell = (formatOptions.uppercaseHeaderCells !== false)\n ? (cellNode) => {\n builder.pushWordTransform(str => str.toUpperCase());\n formatCell(cellNode);\n builder.popWordTransform();\n }\n : formatCell;\n\n switch (elem.name) {\n case 'thead':\n case 'tbody':\n case 'tfoot':\n case 'center':\n elem.children.forEach(walkTable);\n return;\n\n case 'tr': {\n builder.openTableRow();\n for (const childOfTr of elem.children) {\n if (childOfTr.type !== 'tag') { continue; }\n switch (childOfTr.name) {\n case 'th': {\n formatHeaderCell(childOfTr);\n break;\n }\n case 'td': {\n formatCell(childOfTr);\n break;\n }\n // do nothing\n }\n }\n builder.closeTableRow();\n break;\n }\n // do nothing\n }\n }\n}\n\nvar textFormatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n anchor: formatAnchor,\n blockquote: formatBlockquote,\n dataTable: formatDataTable,\n heading: formatHeading,\n horizontalLine: formatHorizontalLine,\n image: formatImage,\n lineBreak: formatLineBreak,\n orderedList: formatOrderedList,\n paragraph: formatParagraph,\n pre: formatPre,\n table: formatTable,\n unorderedList: formatUnorderedList,\n wbr: formatWbr\n});\n\n/**\n * Default options.\n *\n * @constant\n * @type { Options }\n * @default\n * @private\n */\nconst DEFAULT_OPTIONS = {\n baseElements: {\n selectors: [ 'body' ],\n orderBy: 'selectors', // 'selectors' | 'occurrence'\n returnDomByDefault: true\n },\n decodeEntities: true,\n encodeCharacters: {},\n formatters: {},\n limits: {\n ellipsis: '...',\n maxBaseElements: undefined,\n maxChildNodes: undefined,\n maxDepth: undefined,\n maxInputLength: (1 << 24) // 16_777_216\n },\n longWordSplit: {\n forceWrapOnLimit: false,\n wrapCharacters: []\n },\n preserveNewlines: false,\n selectors: [\n { selector: '*', format: 'inline' },\n {\n selector: 'a',\n format: 'anchor',\n options: {\n baseUrl: null,\n hideLinkHrefIfSameAsText: false,\n ignoreHref: false,\n linkBrackets: ['[', ']'],\n noAnchorUrl: true\n }\n },\n { selector: 'article', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'aside', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'blockquote',\n format: 'blockquote',\n options: { leadingLineBreaks: 2, trailingLineBreaks: 2, trimEmptyLines: true }\n },\n { selector: 'br', format: 'lineBreak' },\n { selector: 'div', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'footer', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'form', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'h1', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h2', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h3', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h4', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h5', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h6', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'header', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'hr',\n format: 'horizontalLine',\n options: { leadingLineBreaks: 2, length: undefined, trailingLineBreaks: 2 }\n },\n {\n selector: 'img',\n format: 'image',\n options: { baseUrl: null, linkBrackets: ['[', ']'] }\n },\n { selector: 'main', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'nav', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'ol',\n format: 'orderedList',\n options: { leadingLineBreaks: 2, trailingLineBreaks: 2 }\n },\n { selector: 'p', format: 'paragraph', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'pre', format: 'pre', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'section', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'table',\n format: 'table',\n options: {\n colSpacing: 3,\n leadingLineBreaks: 2,\n maxColumnWidth: 60,\n rowSpacing: 0,\n trailingLineBreaks: 2,\n uppercaseHeaderCells: true\n }\n },\n {\n selector: 'ul',\n format: 'unorderedList',\n options: { itemPrefix: ' * ', leadingLineBreaks: 2, trailingLineBreaks: 2 }\n },\n { selector: 'wbr', format: 'wbr' },\n ],\n tables: [], // deprecated\n whitespaceCharacters: ' \\t\\r\\n\\f\\u200b',\n wordwrap: 80\n};\n\nconst concatMerge = (acc, src, options) => [...acc, ...src];\nconst overwriteMerge = (acc, src, options) => [...src];\nconst selectorsMerge = (acc, src, options) => (\n (acc.some(s => typeof s === 'object'))\n ? concatMerge(acc, src) // selectors\n : overwriteMerge(acc, src) // baseElements.selectors\n);\n\n/**\n * Preprocess options, compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options.\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */\nfunction compile (options = {}) {\n options = merge(\n DEFAULT_OPTIONS,\n options,\n {\n arrayMerge: overwriteMerge,\n customMerge: (key) => ((key === 'selectors') ? selectorsMerge : undefined)\n }\n );\n options.formatters = Object.assign({}, genericFormatters, textFormatters, options.formatters);\n options.selectors = mergeDuplicatesPreferLast(options.selectors, (s => s.selector));\n\n handleDeprecatedOptions(options);\n\n return compile$1(options);\n}\n\n/**\n * Convert given HTML content to plain text string.\n *\n * @param { string } html HTML content to convert.\n * @param { Options } [options = {}] HtmlToText options.\n * @param { any } [metadata] Optional metadata for HTML document, for use in formatters.\n * @returns { string } Plain text string.\n * @static\n *\n * @example\n * const { convert } = require('html-to-text');\n * const text = convert('Hello World ', {\n * wordwrap: 130\n * });\n * console.log(text); // HELLO WORLD\n */\nfunction convert (html, options = {}, metadata = undefined) {\n return compile(options)(html, metadata);\n}\n\n/**\n * Map previously existing and now deprecated options to the new options layout.\n * This is a subject for cleanup in major releases.\n *\n * @param { Options } options HtmlToText options.\n */\nfunction handleDeprecatedOptions (options) {\n if (options.tags) {\n const tagDefinitions = Object.entries(options.tags).map(\n ([selector, definition]) => ({ ...definition, selector: selector || '*' })\n );\n options.selectors.push(...tagDefinitions);\n options.selectors = mergeDuplicatesPreferLast(options.selectors, (s => s.selector));\n }\n\n function set (obj, path, value) {\n const valueKey = path.pop();\n for (const key of path) {\n let nested = obj[key];\n if (!nested) {\n nested = {};\n obj[key] = nested;\n }\n obj = nested;\n }\n obj[valueKey] = value;\n }\n\n if (options['baseElement']) {\n const baseElement = options['baseElement'];\n set(\n options,\n ['baseElements', 'selectors'],\n (Array.isArray(baseElement) ? baseElement : [baseElement])\n );\n }\n if (options['returnDomByDefault'] !== undefined) {\n set(options, ['baseElements', 'returnDomByDefault'], options['returnDomByDefault']);\n }\n\n for (const definition of options.selectors) {\n if (definition.format === 'anchor' && get(definition, ['options', 'noLinkBrackets'])) {\n set(definition, ['options', 'linkBrackets'], false);\n }\n }\n}\n\nexport { compile, convert, convert as htmlToText };\n","import { isTag } from 'domhandler';\nimport { Picker } from 'selderee';\n\nfunction hp2Builder(nodes) {\n return new Picker(handleArray(nodes));\n}\nfunction handleArray(nodes) {\n const matchers = nodes.map(handleNode);\n return (el, ...tail) => matchers.flatMap(m => m(el, ...tail));\n}\nfunction handleNode(node) {\n switch (node.type) {\n case 'terminal': {\n const result = [node.valueContainer];\n return (el, ...tail) => result;\n }\n case 'tagName':\n return handleTagName(node);\n case 'attrValue':\n return handleAttrValueName(node);\n case 'attrPresence':\n return handleAttrPresenceName(node);\n case 'pushElement':\n return handlePushElementNode(node);\n case 'popElement':\n return handlePopElementNode(node);\n }\n}\nfunction handleTagName(node) {\n const variants = {};\n for (const variant of node.variants) {\n variants[variant.value] = handleArray(variant.cont);\n }\n return (el, ...tail) => {\n const continuation = variants[el.name];\n return (continuation) ? continuation(el, ...tail) : [];\n };\n}\nfunction handleAttrPresenceName(node) {\n const attrName = node.name;\n const continuation = handleArray(node.cont);\n return (el, ...tail) => (Object.prototype.hasOwnProperty.call(el.attribs, attrName))\n ? continuation(el, ...tail)\n : [];\n}\nfunction handleAttrValueName(node) {\n const callbacks = [];\n for (const matcher of node.matchers) {\n const predicate = matcher.predicate;\n const continuation = handleArray(matcher.cont);\n callbacks.push((attr, el, ...tail) => (predicate(attr) ? continuation(el, ...tail) : []));\n }\n const attrName = node.name;\n return (el, ...tail) => {\n const attr = el.attribs[attrName];\n return (attr || attr === '')\n ? callbacks.flatMap(cb => cb(attr, el, ...tail))\n : [];\n };\n}\nfunction handlePushElementNode(node) {\n const continuation = handleArray(node.cont);\n const leftElementGetter = (node.combinator === '+')\n ? getPrecedingElement\n : getParentElement;\n return (el, ...tail) => {\n const next = leftElementGetter(el);\n if (next === null) {\n return [];\n }\n return continuation(next, el, ...tail);\n };\n}\nconst getPrecedingElement = (el) => {\n const prev = el.prev;\n if (prev === null) {\n return null;\n }\n return (isTag(prev)) ? prev : getPrecedingElement(prev);\n};\nconst getParentElement = (el) => {\n const parent = el.parent;\n return (parent && isTag(parent)) ? parent : null;\n};\nfunction handlePopElementNode(node) {\n const continuation = handleArray(node.cont);\n return (el, next, ...tail) => continuation(next, ...tail);\n}\n\nexport { hp2Builder };\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for `.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this.state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? State.BeforeSpecialS\n : State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeEntity(c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === CharCodes.Number) {\n this.state = State.BeforeNumericEntity;\n }\n else if (c === CharCodes.Amp) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n }\n stateInNamedEntity(c) {\n this.entityExcess += 1;\n this.trieIndex = determineBranch(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n const masked = this.trieCurrent & BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {\n this.trieIndex += valueLength;\n }\n else {\n // Add 1 as we have already incremented the excess\n const entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) {\n this.emitNamedEntity();\n }\n }\n }\n }\n emitNamedEntity() {\n this.state = this.baseState;\n if (this.entityResult === 0) {\n return;\n }\n const valueLength = (this.entityTrie[this.entityResult] & BinTrieFlags.VALUE_LENGTH) >>\n 14;\n switch (valueLength) {\n case 1: {\n this.emitCodePoint(this.entityTrie[this.entityResult] &\n ~BinTrieFlags.VALUE_LENGTH);\n break;\n }\n case 2: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n }\n case 3: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n }\n stateBeforeNumericEntity(c) {\n if ((c | 0x20) === CharCodes.LowerX) {\n this.entityExcess++;\n this.state = State.InHexEntity;\n }\n else {\n this.state = State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n }\n emitNumericEntity(strict) {\n const entityStart = this.index - this.entityExcess - 1;\n const numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint(replaceCodePoint(this.entityResult));\n }\n this.state = this.baseState;\n }\n stateInNumericEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n stateInHexEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else if (isHexDigit(c)) {\n this.entityResult =\n this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n allowLegacyEntity() {\n return (!this.xmlMode &&\n (this.baseState === State.Text ||\n this.baseState === State.InSpecialTag));\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InNamedEntity: {\n this.stateInNamedEntity(c);\n break;\n }\n case State.BeforeEntity: {\n this.stateBeforeEntity(c);\n break;\n }\n case State.InHexEntity: {\n this.stateInHexEntity(c);\n break;\n }\n case State.InNumericEntity: {\n this.stateInNumericEntity(c);\n break;\n }\n default: {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InNamedEntity) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InNumericEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InHexEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitPartial(start, endIndex) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribdata(start, endIndex);\n }\n else {\n this.cbs.ontext(start, endIndex);\n }\n }\n emitCodePoint(cp) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribentity(cp);\n }\n else {\n this.cbs.ontextentity(cp);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map",null,"\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;\nvar decode_data_html_js_1 = __importDefault(require(\"./generated/decode-data-html.js\"));\nexports.htmlDecodeTree = decode_data_html_js_1.default;\nvar decode_data_xml_js_1 = __importDefault(require(\"./generated/decode-data-xml.js\"));\nexports.xmlDecodeTree = decode_data_xml_js_1.default;\nvar decode_codepoint_js_1 = __importStar(require(\"./decode_codepoint.js\"));\nexports.decodeCodePoint = decode_codepoint_js_1.default;\nvar decode_codepoint_js_2 = require(\"./decode_codepoint.js\");\nObject.defineProperty(exports, \"replaceCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } });\nObject.defineProperty(exports, \"fromCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } });\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nvar TO_LOWER_BIT = 32;\nvar BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nvar DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nvar EntityDecoder = /** @class */ (function () {\n function EntityDecoder(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n EntityDecoder.prototype.startEntity = function (decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n };\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.write = function (str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n };\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericStart = function (str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n };\n EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) {\n if (start !== end) {\n var digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n };\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericHex = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n };\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericDecimal = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n };\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n };\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNamedEntity = function (str, offset) {\n var decodeTree = this.decodeTree;\n var current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n var char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n };\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () {\n var _a;\n var _b = this, result = _b.result, decodeTree = _b.decodeTree;\n var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n };\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) {\n var decodeTree = this.decodeTree;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n };\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.end = function () {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n };\n return EntityDecoder;\n}());\nexports.EntityDecoder = EntityDecoder;\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n var ret = \"\";\n var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); });\n return function decodeWithTrie(str, decodeMode) {\n var lastIndex = 0;\n var offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n var len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n var result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nfunction determineBranch(decodeTree, current, nodeIdx, char) {\n var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n var jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n var value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n var lo = nodeIdx;\n var hi = lo + branchCount - 1;\n while (lo <= hi) {\n var mid = (lo + hi) >>> 1;\n var midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nexports.determineBranch = determineBranch;\nvar htmlDecoder = getDecoder(decode_data_html_js_1.default);\nvar xmlDecoder = getDecoder(decode_data_xml_js_1.default);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nfunction decodeHTML(str, mode) {\n if (mode === void 0) { mode = DecodingMode.Legacy; }\n return htmlDecoder(str, mode);\n}\nexports.decodeHTML = decodeHTML;\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\nexports.decodeHTMLAttribute = decodeHTMLAttribute;\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeHTMLStrict = decodeHTMLStrict;\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeXML = decodeXML;\n//# sourceMappingURL=decode.js.map",null,"\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-html.js.map",null,"\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-xml.js.map",null,"\"use strict\";\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replaceCodePoint = exports.fromCodePoint = void 0;\nvar decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexports.fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nfunction replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nexports.replaceCodePoint = replaceCodePoint;\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nfunction decodeCodePoint(codePoint) {\n return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));\n}\nexports.default = decodeCodePoint;\n//# sourceMappingURL=decode_codepoint.js.map",null,"import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n",null,"import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for ` ` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring ``.\n this.sequenceIndex = Number(c === $75d60ee9abed1dd4$var$CharCodes.Lt);\n }\n stateCDATASequence(c) {\n if (c === $75d60ee9abed1dd4$var$Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === $75d60ee9abed1dd4$var$Sequences.Cdata.length) {\n this.state = $75d60ee9abed1dd4$var$State.InCommentLike;\n this.currentSequence = $75d60ee9abed1dd4$var$Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n } else {\n this.sequenceIndex = 0;\n this.state = $75d60ee9abed1dd4$var$State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */ fastForwardTo(c) {\n while(++this.index < this.buffer.length + this.offset){\n if (this.buffer.charCodeAt(this.index - this.offset) === c) return true;\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */ this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */ stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === $75d60ee9abed1dd4$var$Sequences.CdataEnd) this.cbs.oncdata(this.sectionStart, this.index, 2);\n else this.cbs.oncomment(this.sectionStart, this.index, 2);\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = $75d60ee9abed1dd4$var$State.Text;\n }\n } else if (this.sequenceIndex === 0) // Fast-forward to the first character of the sequence\n {\n if (this.fastForwardTo(this.currentSequence[0])) this.sequenceIndex = 1;\n } else if (c !== this.currentSequence[this.sequenceIndex - 1]) // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */ isTagStartChar(c) {\n return this.xmlMode ? !$75d60ee9abed1dd4$var$isEndOfTagSection(c) : $75d60ee9abed1dd4$var$isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = $75d60ee9abed1dd4$var$State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.ExclamationMark) {\n this.state = $75d60ee9abed1dd4$var$State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.Questionmark) {\n this.state = $75d60ee9abed1dd4$var$State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n } else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === $75d60ee9abed1dd4$var$Sequences.TitleEnd[2]) this.startSpecial($75d60ee9abed1dd4$var$Sequences.TitleEnd, 3);\n else this.state = !this.xmlMode && lower === $75d60ee9abed1dd4$var$Sequences.ScriptEnd[2] ? $75d60ee9abed1dd4$var$State.BeforeSpecialS : $75d60ee9abed1dd4$var$State.InTagName;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.Slash) this.state = $75d60ee9abed1dd4$var$State.BeforeClosingTagName;\n else {\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if ($75d60ee9abed1dd4$var$isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if ($75d60ee9abed1dd4$var$isWhitespace(c)) ;\n else if (c === $75d60ee9abed1dd4$var$CharCodes.Gt) this.state = $75d60ee9abed1dd4$var$State.Text;\n else {\n this.state = this.isTagStartChar(c) ? $75d60ee9abed1dd4$var$State.InClosingTagName : $75d60ee9abed1dd4$var$State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || $75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = $75d60ee9abed1dd4$var$State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.baseState = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = $75d60ee9abed1dd4$var$State.InSpecialTag;\n this.sequenceIndex = 0;\n } else this.state = $75d60ee9abed1dd4$var$State.Text;\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.Slash) this.state = $75d60ee9abed1dd4$var$State.InSelfClosingTag;\n else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.state = $75d60ee9abed1dd4$var$State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.baseState = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n } else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Eq || $75d60ee9abed1dd4$var$isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = $75d60ee9abed1dd4$var$State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Eq) this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeValue;\n else if (c === $75d60ee9abed1dd4$var$CharCodes.Slash || c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onattribend($75d60ee9abed1dd4$export$cbf5509cea2ad22.NoValue, this.index);\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n } else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.cbs.onattribend($75d60ee9abed1dd4$export$cbf5509cea2ad22.NoValue, this.index);\n this.state = $75d60ee9abed1dd4$var$State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.DoubleQuote) {\n this.state = $75d60ee9abed1dd4$var$State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n } else if (c === $75d60ee9abed1dd4$var$CharCodes.SingleQuote) {\n this.state = $75d60ee9abed1dd4$var$State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n } else if (!$75d60ee9abed1dd4$var$isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = $75d60ee9abed1dd4$var$State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === $75d60ee9abed1dd4$var$CharCodes.DoubleQuote ? $75d60ee9abed1dd4$export$cbf5509cea2ad22.Double : $75d60ee9abed1dd4$export$cbf5509cea2ad22.Single, this.index);\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n } else if (this.decodeEntities && c === $75d60ee9abed1dd4$var$CharCodes.Amp) {\n this.baseState = this.state;\n this.state = $75d60ee9abed1dd4$var$State.BeforeEntity;\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, $75d60ee9abed1dd4$var$CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, $75d60ee9abed1dd4$var$CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if ($75d60ee9abed1dd4$var$isWhitespace(c) || c === $75d60ee9abed1dd4$var$CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend($75d60ee9abed1dd4$export$cbf5509cea2ad22.Unquoted, this.index);\n this.state = $75d60ee9abed1dd4$var$State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n } else if (this.decodeEntities && c === $75d60ee9abed1dd4$var$CharCodes.Amp) {\n this.baseState = this.state;\n this.state = $75d60ee9abed1dd4$var$State.BeforeEntity;\n }\n }\n stateBeforeDeclaration(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.OpeningSquareBracket) {\n this.state = $75d60ee9abed1dd4$var$State.CDATASequence;\n this.sequenceIndex = 0;\n } else this.state = c === $75d60ee9abed1dd4$var$CharCodes.Dash ? $75d60ee9abed1dd4$var$State.BeforeComment : $75d60ee9abed1dd4$var$State.InDeclaration;\n }\n stateInDeclaration(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Dash) {\n this.state = $75d60ee9abed1dd4$var$State.InCommentLike;\n this.currentSequence = $75d60ee9abed1dd4$var$Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n } else this.state = $75d60ee9abed1dd4$var$State.InDeclaration;\n }\n stateInSpecialComment(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Gt || this.fastForwardTo($75d60ee9abed1dd4$var$CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = $75d60ee9abed1dd4$var$State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === $75d60ee9abed1dd4$var$Sequences.ScriptEnd[3]) this.startSpecial($75d60ee9abed1dd4$var$Sequences.ScriptEnd, 4);\n else if (lower === $75d60ee9abed1dd4$var$Sequences.StyleEnd[3]) this.startSpecial($75d60ee9abed1dd4$var$Sequences.StyleEnd, 4);\n else {\n this.state = $75d60ee9abed1dd4$var$State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeEntity(c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === $75d60ee9abed1dd4$var$CharCodes.Number) this.state = $75d60ee9abed1dd4$var$State.BeforeNumericEntity;\n else if (c === $75d60ee9abed1dd4$var$CharCodes.Amp) ;\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = $75d60ee9abed1dd4$var$State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n }\n stateInNamedEntity(c) {\n this.entityExcess += 1;\n this.trieIndex = (0, $14589e7572d0431f$exports.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n const masked = this.trieCurrent & (0, $14589e7572d0431f$exports.BinTrieFlags).VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== $75d60ee9abed1dd4$var$CharCodes.Semi) this.trieIndex += valueLength;\n else {\n // Add 1 as we have already incremented the excess\n const entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) this.emitPartial(this.sectionStart, entityStart);\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) this.emitNamedEntity();\n }\n }\n }\n emitNamedEntity() {\n this.state = this.baseState;\n if (this.entityResult === 0) return;\n const valueLength = (this.entityTrie[this.entityResult] & (0, $14589e7572d0431f$exports.BinTrieFlags).VALUE_LENGTH) >> 14;\n switch(valueLength){\n case 1:\n this.emitCodePoint(this.entityTrie[this.entityResult] & ~(0, $14589e7572d0431f$exports.BinTrieFlags).VALUE_LENGTH);\n break;\n case 2:\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n case 3:\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n stateBeforeNumericEntity(c) {\n if ((c | 0x20) === $75d60ee9abed1dd4$var$CharCodes.LowerX) {\n this.entityExcess++;\n this.state = $75d60ee9abed1dd4$var$State.InHexEntity;\n } else {\n this.state = $75d60ee9abed1dd4$var$State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n }\n emitNumericEntity(strict) {\n const entityStart = this.index - this.entityExcess - 1;\n const numberStart = entityStart + 2 + Number(this.state === $75d60ee9abed1dd4$var$State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) this.emitPartial(this.sectionStart, entityStart);\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint((0, $14589e7572d0431f$exports.replaceCodePoint)(this.entityResult));\n }\n this.state = this.baseState;\n }\n stateInNumericEntity(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Semi) this.emitNumericEntity(true);\n else if ($75d60ee9abed1dd4$var$isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - $75d60ee9abed1dd4$var$CharCodes.Zero);\n this.entityExcess++;\n } else {\n if (this.allowLegacyEntity()) this.emitNumericEntity(false);\n else this.state = this.baseState;\n this.index--;\n }\n }\n stateInHexEntity(c) {\n if (c === $75d60ee9abed1dd4$var$CharCodes.Semi) this.emitNumericEntity(true);\n else if ($75d60ee9abed1dd4$var$isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - $75d60ee9abed1dd4$var$CharCodes.Zero);\n this.entityExcess++;\n } else if ($75d60ee9abed1dd4$var$isHexDigit(c)) {\n this.entityResult = this.entityResult * 16 + ((c | 0x20) - $75d60ee9abed1dd4$var$CharCodes.LowerA + 10);\n this.entityExcess++;\n } else {\n if (this.allowLegacyEntity()) this.emitNumericEntity(false);\n else this.state = this.baseState;\n this.index--;\n }\n }\n allowLegacyEntity() {\n return !this.xmlMode && (this.baseState === $75d60ee9abed1dd4$var$State.Text || this.baseState === $75d60ee9abed1dd4$var$State.InSpecialTag);\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */ cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === $75d60ee9abed1dd4$var$State.Text || this.state === $75d60ee9abed1dd4$var$State.InSpecialTag && this.sequenceIndex === 0) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n } else if (this.state === $75d60ee9abed1dd4$var$State.InAttributeValueDq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueSq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */ parse() {\n while(this.shouldContinue()){\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch(this.state){\n case $75d60ee9abed1dd4$var$State.Text:\n this.stateText(c);\n break;\n case $75d60ee9abed1dd4$var$State.SpecialStartSequence:\n this.stateSpecialStartSequence(c);\n break;\n case $75d60ee9abed1dd4$var$State.InSpecialTag:\n this.stateInSpecialTag(c);\n break;\n case $75d60ee9abed1dd4$var$State.CDATASequence:\n this.stateCDATASequence(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeValueDq:\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeName:\n this.stateInAttributeName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InCommentLike:\n this.stateInCommentLike(c);\n break;\n case $75d60ee9abed1dd4$var$State.InSpecialComment:\n this.stateInSpecialComment(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeAttributeName:\n this.stateBeforeAttributeName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InTagName:\n this.stateInTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InClosingTagName:\n this.stateInClosingTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeTagName:\n this.stateBeforeTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.AfterAttributeName:\n this.stateAfterAttributeName(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeValueSq:\n this.stateInAttributeValueSingleQuotes(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeAttributeValue:\n this.stateBeforeAttributeValue(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeClosingTagName:\n this.stateBeforeClosingTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.AfterClosingTagName:\n this.stateAfterClosingTagName(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeSpecialS:\n this.stateBeforeSpecialS(c);\n break;\n case $75d60ee9abed1dd4$var$State.InAttributeValueNq:\n this.stateInAttributeValueNoQuotes(c);\n break;\n case $75d60ee9abed1dd4$var$State.InSelfClosingTag:\n this.stateInSelfClosingTag(c);\n break;\n case $75d60ee9abed1dd4$var$State.InDeclaration:\n this.stateInDeclaration(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeDeclaration:\n this.stateBeforeDeclaration(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeComment:\n this.stateBeforeComment(c);\n break;\n case $75d60ee9abed1dd4$var$State.InProcessingInstruction:\n this.stateInProcessingInstruction(c);\n break;\n case $75d60ee9abed1dd4$var$State.InNamedEntity:\n this.stateInNamedEntity(c);\n break;\n case $75d60ee9abed1dd4$var$State.BeforeEntity:\n this.stateBeforeEntity(c);\n break;\n case $75d60ee9abed1dd4$var$State.InHexEntity:\n this.stateInHexEntity(c);\n break;\n case $75d60ee9abed1dd4$var$State.InNumericEntity:\n this.stateInNumericEntity(c);\n break;\n default:\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === $75d60ee9abed1dd4$var$State.InNamedEntity) this.emitNamedEntity();\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */ handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.state === $75d60ee9abed1dd4$var$State.InCommentLike) {\n if (this.currentSequence === $75d60ee9abed1dd4$var$Sequences.CdataEnd) this.cbs.oncdata(this.sectionStart, endIndex, 0);\n else this.cbs.oncomment(this.sectionStart, endIndex, 0);\n } else if (this.state === $75d60ee9abed1dd4$var$State.InNumericEntity && this.allowLegacyEntity()) this.emitNumericEntity(false);\n else if (this.state === $75d60ee9abed1dd4$var$State.InHexEntity && this.allowLegacyEntity()) this.emitNumericEntity(false);\n else if (this.state === $75d60ee9abed1dd4$var$State.InTagName || this.state === $75d60ee9abed1dd4$var$State.BeforeAttributeName || this.state === $75d60ee9abed1dd4$var$State.BeforeAttributeValue || this.state === $75d60ee9abed1dd4$var$State.AfterAttributeName || this.state === $75d60ee9abed1dd4$var$State.InAttributeName || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueSq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueDq || this.state === $75d60ee9abed1dd4$var$State.InAttributeValueNq || this.state === $75d60ee9abed1dd4$var$State.InClosingTagName) ;\n else this.cbs.ontext(this.sectionStart, endIndex);\n }\n emitPartial(start, endIndex) {\n if (this.baseState !== $75d60ee9abed1dd4$var$State.Text && this.baseState !== $75d60ee9abed1dd4$var$State.InSpecialTag) this.cbs.onattribdata(start, endIndex);\n else this.cbs.ontext(start, endIndex);\n }\n emitCodePoint(cp) {\n if (this.baseState !== $75d60ee9abed1dd4$var$State.Text && this.baseState !== $75d60ee9abed1dd4$var$State.InSpecialTag) this.cbs.onattribentity(cp);\n else this.cbs.ontextentity(cp);\n }\n}\n\n\n\nconst $fde3d61a8539aed7$var$formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\"\n]);\nconst $fde3d61a8539aed7$var$pTag = new Set([\n \"p\"\n]);\nconst $fde3d61a8539aed7$var$tableSectionTags = new Set([\n \"thead\",\n \"tbody\"\n]);\nconst $fde3d61a8539aed7$var$ddtTags = new Set([\n \"dd\",\n \"dt\"\n]);\nconst $fde3d61a8539aed7$var$rtpTags = new Set([\n \"rt\",\n \"rp\"\n]);\nconst $fde3d61a8539aed7$var$openImpliesClose = new Map([\n [\n \"tr\",\n new Set([\n \"tr\",\n \"th\",\n \"td\"\n ])\n ],\n [\n \"th\",\n new Set([\n \"th\"\n ])\n ],\n [\n \"td\",\n new Set([\n \"thead\",\n \"th\",\n \"td\"\n ])\n ],\n [\n \"body\",\n new Set([\n \"head\",\n \"link\",\n \"script\"\n ])\n ],\n [\n \"li\",\n new Set([\n \"li\"\n ])\n ],\n [\n \"p\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"h1\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"h2\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"h3\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"h4\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"h5\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"h6\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"select\",\n $fde3d61a8539aed7$var$formTags\n ],\n [\n \"input\",\n $fde3d61a8539aed7$var$formTags\n ],\n [\n \"output\",\n $fde3d61a8539aed7$var$formTags\n ],\n [\n \"button\",\n $fde3d61a8539aed7$var$formTags\n ],\n [\n \"datalist\",\n $fde3d61a8539aed7$var$formTags\n ],\n [\n \"textarea\",\n $fde3d61a8539aed7$var$formTags\n ],\n [\n \"option\",\n new Set([\n \"option\"\n ])\n ],\n [\n \"optgroup\",\n new Set([\n \"optgroup\",\n \"option\"\n ])\n ],\n [\n \"dd\",\n $fde3d61a8539aed7$var$ddtTags\n ],\n [\n \"dt\",\n $fde3d61a8539aed7$var$ddtTags\n ],\n [\n \"address\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"article\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"aside\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"blockquote\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"details\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"div\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"dl\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"fieldset\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"figcaption\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"figure\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"footer\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"form\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"header\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"hr\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"main\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"nav\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"ol\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"pre\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"section\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"table\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"ul\",\n $fde3d61a8539aed7$var$pTag\n ],\n [\n \"rt\",\n $fde3d61a8539aed7$var$rtpTags\n ],\n [\n \"rp\",\n $fde3d61a8539aed7$var$rtpTags\n ],\n [\n \"tbody\",\n $fde3d61a8539aed7$var$tableSectionTags\n ],\n [\n \"tfoot\",\n $fde3d61a8539aed7$var$tableSectionTags\n ]\n]);\nconst $fde3d61a8539aed7$var$voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\"\n]);\nconst $fde3d61a8539aed7$var$foreignContextElements = new Set([\n \"math\",\n \"svg\"\n]);\nconst $fde3d61a8539aed7$var$htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\"\n]);\nconst $fde3d61a8539aed7$var$reNameEnd = /\\s|\\//;\nclass $fde3d61a8539aed7$export$7acfa6ed01010e37 {\n constructor(cbs, options = {}){\n var _a, _b, _c, _d, _e;\n this.options = options;\n /** The start index of the last event. */ this.startIndex = 0;\n /** The end index of the last event. */ this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */ this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.foreignContext = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */ this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */ this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;\n this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;\n this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : (0, $75d60ee9abed1dd4$export$2e2bcd8739ae039))(this.options, this);\n (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 || _e.call(_d, this);\n }\n // Tokenizer event handlers\n /** @internal */ ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 || _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */ ontextentity(cp) {\n var _a, _b;\n /*\n * Entities can be emitted on the character, or directly after.\n * We use the section start here to get accurate indices.\n */ const index = this.tokenizer.getSectionStart();\n this.endIndex = index - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 || _b.call(_a, (0, $14589e7572d0431f$exports.fromCodePoint)(cp));\n this.startIndex = index;\n }\n isVoidElement(name) {\n return !this.options.xmlMode && $fde3d61a8539aed7$var$voidElements.has(name);\n }\n /** @internal */ onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) name = name.toLowerCase();\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = !this.options.xmlMode && $fde3d61a8539aed7$var$openImpliesClose.get(name);\n if (impliesClose) while(this.stack.length > 0 && impliesClose.has(this.stack[this.stack.length - 1])){\n const element = this.stack.pop();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 || _b.call(_a, element, true);\n }\n if (!this.isVoidElement(name)) {\n this.stack.push(name);\n if ($fde3d61a8539aed7$var$foreignContextElements.has(name)) this.foreignContext.push(true);\n else if ($fde3d61a8539aed7$var$htmlIntegrationElements.has(name)) this.foreignContext.push(false);\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 || _d.call(_c, name);\n if (this.cbs.onopentag) this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 || _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) this.cbs.onclosetag(this.tagname, true);\n this.tagname = \"\";\n }\n /** @internal */ onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */ onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) name = name.toLowerCase();\n if ($fde3d61a8539aed7$var$foreignContextElements.has(name) || $fde3d61a8539aed7$var$htmlIntegrationElements.has(name)) this.foreignContext.pop();\n if (!this.isVoidElement(name)) {\n const pos = this.stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this.cbs.onclosetag) {\n let count = this.stack.length - pos;\n while(count--)// We know the stack has sufficient elements.\n this.cbs.onclosetag(this.stack.pop(), count !== 0);\n } else this.stack.length = pos;\n } else if (!this.options.xmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n } else if (!this.options.xmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 || _b.call(_a, \"br\");\n (_d = (_c = this.cbs).onopentag) === null || _d === void 0 || _d.call(_c, \"br\", {}, true);\n (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 || _f.call(_e, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */ onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.options.xmlMode || this.options.recognizeSelfClosing || this.foreignContext[this.foreignContext.length - 1]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n } else // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[this.stack.length - 1] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 || _b.call(_a, name, !isOpenImplied);\n this.stack.pop();\n }\n }\n /** @internal */ onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name;\n }\n /** @internal */ onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */ onattribentity(cp) {\n this.attribvalue += (0, $14589e7572d0431f$exports.fromCodePoint)(cp);\n }\n /** @internal */ onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 || _b.call(_a, this.attribname, this.attribvalue, quote === (0, $75d60ee9abed1dd4$export$cbf5509cea2ad22).Double ? '\"' : quote === (0, $75d60ee9abed1dd4$export$cbf5509cea2ad22).Single ? \"'\" : quote === (0, $75d60ee9abed1dd4$export$cbf5509cea2ad22).NoValue ? undefined : null);\n if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) this.attribs[this.attribname] = this.attribvalue;\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search($fde3d61a8539aed7$var$reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) name = name.toLowerCase();\n return name;\n }\n /** @internal */ ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */ onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */ oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 || _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 || _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */ oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (this.options.xmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 || _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 || _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 || _f.call(_e);\n } else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 || _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 || _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */ onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for(let index = this.stack.length; index > 0; this.cbs.onclosetag(this.stack[--index], true));\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 || _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */ reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 || _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 || _d.call(_c, this);\n this.buffers.length = 0;\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */ parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while(start - this.bufferOffset >= this.buffers[0].length)this.shiftBuffer();\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while(end - this.bufferOffset > this.buffers[0].length){\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */ write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 || _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */ end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 || _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk) this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */ pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */ resume() {\n this.tokenizer.resume();\n while(this.tokenizer.running && this.writeIndex < this.buffers.length)this.tokenizer.write(this.buffers[this.writeIndex++]);\n if (this.ended) this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */ parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */ done(chunk) {\n this.end(chunk);\n }\n}\n\n\n\n\nclass $f781defdc25f69c3$export$85c928794f8d04d4 {\n constructor(){\n /** Parent of the node */ this.parent = null;\n /** Previous sibling */ this.prev = null;\n /** Next sibling */ this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */ this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */ this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */ cloneNode(recursive = false) {\n return $f781defdc25f69c3$export$ae8e35ea29ddac22(this, recursive);\n }\n}\nclass $f781defdc25f69c3$export$c3569d91cd44d357 extends $f781defdc25f69c3$export$85c928794f8d04d4 {\n /**\n * @param data The content of the data node\n */ constructor(data){\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\nclass $f781defdc25f69c3$export$5f1af8db9871e1d6 extends $f781defdc25f69c3$export$c3569d91cd44d357 {\n constructor(){\n super(...arguments);\n this.type = (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Text;\n }\n get nodeType() {\n return 3;\n }\n}\nclass $f781defdc25f69c3$export$4d299b491347818a extends $f781defdc25f69c3$export$c3569d91cd44d357 {\n constructor(){\n super(...arguments);\n this.type = (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Comment;\n }\n get nodeType() {\n return 8;\n }\n}\nclass $f781defdc25f69c3$export$9269dce19ee35e96 extends $f781defdc25f69c3$export$c3569d91cd44d357 {\n constructor(name, data){\n super(data);\n this.name = name;\n this.type = (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Directive;\n }\n get nodeType() {\n return 1;\n }\n}\nclass $f781defdc25f69c3$export$62be934f90997196 extends $f781defdc25f69c3$export$85c928794f8d04d4 {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */ constructor(children){\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */ get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */ get lastChild() {\n return this.children.length > 0 ? this.children[this.children.length - 1] : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nclass $f781defdc25f69c3$export$1f8b8f7e5c763232 extends $f781defdc25f69c3$export$62be934f90997196 {\n constructor(){\n super(...arguments);\n this.type = (0, $15bfb7bf4e445d41$export$b992dc138d950e31).CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\nclass $f781defdc25f69c3$export$b34a105447964f9f extends $f781defdc25f69c3$export$62be934f90997196 {\n constructor(){\n super(...arguments);\n this.type = (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Root;\n }\n get nodeType() {\n return 9;\n }\n}\nclass $f781defdc25f69c3$export$db77ccec0bb4ccac extends $f781defdc25f69c3$export$62be934f90997196 {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */ constructor(name, attribs, children = [], type = name === \"script\" ? (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Script : name === \"style\" ? (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Style : (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Tag){\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */ get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name)=>{\n var _a, _b;\n return {\n name: name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name]\n };\n });\n }\n}\nfunction $f781defdc25f69c3$export$3bf645f08efe3292(node) {\n return (0, $15bfb7bf4e445d41$export$3bf645f08efe3292)(node);\n}\nfunction $f781defdc25f69c3$export$c2d65aed98d39b56(node) {\n return node.type === (0, $15bfb7bf4e445d41$export$b992dc138d950e31).CDATA;\n}\nfunction $f781defdc25f69c3$export$1879817ac5c922b7(node) {\n return node.type === (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Text;\n}\nfunction $f781defdc25f69c3$export$3ab01370f5e64ac8(node) {\n return node.type === (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Comment;\n}\nfunction $f781defdc25f69c3$export$4b5d79f26e0e3ad5(node) {\n return node.type === (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Directive;\n}\nfunction $f781defdc25f69c3$export$62858bae88b53fd0(node) {\n return node.type === (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Root;\n}\nfunction $f781defdc25f69c3$export$bd5ff50f0e53d41c(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nfunction $f781defdc25f69c3$export$ae8e35ea29ddac22(node, recursive = false) {\n let result;\n if ($f781defdc25f69c3$export$1879817ac5c922b7(node)) result = new $f781defdc25f69c3$export$5f1af8db9871e1d6(node.data);\n else if ($f781defdc25f69c3$export$3ab01370f5e64ac8(node)) result = new $f781defdc25f69c3$export$4d299b491347818a(node.data);\n else if ($f781defdc25f69c3$export$3bf645f08efe3292(node)) {\n const children = recursive ? $f781defdc25f69c3$var$cloneChildren(node.children) : [];\n const clone = new $f781defdc25f69c3$export$db77ccec0bb4ccac(node.name, {\n ...node.attribs\n }, children);\n children.forEach((child)=>child.parent = clone);\n if (node.namespace != null) clone.namespace = node.namespace;\n if (node[\"x-attribsNamespace\"]) clone[\"x-attribsNamespace\"] = {\n ...node[\"x-attribsNamespace\"]\n };\n if (node[\"x-attribsPrefix\"]) clone[\"x-attribsPrefix\"] = {\n ...node[\"x-attribsPrefix\"]\n };\n result = clone;\n } else if ($f781defdc25f69c3$export$c2d65aed98d39b56(node)) {\n const children = recursive ? $f781defdc25f69c3$var$cloneChildren(node.children) : [];\n const clone = new $f781defdc25f69c3$export$1f8b8f7e5c763232(children);\n children.forEach((child)=>child.parent = clone);\n result = clone;\n } else if ($f781defdc25f69c3$export$62858bae88b53fd0(node)) {\n const children = recursive ? $f781defdc25f69c3$var$cloneChildren(node.children) : [];\n const clone = new $f781defdc25f69c3$export$b34a105447964f9f(children);\n children.forEach((child)=>child.parent = clone);\n if (node[\"x-mode\"]) clone[\"x-mode\"] = node[\"x-mode\"];\n result = clone;\n } else if ($f781defdc25f69c3$export$4b5d79f26e0e3ad5(node)) {\n const instruction = new $f781defdc25f69c3$export$9269dce19ee35e96(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n } else throw new Error(`Not implemented yet: ${node.type}`);\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) result.sourceCodeLocation = node.sourceCodeLocation;\n return result;\n}\nfunction $f781defdc25f69c3$var$cloneChildren(childs) {\n const children = childs.map((child)=>$f781defdc25f69c3$export$ae8e35ea29ddac22(child, true));\n for(let i = 1; i < children.length; i++){\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n\n\n// Default options\nconst $ef7c620119bd03f2$var$defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false\n};\nclass $ef7c620119bd03f2$export$ff8ccbac9225de62 {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */ constructor(callback, options, elementCB){\n /** The elements of the DOM */ this.dom = [];\n /** The root element for the DOM */ this.root = new (0, $f781defdc25f69c3$export$b34a105447964f9f)(this.dom);\n /** Indicated whether parsing has been completed. */ this.done = false;\n /** Stack of open tags. */ this.tagStack = [\n this.root\n ];\n /** A data node that is still being written to. */ this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */ this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = $ef7c620119bd03f2$var$defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : $ef7c620119bd03f2$var$defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new (0, $f781defdc25f69c3$export$b34a105447964f9f)(this.dom);\n this.done = false;\n this.tagStack = [\n this.root\n ];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done) return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) elem.endIndex = this.parser.endIndex;\n if (this.elementCB) this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Tag : undefined;\n const element = new (0, $f781defdc25f69c3$export$db77ccec0bb4ccac)(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode: lastNode } = this;\n if (lastNode && lastNode.type === (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) lastNode.endIndex = this.parser.endIndex;\n } else {\n const node = new (0, $f781defdc25f69c3$export$5f1af8db9871e1d6)(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new (0, $f781defdc25f69c3$export$4d299b491347818a)(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new (0, $f781defdc25f69c3$export$5f1af8db9871e1d6)(\"\");\n const node = new (0, $f781defdc25f69c3$export$1f8b8f7e5c763232)([\n text\n ]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new (0, $f781defdc25f69c3$export$9269dce19ee35e96)(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") this.callback(error, this.dom);\n else if (error) throw error;\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) node.startIndex = this.parser.startIndex;\n if (this.options.withEndIndices) node.endIndex = this.parser.endIndex;\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nvar $ef7c620119bd03f2$export$2e2bcd8739ae039 = $ef7c620119bd03f2$export$ff8ccbac9225de62;\n\n\n\n\n\n/*\n * Module dependencies\n */ \n// Generated using scripts/write-decode-map.ts\nvar $d4540ff683f7394b$export$2e2bcd8739ae039 = new Uint16Array(// prettier-ignore\n'\\u1D41<\\xd5\\u0131\\u028A\\u049D\\u057B\\u05D0\\u0675\\u06DE\\u07A2\\u07D6\\u080F\\u0A4A\\u0A91\\u0DA1\\u0E6D\\u0F09\\u0F26\\u10CA\\u1228\\u12E1\\u1415\\u149D\\u14C3\\u14DF\\u1525\\0\\0\\0\\0\\0\\0\\u156B\\u16CD\\u198D\\u1C12\\u1DDD\\u1F7E\\u2060\\u21B0\\u228D\\u23C0\\u23FB\\u2442\\u2824\\u2912\\u2D08\\u2E48\\u2FCE\\u3016\\u32BA\\u3639\\u37AC\\u38FE\\u3A28\\u3A71\\u3AE0\\u3B2E\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803B\\xc6\\u40C6P\\u803B&\\u4026cute\\u803B\\xc1\\u40C1reve;\\u4102\\u0100iyx}rc\\u803B\\xc2\\u40C2;\\u4410r;\\uC000\\ud835\\udd04rave\\u803B\\xc0\\u40C0pha;\\u4391acr;\\u4100d;\\u6A53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uC000\\ud835\\udd38plyFunction;\\u6061ing\\u803B\\xc5\\u40C5\\u0100cs\\xbe\\xc3r;\\uC000\\ud835\\udc9cign;\\u6254ilde\\u803B\\xc3\\u40C3ml\\u803B\\xc4\\u40C4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011C\\u0122\\u0127\\u012A\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6AE7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010B\\u0114ause;\\u6235noullis;\\u612Ca;\\u4392r;\\uC000\\ud835\\udd05pf;\\uC000\\ud835\\udd39eve;\\u42D8c\\xf2\\u0113mpeq;\\u624E\\u0700HOacdefhilorsu\\u014D\\u0151\\u0156\\u0180\\u019E\\u01A2\\u01B5\\u01B7\\u01BA\\u01DC\\u0215\\u0273\\u0278\\u027Ecy;\\u4427PY\\u803B\\xa9\\u40A9\\u0180cpy\\u015D\\u0162\\u017Aute;\\u4106\\u0100;i\\u0167\\u0168\\u62D2talDifferentialD;\\u6145leys;\\u612D\\u0200aeio\\u0189\\u018E\\u0194\\u0198ron;\\u410Cdil\\u803B\\xc7\\u40C7rc;\\u4108nint;\\u6230ot;\\u410A\\u0100dn\\u01A7\\u01ADilla;\\u40B8terDot;\\u40B7\\xf2\\u017Fi;\\u43A7rcle\\u0200DMPT\\u01C7\\u01CB\\u01D1\\u01D6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01E2\\u01F8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020FoubleQuote;\\u601Duote;\\u6019\\u0200lnpu\\u021E\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6A74\\u0180git\\u022F\\u0236\\u023Aruent;\\u6261nt;\\u622FourIntegral;\\u622E\\u0100fr\\u024C\\u024E;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6A2Fcr;\\uC000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62D3ap;\\u624D\\u0580DJSZacefios\\u02A0\\u02AC\\u02B0\\u02B4\\u02B8\\u02CB\\u02D7\\u02E1\\u02E6\\u0333\\u048D\\u0100;o\\u0179\\u02A5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440F\\u0180grs\\u02BF\\u02C4\\u02C7ger;\\u6021r;\\u61A1hv;\\u6AE4\\u0100ay\\u02D0\\u02D5ron;\\u410E;\\u4414l\\u0100;t\\u02DD\\u02DE\\u6207a;\\u4394r;\\uC000\\ud835\\udd07\\u0100af\\u02EB\\u0327\\u0100cm\\u02F0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031Ccute;\\u40B4o\\u0174\\u030B\\u030D;\\u42D9bleAcute;\\u42DDrave;\\u4060ilde;\\u42DCond;\\u62C4ferentialD;\\u6146\\u0470\\u033D\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uC000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034D\\u40A8ot;\\u60DCqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03CF\\u03E2\\u03F8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037B\\xbb\\u0349nArrow;\\u61D3\\u0100eo\\u0387\\u03A4ft\\u0180ART\\u0390\\u0396\\u03A1rrow;\\u61D0ightArrow;\\u61D4e\\xe5\\u02CAng\\u0100LR\\u03AB\\u03C4eft\\u0100AR\\u03B3\\u03B9rrow;\\u67F8ightArrow;\\u67FAightArrow;\\u67F9ight\\u0100AT\\u03D8\\u03DErrow;\\u61D2ee;\\u62A8p\\u0241\\u03E9\\0\\0\\u03EFrrow;\\u61D1ownArrow;\\u61D5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042A\\u0430\\u045E\\u047F\\u037Crrow\\u0180;BU\\u041D\\u041E\\u0422\\u6193ar;\\u6913pArrow;\\u61F5reve;\\u4311eft\\u02D2\\u043A\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695Eector\\u0100;B\\u0459\\u045A\\u61BDar;\\u6956ight\\u01D4\\u0467\\0\\u0471eeVector;\\u695Fector\\u0100;B\\u047A\\u047B\\u61C1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62A4rrow;\\u61A7\\u0100ct\\u0492\\u0497r;\\uC000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04BD\\u04C0\\u04C4\\u04CB\\u04DE\\u04E2\\u04E7\\u04EE\\u04F5\\u0521\\u052F\\u0536\\u0552\\u055D\\u0560\\u0565G;\\u414AH\\u803B\\xd0\\u40D0cute\\u803B\\xc9\\u40C9\\u0180aiy\\u04D2\\u04D7\\u04DCron;\\u411Arc\\u803B\\xca\\u40CA;\\u442Dot;\\u4116r;\\uC000\\ud835\\udd08rave\\u803B\\xc8\\u40C8ement;\\u6208\\u0100ap\\u04FA\\u04FEcr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65FBerySmallSquare;\\u65AB\\u0100gp\\u0526\\u052Aon;\\u4118f;\\uC000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053C\\u0549l\\u0100;T\\u0542\\u0543\\u6A75ilde;\\u6242librium;\\u61CC\\u0100ci\\u0557\\u055Ar;\\u6130m;\\u6A73a;\\u4397ml\\u803B\\xcb\\u40CB\\u0100ip\\u056A\\u056Fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058D\\u05B2\\u05CCy;\\u4424r;\\uC000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05A3mallSquare;\\u65FCerySmallSquare;\\u65AA\\u0370\\u05BA\\0\\u05BF\\0\\0\\u05C4f;\\uC000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05CB\\u0600JTabcdfgorst\\u05E8\\u05EC\\u05EF\\u05FA\\u0600\\u0612\\u0616\\u061B\\u061D\\u0623\\u066C\\u0672cy;\\u4403\\u803B>\\u403Emma\\u0100;d\\u05F7\\u05F8\\u4393;\\u43DCreve;\\u411E\\u0180eiy\\u0607\\u060C\\u0610dil;\\u4122rc;\\u411C;\\u4413ot;\\u4120r;\\uC000\\ud835\\udd0a;\\u62D9pf;\\uC000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064E\\u0656\\u065B\\u0666qual\\u0100;L\\u063E\\u063F\\u6265ess;\\u62DBullEqual;\\u6267reater;\\u6AA2ess;\\u6277lantEqual;\\u6A7Eilde;\\u6273cr;\\uC000\\ud835\\udca2;\\u626B\\u0400Aacfiosu\\u0685\\u068B\\u0696\\u069B\\u069E\\u06AA\\u06BE\\u06CARDcy;\\u442A\\u0100ct\\u0690\\u0694ek;\\u42C7;\\u405Eirc;\\u4124r;\\u610ClbertSpace;\\u610B\\u01F0\\u06AF\\0\\u06B2f;\\u610DizontalLine;\\u6500\\u0100ct\\u06C3\\u06C5\\xf2\\u06A9rok;\\u4126mp\\u0144\\u06D0\\u06D8ownHum\\xf0\\u012Fqual;\\u624F\\u0700EJOacdfgmnostu\\u06FA\\u06FE\\u0703\\u0707\\u070E\\u071A\\u071E\\u0721\\u0728\\u0744\\u0778\\u078B\\u078F\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803B\\xcd\\u40CD\\u0100iy\\u0713\\u0718rc\\u803B\\xce\\u40CE;\\u4418ot;\\u4130r;\\u6111rave\\u803B\\xcc\\u40CC\\u0180;ap\\u0720\\u072F\\u073F\\u0100cg\\u0734\\u0737r;\\u412AinaryI;\\u6148lie\\xf3\\u03DD\\u01F4\\u0749\\0\\u0762\\u0100;e\\u074D\\u074E\\u622C\\u0100gr\\u0753\\u0758ral;\\u622Bsection;\\u62C2isible\\u0100CT\\u076C\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077F\\u0783\\u0788on;\\u412Ef;\\uC000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01EB\\u079A\\0\\u079Ecy;\\u4406l\\u803B\\xcf\\u40CF\\u0280cfosu\\u07AC\\u07B7\\u07BC\\u07C2\\u07D0\\u0100iy\\u07B1\\u07B5rc;\\u4134;\\u4419r;\\uC000\\ud835\\udd0dpf;\\uC000\\ud835\\udd41\\u01E3\\u07C7\\0\\u07CCr;\\uC000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07E4\\u07E8\\u07EC\\u07F1\\u07FD\\u0802\\u0808cy;\\u4425cy;\\u440Cppa;\\u439A\\u0100ey\\u07F6\\u07FBdil;\\u4136;\\u441Ar;\\uC000\\ud835\\udd0epf;\\uC000\\ud835\\udd42cr;\\uC000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082C\\u0850\\u0863\\u09B3\\u09B8\\u09C7\\u09CD\\u0A37\\u0A47cy;\\u4409\\u803B<\\u403C\\u0280cmnpr\\u0837\\u083C\\u0841\\u0844\\u084Dute;\\u4139bda;\\u439Bg;\\u67EAlacetrf;\\u6112r;\\u619E\\u0180aey\\u0857\\u085C\\u0861ron;\\u413Ddil;\\u413B;\\u441B\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087E\\u08A9\\u08B1\\u08E0\\u08E6\\u08FC\\u092F\\u095B\\u0390\\u096A\\u0100nr\\u0883\\u088FgleBracket;\\u67E8row\\u0180;BR\\u0899\\u089A\\u089E\\u6190ar;\\u61E4ightArrow;\\u61C6eiling;\\u6308o\\u01F5\\u08B7\\0\\u08C3bleBracket;\\u67E6n\\u01D4\\u08C8\\0\\u08D2eeVector;\\u6961ector\\u0100;B\\u08DB\\u08DC\\u61C3ar;\\u6959loor;\\u630Aight\\u0100AV\\u08EF\\u08F5rrow;\\u6194ector;\\u694E\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090A\\u0910\\u62A3rrow;\\u61A4ector;\\u695Aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62B2ar;\\u69CFqual;\\u62B4p\\u0180DTV\\u0937\\u0942\\u094CownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61BFar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61BCar;\\u6952ight\\xe1\\u039Cs\\u0300EFGLST\\u097E\\u098B\\u0995\\u099D\\u09A2\\u09ADqualGreater;\\u62DAullEqual;\\u6266reater;\\u6276ess;\\u6AA1lantEqual;\\u6A7Dilde;\\u6272r;\\uC000\\ud835\\udd0f\\u0100;e\\u09BD\\u09BE\\u62D8ftarrow;\\u61DAidot;\\u413F\\u0180npw\\u09D4\\u0A16\\u0A1Bg\\u0200LRlr\\u09DE\\u09F7\\u0A02\\u0A10eft\\u0100AR\\u09E6\\u09ECrrow;\\u67F5ightArrow;\\u67F7ightArrow;\\u67F6eft\\u0100ar\\u03B3\\u0A0Aight\\xe1\\u03BFight\\xe1\\u03CAf;\\uC000\\ud835\\udd43er\\u0100LR\\u0A22\\u0A2CeftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0A3E\\u0A40\\u0A42\\xf2\\u084C;\\u61B0rok;\\u4141;\\u626A\\u0400acefiosu\\u0A5A\\u0A5D\\u0A60\\u0A77\\u0A7C\\u0A85\\u0A8B\\u0A8Ep;\\u6905y;\\u441C\\u0100dl\\u0A65\\u0A6FiumSpace;\\u605Flintrf;\\u6133r;\\uC000\\ud835\\udd10nusPlus;\\u6213pf;\\uC000\\ud835\\udd44c\\xf2\\u0A76;\\u439C\\u0480Jacefostu\\u0AA3\\u0AA7\\u0AAD\\u0AC0\\u0B14\\u0B19\\u0D91\\u0D97\\u0D9Ecy;\\u440Acute;\\u4143\\u0180aey\\u0AB4\\u0AB9\\u0ABEron;\\u4147dil;\\u4145;\\u441D\\u0180gsw\\u0AC7\\u0AF0\\u0B0Eative\\u0180MTV\\u0AD3\\u0ADF\\u0AE8ediumSpace;\\u600Bhi\\u0100cn\\u0AE6\\u0AD8\\xeb\\u0AD9eryThi\\xee\\u0AD9ted\\u0100GL\\u0AF8\\u0B06reaterGreate\\xf2\\u0673essLes\\xf3\\u0A48Line;\\u400Ar;\\uC000\\ud835\\udd11\\u0200Bnpt\\u0B22\\u0B28\\u0B37\\u0B3Areak;\\u6060BreakingSpace;\\u40A0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0B55\\u0B56\\u0B6A\\u0B7C\\u0BA1\\u0BEB\\u0C04\\u0C5E\\u0C84\\u0CA6\\u0CD8\\u0D61\\u0D85\\u6AEC\\u0100ou\\u0B5B\\u0B64ngruent;\\u6262pCap;\\u626DoubleVerticalBar;\\u6226\\u0180lqx\\u0B83\\u0B8A\\u0B9Bement;\\u6209ual\\u0100;T\\u0B92\\u0B93\\u6260ilde;\\uC000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0BB6\\u0BB7\\u0BBD\\u0BC9\\u0BD3\\u0BD8\\u0BE5\\u626Fqual;\\u6271ullEqual;\\uC000\\u2267\\u0338reater;\\uC000\\u226B\\u0338ess;\\u6279lantEqual;\\uC000\\u2A7E\\u0338ilde;\\u6275ump\\u0144\\u0BF2\\u0BFDownHump;\\uC000\\u224E\\u0338qual;\\uC000\\u224F\\u0338e\\u0100fs\\u0C0A\\u0C27tTriangle\\u0180;BE\\u0C1A\\u0C1B\\u0C21\\u62EAar;\\uC000\\u29CF\\u0338qual;\\u62ECs\\u0300;EGLST\\u0C35\\u0C36\\u0C3C\\u0C44\\u0C4B\\u0C58\\u626Equal;\\u6270reater;\\u6278ess;\\uC000\\u226A\\u0338lantEqual;\\uC000\\u2A7D\\u0338ilde;\\u6274ested\\u0100GL\\u0C68\\u0C79reaterGreater;\\uC000\\u2AA2\\u0338essLess;\\uC000\\u2AA1\\u0338recedes\\u0180;ES\\u0C92\\u0C93\\u0C9B\\u6280qual;\\uC000\\u2AAF\\u0338lantEqual;\\u62E0\\u0100ei\\u0CAB\\u0CB9verseElement;\\u620CghtTriangle\\u0180;BE\\u0CCB\\u0CCC\\u0CD2\\u62EBar;\\uC000\\u29D0\\u0338qual;\\u62ED\\u0100qu\\u0CDD\\u0D0CuareSu\\u0100bp\\u0CE8\\u0CF9set\\u0100;E\\u0CF0\\u0CF3\\uC000\\u228F\\u0338qual;\\u62E2erset\\u0100;E\\u0D03\\u0D06\\uC000\\u2290\\u0338qual;\\u62E3\\u0180bcp\\u0D13\\u0D24\\u0D4Eset\\u0100;E\\u0D1B\\u0D1E\\uC000\\u2282\\u20D2qual;\\u6288ceeds\\u0200;EST\\u0D32\\u0D33\\u0D3B\\u0D46\\u6281qual;\\uC000\\u2AB0\\u0338lantEqual;\\u62E1ilde;\\uC000\\u227F\\u0338erset\\u0100;E\\u0D58\\u0D5B\\uC000\\u2283\\u20D2qual;\\u6289ilde\\u0200;EFT\\u0D6E\\u0D6F\\u0D75\\u0D7F\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uC000\\ud835\\udca9ilde\\u803B\\xd1\\u40D1;\\u439D\\u0700Eacdfgmoprstuv\\u0DBD\\u0DC2\\u0DC9\\u0DD5\\u0DDB\\u0DE0\\u0DE7\\u0DFC\\u0E02\\u0E20\\u0E22\\u0E32\\u0E3F\\u0E44lig;\\u4152cute\\u803B\\xd3\\u40D3\\u0100iy\\u0DCE\\u0DD3rc\\u803B\\xd4\\u40D4;\\u441Eblac;\\u4150r;\\uC000\\ud835\\udd12rave\\u803B\\xd2\\u40D2\\u0180aei\\u0DEE\\u0DF2\\u0DF6cr;\\u414Cga;\\u43A9cron;\\u439Fpf;\\uC000\\ud835\\udd46enCurly\\u0100DQ\\u0E0E\\u0E1AoubleQuote;\\u601Cuote;\\u6018;\\u6A54\\u0100cl\\u0E27\\u0E2Cr;\\uC000\\ud835\\udcaaash\\u803B\\xd8\\u40D8i\\u016C\\u0E37\\u0E3Cde\\u803B\\xd5\\u40D5es;\\u6A37ml\\u803B\\xd6\\u40D6er\\u0100BP\\u0E4B\\u0E60\\u0100ar\\u0E50\\u0E53r;\\u603Eac\\u0100ek\\u0E5A\\u0E5C;\\u63DEet;\\u63B4arenthesis;\\u63DC\\u0480acfhilors\\u0E7F\\u0E87\\u0E8A\\u0E8F\\u0E92\\u0E94\\u0E9D\\u0EB0\\u0EFCrtialD;\\u6202y;\\u441Fr;\\uC000\\ud835\\udd13i;\\u43A6;\\u43A0usMinus;\\u40B1\\u0100ip\\u0EA2\\u0EADncareplan\\xe5\\u069Df;\\u6119\\u0200;eio\\u0EB9\\u0EBA\\u0EE0\\u0EE4\\u6ABBcedes\\u0200;EST\\u0EC8\\u0EC9\\u0ECF\\u0EDA\\u627Aqual;\\u6AAFlantEqual;\\u627Cilde;\\u627Eme;\\u6033\\u0100dp\\u0EE9\\u0EEEuct;\\u620Fortion\\u0100;a\\u0225\\u0EF9l;\\u621D\\u0100ci\\u0F01\\u0F06r;\\uC000\\ud835\\udcab;\\u43A8\\u0200Ufos\\u0F11\\u0F16\\u0F1B\\u0F1FOT\\u803B\"\\u4022r;\\uC000\\ud835\\udd14pf;\\u611Acr;\\uC000\\ud835\\udcac\\u0600BEacefhiorsu\\u0F3E\\u0F43\\u0F47\\u0F60\\u0F73\\u0FA7\\u0FAA\\u0FAD\\u1096\\u10A9\\u10B4\\u10BEarr;\\u6910G\\u803B\\xae\\u40AE\\u0180cnr\\u0F4E\\u0F53\\u0F56ute;\\u4154g;\\u67EBr\\u0100;t\\u0F5C\\u0F5D\\u61A0l;\\u6916\\u0180aey\\u0F67\\u0F6C\\u0F71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0F78\\u0F79\\u611Cerse\\u0100EU\\u0F82\\u0F99\\u0100lq\\u0F87\\u0F8Eement;\\u620Builibrium;\\u61CBpEquilibrium;\\u696Fr\\xbb\\u0F79o;\\u43A1ght\\u0400ACDFTUVa\\u0FC1\\u0FEB\\u0FF3\\u1022\\u1028\\u105B\\u1087\\u03D8\\u0100nr\\u0FC6\\u0FD2gleBracket;\\u67E9row\\u0180;BL\\u0FDC\\u0FDD\\u0FE1\\u6192ar;\\u61E5eftArrow;\\u61C4eiling;\\u6309o\\u01F5\\u0FF9\\0\\u1005bleBracket;\\u67E7n\\u01D4\\u100A\\0\\u1014eeVector;\\u695Dector\\u0100;B\\u101D\\u101E\\u61C2ar;\\u6955loor;\\u630B\\u0100er\\u102D\\u1043e\\u0180;AV\\u1035\\u1036\\u103C\\u62A2rrow;\\u61A6ector;\\u695Biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62B3ar;\\u69D0qual;\\u62B5p\\u0180DTV\\u1063\\u106E\\u1078ownVector;\\u694FeeVector;\\u695Cector\\u0100;B\\u1082\\u1083\\u61BEar;\\u6954ector\\u0100;B\\u1091\\u1092\\u61C0ar;\\u6953\\u0100pu\\u109B\\u109Ef;\\u611DndImplies;\\u6970ightarrow;\\u61DB\\u0100ch\\u10B9\\u10BCr;\\u611B;\\u61B1leDelayed;\\u69F4\\u0680HOacfhimoqstu\\u10E4\\u10F1\\u10F7\\u10FD\\u1119\\u111E\\u1151\\u1156\\u1161\\u1167\\u11B5\\u11BB\\u11BF\\u0100Cc\\u10E9\\u10EEHcy;\\u4429y;\\u4428FTcy;\\u442Ccute;\\u415A\\u0280;aeiy\\u1108\\u1109\\u110E\\u1113\\u1117\\u6ABCron;\\u4160dil;\\u415Erc;\\u415C;\\u4421r;\\uC000\\ud835\\udd16ort\\u0200DLRU\\u112A\\u1134\\u113E\\u1149ownArrow\\xbb\\u041EeftArrow\\xbb\\u089AightArrow\\xbb\\u0FDDpArrow;\\u6191gma;\\u43A3allCircle;\\u6218pf;\\uC000\\ud835\\udd4a\\u0272\\u116D\\0\\0\\u1170t;\\u621Aare\\u0200;ISU\\u117B\\u117C\\u1189\\u11AF\\u65A1ntersection;\\u6293u\\u0100bp\\u118F\\u119Eset\\u0100;E\\u1197\\u1198\\u628Fqual;\\u6291erset\\u0100;E\\u11A8\\u11A9\\u6290qual;\\u6292nion;\\u6294cr;\\uC000\\ud835\\udcaear;\\u62C6\\u0200bcmp\\u11C8\\u11DB\\u1209\\u120B\\u0100;s\\u11CD\\u11CE\\u62D0et\\u0100;E\\u11CD\\u11D5qual;\\u6286\\u0100ch\\u11E0\\u1205eeds\\u0200;EST\\u11ED\\u11EE\\u11F4\\u11FF\\u627Bqual;\\u6AB0lantEqual;\\u627Dilde;\\u627FTh\\xe1\\u0F8C;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62D1rset\\u0100;E\\u121C\\u121D\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123E\\u1244\\u1249\\u1255\\u125E\\u1271\\u1276\\u129F\\u12C2\\u12C8\\u12D1ORN\\u803B\\xde\\u40DEADE;\\u6122\\u0100Hc\\u124E\\u1252cy;\\u440By;\\u4426\\u0100bu\\u125A\\u125C;\\u4009;\\u43A4\\u0180aey\\u1265\\u126A\\u126Fron;\\u4164dil;\\u4162;\\u4422r;\\uC000\\ud835\\udd17\\u0100ei\\u127B\\u1289\\u01F2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128E\\u1298kSpace;\\uC000\\u205F\\u200ASpace;\\u6009lde\\u0200;EFT\\u12AB\\u12AC\\u12B2\\u12BC\\u623Cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uC000\\ud835\\udd4bipleDot;\\u60DB\\u0100ct\\u12D6\\u12DBr;\\uC000\\ud835\\udcafrok;\\u4166\\u0AE1\\u12F7\\u130E\\u131A\\u1326\\0\\u132C\\u1331\\0\\0\\0\\0\\0\\u1338\\u133D\\u1377\\u1385\\0\\u13FF\\u1404\\u140A\\u1410\\u0100cr\\u12FB\\u1301ute\\u803B\\xda\\u40DAr\\u0100;o\\u1307\\u1308\\u619Fcir;\\u6949r\\u01E3\\u1313\\0\\u1316y;\\u440Eve;\\u416C\\u0100iy\\u131E\\u1323rc\\u803B\\xdb\\u40DB;\\u4423blac;\\u4170r;\\uC000\\ud835\\udd18rave\\u803B\\xd9\\u40D9acr;\\u416A\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135D\\u0100ar\\u134D\\u1350r;\\u405Fac\\u0100ek\\u1357\\u1359;\\u63DFet;\\u63B5arenthesis;\\u63DDon\\u0100;P\\u1370\\u1371\\u62C3lus;\\u628E\\u0100gp\\u137B\\u137Fon;\\u4172f;\\uC000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13AE\\u13B8\\u13C4\\u03E8\\u13D2\\u13D7\\u13F3rrow\\u0180;BD\\u1150\\u13A0\\u13A4ar;\\u6912ownArrow;\\u61C5ownArrow;\\u6195quilibrium;\\u696Eee\\u0100;A\\u13CB\\u13CC\\u62A5rrow;\\u61A5own\\xe1\\u03F3er\\u0100LR\\u13DE\\u13E8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13F9\\u13FA\\u43D2on;\\u43A5ing;\\u416Ecr;\\uC000\\ud835\\udcb0ilde;\\u4168ml\\u803B\\xdc\\u40DC\\u0480Dbcdefosv\\u1427\\u142C\\u1430\\u1433\\u143E\\u1485\\u148A\\u1490\\u1496ash;\\u62ABar;\\u6AEBy;\\u4412ash\\u0100;l\\u143B\\u143C\\u62A9;\\u6AE6\\u0100er\\u1443\\u1445;\\u62C1\\u0180bty\\u144C\\u1450\\u147Aar;\\u6016\\u0100;i\\u144F\\u1455cal\\u0200BLST\\u1461\\u1465\\u146A\\u1474ar;\\u6223ine;\\u407Ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600Ar;\\uC000\\ud835\\udd19pf;\\uC000\\ud835\\udd4dcr;\\uC000\\ud835\\udcb1dash;\\u62AA\\u0280cefos\\u14A7\\u14AC\\u14B1\\u14B6\\u14BCirc;\\u4174dge;\\u62C0r;\\uC000\\ud835\\udd1apf;\\uC000\\ud835\\udd4ecr;\\uC000\\ud835\\udcb2\\u0200fios\\u14CB\\u14D0\\u14D2\\u14D8r;\\uC000\\ud835\\udd1b;\\u439Epf;\\uC000\\ud835\\udd4fcr;\\uC000\\ud835\\udcb3\\u0480AIUacfosu\\u14F1\\u14F5\\u14F9\\u14FD\\u1504\\u150F\\u1514\\u151A\\u1520cy;\\u442Fcy;\\u4407cy;\\u442Ecute\\u803B\\xdd\\u40DD\\u0100iy\\u1509\\u150Drc;\\u4176;\\u442Br;\\uC000\\ud835\\udd1cpf;\\uC000\\ud835\\udd50cr;\\uC000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153F\\u154B\\u154F\\u155D\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417D;\\u4417ot;\\u417B\\u01F2\\u1554\\0\\u155BoWidt\\xe8\\u0AD9a;\\u4396r;\\u6128pf;\\u6124cr;\\uC000\\ud835\\udcb5\\u0BE1\\u1583\\u158A\\u1590\\0\\u15B0\\u15B6\\u15BF\\0\\0\\0\\0\\u15C6\\u15DB\\u15EB\\u165F\\u166D\\0\\u1695\\u169B\\u16B2\\u16B9\\0\\u16BEcute\\u803B\\xe1\\u40E1reve;\\u4103\\u0300;Ediuy\\u159C\\u159D\\u15A1\\u15A3\\u15A8\\u15AD\\u623E;\\uC000\\u223E\\u0333;\\u623Frc\\u803B\\xe2\\u40E2te\\u80BB\\xb4\\u0306;\\u4430lig\\u803B\\xe6\\u40E6\\u0100;r\\xb2\\u15BA;\\uC000\\ud835\\udd1erave\\u803B\\xe0\\u40E0\\u0100ep\\u15CA\\u15D6\\u0100fp\\u15CF\\u15D4sym;\\u6135\\xe8\\u15D3ha;\\u43B1\\u0100ap\\u15DFc\\u0100cl\\u15E4\\u15E7r;\\u4101g;\\u6A3F\\u0264\\u15F0\\0\\0\\u160A\\u0280;adsv\\u15FA\\u15FB\\u15FF\\u1601\\u1607\\u6227nd;\\u6A55;\\u6A5Clope;\\u6A58;\\u6A5A\\u0380;elmrsz\\u1618\\u1619\\u161B\\u161E\\u163F\\u164F\\u1659\\u6220;\\u69A4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163A\\u163C\\u163E;\\u69A8;\\u69A9;\\u69AA;\\u69AB;\\u69AC;\\u69AD;\\u69AE;\\u69AFt\\u0100;v\\u1645\\u1646\\u621Fb\\u0100;d\\u164C\\u164D\\u62BE;\\u699D\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637C\\u0100gp\\u1663\\u1667on;\\u4105f;\\uC000\\ud835\\udd52\\u0380;Eaeiop\\u12C1\\u167B\\u167D\\u1682\\u1684\\u1687\\u168A;\\u6A70cir;\\u6A6F;\\u624Ad;\\u624Bs;\\u4027rox\\u0100;e\\u12C1\\u1692\\xf1\\u1683ing\\u803B\\xe5\\u40E5\\u0180cty\\u16A1\\u16A6\\u16A8r;\\uC000\\ud835\\udcb6;\\u402Amp\\u0100;e\\u12C1\\u16AF\\xf1\\u0288ilde\\u803B\\xe3\\u40E3ml\\u803B\\xe4\\u40E4\\u0100ci\\u16C2\\u16C8onin\\xf4\\u0272nt;\\u6A11\\u0800Nabcdefiklnoprsu\\u16ED\\u16F1\\u1730\\u173C\\u1743\\u1748\\u1778\\u177D\\u17E0\\u17E6\\u1839\\u1850\\u170D\\u193D\\u1948\\u1970ot;\\u6AED\\u0100cr\\u16F6\\u171Ek\\u0200ceps\\u1700\\u1705\\u170D\\u1713ong;\\u624Cpsilon;\\u43F6rime;\\u6035im\\u0100;e\\u171A\\u171B\\u623Dq;\\u62CD\\u0176\\u1722\\u1726ee;\\u62BDed\\u0100;g\\u172C\\u172D\\u6305e\\xbb\\u172Drk\\u0100;t\\u135C\\u1737brk;\\u63B6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601E\\u0280cmprt\\u1753\\u175B\\u1761\\u1764\\u1768aus\\u0100;e\\u010A\\u0109ptyv;\\u69B0s\\xe9\\u170Cno\\xf5\\u0113\\u0180ahw\\u176F\\u1771\\u1773;\\u43B2;\\u6136een;\\u626Cr;\\uC000\\ud835\\udd1fg\\u0380costuvw\\u178D\\u179D\\u17B3\\u17C1\\u17D5\\u17DB\\u17DE\\u0180aiu\\u1794\\u1796\\u179A\\xf0\\u0760rc;\\u65EFp\\xbb\\u1371\\u0180dpt\\u17A4\\u17A8\\u17ADot;\\u6A00lus;\\u6A01imes;\\u6A02\\u0271\\u17B9\\0\\0\\u17BEcup;\\u6A06ar;\\u6605riangle\\u0100du\\u17CD\\u17D2own;\\u65BDp;\\u65B3plus;\\u6A04e\\xe5\\u1444\\xe5\\u14ADarow;\\u690D\\u0180ako\\u17ED\\u1826\\u1835\\u0100cn\\u17F2\\u1823k\\u0180lst\\u17FA\\u05AB\\u1802ozenge;\\u69EBriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181D\\u65B4own;\\u65BEeft;\\u65C2ight;\\u65B8k;\\u6423\\u01B1\\u182B\\0\\u1833\\u01B2\\u182F\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183E\\u184D\\u0100;q\\u1843\\u1846\\uC000=\\u20E5uiv;\\uC000\\u2261\\u20E5t;\\u6310\\u0200ptwx\\u1859\\u185E\\u1867\\u186Cf;\\uC000\\ud835\\udd53\\u0100;t\\u13CB\\u1863om\\xbb\\u13CCtie;\\u62C8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18AA\\u18BB\\u18D7\\u18DB\\u18EC\\u18FF\\u1905\\u190A\\u1910\\u1921\\u0200LRlr\\u188E\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18A1\\u18A2\\u18A4\\u18A6\\u18A8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18B3\\u18B5\\u18B7\\u18B9;\\u655D;\\u655A;\\u655C;\\u6559\\u0380;HLRhlr\\u18CA\\u18CB\\u18CD\\u18CF\\u18D1\\u18D3\\u18D5\\u6551;\\u656C;\\u6563;\\u6560;\\u656B;\\u6562;\\u655Fox;\\u69C9\\u0200LRlr\\u18E4\\u18E6\\u18E8\\u18EA;\\u6555;\\u6552;\\u6510;\\u650C\\u0280;DUdu\\u06BD\\u18F7\\u18F9\\u18FB\\u18FD;\\u6565;\\u6568;\\u652C;\\u6534inus;\\u629Flus;\\u629Eimes;\\u62A0\\u0200LRlr\\u1919\\u191B\\u191D\\u191F;\\u655B;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193B\\u6502;\\u656A;\\u6561;\\u655E;\\u653C;\\u6524;\\u651C\\u0100ev\\u0123\\u1942bar\\u803B\\xa6\\u40A6\\u0200ceio\\u1951\\u1956\\u195A\\u1960r;\\uC000\\ud835\\udcb7mi;\\u604Fm\\u0100;e\\u171A\\u171Cl\\u0180;bh\\u1968\\u1969\\u196B\\u405C;\\u69C5sub;\\u67C8\\u016C\\u1974\\u197El\\u0100;e\\u1979\\u197A\\u6022t\\xbb\\u197Ap\\u0180;Ee\\u012F\\u1985\\u1987;\\u6AAE\\u0100;q\\u06DC\\u06DB\\u0CE1\\u19A7\\0\\u19E8\\u1A11\\u1A15\\u1A32\\0\\u1A37\\u1A50\\0\\0\\u1AB4\\0\\0\\u1AC1\\0\\0\\u1B21\\u1B2E\\u1B4D\\u1B52\\0\\u1BFD\\0\\u1C0C\\u0180cpr\\u19AD\\u19B2\\u19DDute;\\u4107\\u0300;abcds\\u19BF\\u19C0\\u19C4\\u19CA\\u19D5\\u19D9\\u6229nd;\\u6A44rcup;\\u6A49\\u0100au\\u19CF\\u19D2p;\\u6A4Bp;\\u6A47ot;\\u6A40;\\uC000\\u2229\\uFE00\\u0100eo\\u19E2\\u19E5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19F0\\u19FB\\u1A01\\u1A05\\u01F0\\u19F5\\0\\u19F8s;\\u6A4Don;\\u410Ddil\\u803B\\xe7\\u40E7rc;\\u4109ps\\u0100;s\\u1A0C\\u1A0D\\u6A4Cm;\\u6A50ot;\\u410B\\u0180dmn\\u1A1B\\u1A20\\u1A26il\\u80BB\\xb8\\u01ADptyv;\\u69B2t\\u8100\\xa2;e\\u1A2D\\u1A2E\\u40A2r\\xe4\\u01B2r;\\uC000\\ud835\\udd20\\u0180cei\\u1A3D\\u1A40\\u1A4Dy;\\u4447ck\\u0100;m\\u1A47\\u1A48\\u6713ark\\xbb\\u1A48;\\u43C7r\\u0380;Ecefms\\u1A5F\\u1A60\\u1A62\\u1A6B\\u1AA4\\u1AAA\\u1AAE\\u65CB;\\u69C3\\u0180;el\\u1A69\\u1A6A\\u1A6D\\u42C6q;\\u6257e\\u0261\\u1A74\\0\\0\\u1A88rrow\\u0100lr\\u1A7C\\u1A81eft;\\u61BAight;\\u61BB\\u0280RSacd\\u1A92\\u1A94\\u1A96\\u1A9A\\u1A9F\\xbb\\u0F47;\\u64C8st;\\u629Birc;\\u629Aash;\\u629Dnint;\\u6A10id;\\u6AEFcir;\\u69C2ubs\\u0100;u\\u1ABB\\u1ABC\\u6663it\\xbb\\u1ABC\\u02EC\\u1AC7\\u1AD4\\u1AFA\\0\\u1B0Aon\\u0100;e\\u1ACD\\u1ACE\\u403A\\u0100;q\\xc7\\xc6\\u026D\\u1AD9\\0\\0\\u1AE2a\\u0100;t\\u1ADE\\u1ADF\\u402C;\\u4040\\u0180;fl\\u1AE8\\u1AE9\\u1AEB\\u6201\\xee\\u1160e\\u0100mx\\u1AF1\\u1AF6ent\\xbb\\u1AE9e\\xf3\\u024D\\u01E7\\u1AFE\\0\\u1B07\\u0100;d\\u12BB\\u1B02ot;\\u6A6Dn\\xf4\\u0246\\u0180fry\\u1B10\\u1B14\\u1B17;\\uC000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1B1Dr;\\u6117\\u0100ao\\u1B25\\u1B29rr;\\u61B5ss;\\u6717\\u0100cu\\u1B32\\u1B37r;\\uC000\\ud835\\udcb8\\u0100bp\\u1B3C\\u1B44\\u0100;e\\u1B41\\u1B42\\u6ACF;\\u6AD1\\u0100;e\\u1B49\\u1B4A\\u6AD0;\\u6AD2dot;\\u62EF\\u0380delprvw\\u1B60\\u1B6C\\u1B77\\u1B82\\u1BAC\\u1BD4\\u1BF9arr\\u0100lr\\u1B68\\u1B6A;\\u6938;\\u6935\\u0270\\u1B72\\0\\0\\u1B75r;\\u62DEc;\\u62DFarr\\u0100;p\\u1B7F\\u1B80\\u61B6;\\u693D\\u0300;bcdos\\u1B8F\\u1B90\\u1B96\\u1BA1\\u1BA5\\u1BA8\\u622Arcap;\\u6A48\\u0100au\\u1B9B\\u1B9Ep;\\u6A46p;\\u6A4Aot;\\u628Dr;\\u6A45;\\uC000\\u222A\\uFE00\\u0200alrv\\u1BB5\\u1BBF\\u1BDE\\u1BE3rr\\u0100;m\\u1BBC\\u1BBD\\u61B7;\\u693Cy\\u0180evw\\u1BC7\\u1BD4\\u1BD8q\\u0270\\u1BCE\\0\\0\\u1BD2re\\xe3\\u1B73u\\xe3\\u1B75ee;\\u62CEedge;\\u62CFen\\u803B\\xa4\\u40A4earrow\\u0100lr\\u1BEE\\u1BF3eft\\xbb\\u1B80ight\\xbb\\u1BBDe\\xe4\\u1BDD\\u0100ci\\u1C01\\u1C07onin\\xf4\\u01F7nt;\\u6231lcty;\\u632D\\u0980AHabcdefhijlorstuwz\\u1C38\\u1C3B\\u1C3F\\u1C5D\\u1C69\\u1C75\\u1C8A\\u1C9E\\u1CAC\\u1CB7\\u1CFB\\u1CFF\\u1D0D\\u1D7B\\u1D91\\u1DAB\\u1DBB\\u1DC6\\u1DCDr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1C48\\u1C4D\\u1C52\\u1C54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1C5A\\u1C5B\\u6010\\xbb\\u090A\\u016B\\u1C61\\u1C67arow;\\u690Fa\\xe3\\u0315\\u0100ay\\u1C6E\\u1C73ron;\\u410F;\\u4434\\u0180;ao\\u0332\\u1C7C\\u1C84\\u0100gr\\u02BF\\u1C81r;\\u61CAtseq;\\u6A77\\u0180glm\\u1C91\\u1C94\\u1C98\\u803B\\xb0\\u40B0ta;\\u43B4ptyv;\\u69B1\\u0100ir\\u1CA3\\u1CA8sht;\\u697F;\\uC000\\ud835\\udd21ar\\u0100lr\\u1CB3\\u1CB5\\xbb\\u08DC\\xbb\\u101E\\u0280aegsv\\u1CC2\\u0378\\u1CD6\\u1CDC\\u1CE0m\\u0180;os\\u0326\\u1CCA\\u1CD4nd\\u0100;s\\u0326\\u1CD1uit;\\u6666amma;\\u43DDin;\\u62F2\\u0180;io\\u1CE7\\u1CE8\\u1CF8\\u40F7de\\u8100\\xf7;o\\u1CE7\\u1CF0ntimes;\\u62C7n\\xf8\\u1CF7cy;\\u4452c\\u026F\\u1D06\\0\\0\\u1D0Arn;\\u631Eop;\\u630D\\u0280lptuw\\u1D18\\u1D1D\\u1D22\\u1D49\\u1D55lar;\\u4024f;\\uC000\\ud835\\udd55\\u0280;emps\\u030B\\u1D2D\\u1D37\\u1D3D\\u1D42q\\u0100;d\\u0352\\u1D33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62A1blebarwedg\\xe5\\xfan\\u0180adh\\u112E\\u1D5D\\u1D67ownarrow\\xf3\\u1C83arpoon\\u0100lr\\u1D72\\u1D76ef\\xf4\\u1CB4igh\\xf4\\u1CB6\\u0162\\u1D7F\\u1D85karo\\xf7\\u0F42\\u026F\\u1D8A\\0\\0\\u1D8Ern;\\u631Fop;\\u630C\\u0180cot\\u1D98\\u1DA3\\u1DA6\\u0100ry\\u1D9D\\u1DA1;\\uC000\\ud835\\udcb9;\\u4455l;\\u69F6rok;\\u4111\\u0100dr\\u1DB0\\u1DB4ot;\\u62F1i\\u0100;f\\u1DBA\\u1816\\u65BF\\u0100ah\\u1DC0\\u1DC3r\\xf2\\u0429a\\xf2\\u0FA6angle;\\u69A6\\u0100ci\\u1DD2\\u1DD5y;\\u445Fgrarr;\\u67FF\\u0900Dacdefglmnopqrstux\\u1E01\\u1E09\\u1E19\\u1E38\\u0578\\u1E3C\\u1E49\\u1E61\\u1E7E\\u1EA5\\u1EAF\\u1EBD\\u1EE1\\u1F2A\\u1F37\\u1F44\\u1F4E\\u1F5A\\u0100Do\\u1E06\\u1D34o\\xf4\\u1C89\\u0100cs\\u1E0E\\u1E14ute\\u803B\\xe9\\u40E9ter;\\u6A6E\\u0200aioy\\u1E22\\u1E27\\u1E31\\u1E36ron;\\u411Br\\u0100;c\\u1E2D\\u1E2E\\u6256\\u803B\\xea\\u40EAlon;\\u6255;\\u444Dot;\\u4117\\u0100Dr\\u1E41\\u1E45ot;\\u6252;\\uC000\\ud835\\udd22\\u0180;rs\\u1E50\\u1E51\\u1E57\\u6A9Aave\\u803B\\xe8\\u40E8\\u0100;d\\u1E5C\\u1E5D\\u6A96ot;\\u6A98\\u0200;ils\\u1E6A\\u1E6B\\u1E72\\u1E74\\u6A99nters;\\u63E7;\\u6113\\u0100;d\\u1E79\\u1E7A\\u6A95ot;\\u6A97\\u0180aps\\u1E85\\u1E89\\u1E97cr;\\u4113ty\\u0180;sv\\u1E92\\u1E93\\u1E95\\u6205et\\xbb\\u1E93p\\u01001;\\u1E9D\\u1EA4\\u0133\\u1EA1\\u1EA3;\\u6004;\\u6005\\u6003\\u0100gs\\u1EAA\\u1EAC;\\u414Bp;\\u6002\\u0100gp\\u1EB4\\u1EB8on;\\u4119f;\\uC000\\ud835\\udd56\\u0180als\\u1EC4\\u1ECE\\u1ED2r\\u0100;s\\u1ECA\\u1ECB\\u62D5l;\\u69E3us;\\u6A71i\\u0180;lv\\u1EDA\\u1EDB\\u1EDF\\u43B5on\\xbb\\u1EDB;\\u43F5\\u0200csuv\\u1EEA\\u1EF3\\u1F0B\\u1F23\\u0100io\\u1EEF\\u1E31rc\\xbb\\u1E2E\\u0269\\u1EF9\\0\\0\\u1EFB\\xed\\u0548ant\\u0100gl\\u1F02\\u1F06tr\\xbb\\u1E5Dess\\xbb\\u1E7A\\u0180aei\\u1F12\\u1F16\\u1F1Als;\\u403Dst;\\u625Fv\\u0100;D\\u0235\\u1F20D;\\u6A78parsl;\\u69E5\\u0100Da\\u1F2F\\u1F33ot;\\u6253rr;\\u6971\\u0180cdi\\u1F3E\\u1F41\\u1EF8r;\\u612Fo\\xf4\\u0352\\u0100ah\\u1F49\\u1F4B;\\u43B7\\u803B\\xf0\\u40F0\\u0100mr\\u1F53\\u1F57l\\u803B\\xeb\\u40EBo;\\u60AC\\u0180cip\\u1F61\\u1F64\\u1F67l;\\u4021s\\xf4\\u056E\\u0100eo\\u1F6C\\u1F74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09E1\\u1F92\\0\\u1F9E\\0\\u1FA1\\u1FA7\\0\\0\\u1FC6\\u1FCC\\0\\u1FD3\\0\\u1FE6\\u1FEA\\u2000\\0\\u2008\\u205Allingdotse\\xf1\\u1E44y;\\u4444male;\\u6640\\u0180ilr\\u1FAD\\u1FB3\\u1FC1lig;\\u8000\\uFB03\\u0269\\u1FB9\\0\\0\\u1FBDg;\\u8000\\uFB00ig;\\u8000\\uFB04;\\uC000\\ud835\\udd23lig;\\u8000\\uFB01lig;\\uC000fj\\u0180alt\\u1FD9\\u1FDC\\u1FE1t;\\u666Dig;\\u8000\\uFB02ns;\\u65B1of;\\u4192\\u01F0\\u1FEE\\0\\u1FF3f;\\uC000\\ud835\\udd57\\u0100ak\\u05BF\\u1FF7\\u0100;v\\u1FFC\\u1FFD\\u62D4;\\u6AD9artint;\\u6A0D\\u0100ao\\u200C\\u2055\\u0100cs\\u2011\\u2052\\u03B1\\u201A\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03B2\\u2022\\u2025\\u2027\\u202A\\u202C\\0\\u202E\\u803B\\xbd\\u40BD;\\u6153\\u803B\\xbc\\u40BC;\\u6155;\\u6159;\\u615B\\u01B3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02B4\\u203E\\u2041\\0\\0\\u2043\\u803B\\xbe\\u40BE;\\u6157;\\u615C5;\\u6158\\u01B6\\u204C\\0\\u204E;\\u615A;\\u615D8;\\u615El;\\u6044wn;\\u6322cr;\\uC000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209F\\u20A5\\u20B0\\u20B4\\u20F0\\u20F5\\u20FA\\u20FF\\u2103\\u2112\\u2138\\u0317\\u213E\\u2152\\u219E\\u0100;l\\u064D\\u2087;\\u6A8C\\u0180cmp\\u2090\\u2095\\u209Dute;\\u41F5ma\\u0100;d\\u209C\\u1CDA\\u43B3;\\u6A86reve;\\u411F\\u0100iy\\u20AA\\u20AErc;\\u411D;\\u4433ot;\\u4121\\u0200;lqs\\u063E\\u0642\\u20BD\\u20C9\\u0180;qs\\u063E\\u064C\\u20C4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20D2\\u20D5\\u20E5c;\\u6AA9ot\\u0100;o\\u20DC\\u20DD\\u6A80\\u0100;l\\u20E2\\u20E3\\u6A82;\\u6A84\\u0100;e\\u20EA\\u20ED\\uC000\\u22DB\\uFE00s;\\u6A94r;\\uC000\\ud835\\udd24\\u0100;g\\u0673\\u061Bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065A\\u210C\\u210E\\u2110;\\u6A92;\\u6AA5;\\u6AA4\\u0200Eaes\\u211B\\u211D\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6A8Arox\\xbb\\u2124\\u0100;q\\u212E\\u212F\\u6A88\\u0100;q\\u212E\\u211Bim;\\u62E7pf;\\uC000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610Am\\u0180;el\\u066B\\u214E\\u2150;\\u6A8E;\\u6A90\\u8300>;cdlqr\\u05EE\\u2160\\u216A\\u216E\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6AA7r;\\u6A7Aot;\\u62D7Par;\\u6995uest;\\u6A7C\\u0280adels\\u2184\\u216A\\u2190\\u0656\\u219B\\u01F0\\u2189\\0\\u218Epro\\xf8\\u209Er;\\u6978q\\u0100lq\\u063F\\u2196les\\xf3\\u2088i\\xed\\u066B\\u0100en\\u21A3\\u21ADrtneqq;\\uC000\\u2269\\uFE00\\xc5\\u21AA\\u0500Aabcefkosy\\u21C4\\u21C7\\u21F1\\u21F5\\u21FA\\u2218\\u221D\\u222F\\u2268\\u227Dr\\xf2\\u03A0\\u0200ilmr\\u21D0\\u21D4\\u21D7\\u21DBrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06A9\\u0100dr\\u21E0\\u21E4cy;\\u444A\\u0180;cw\\u08F4\\u21EB\\u21EFir;\\u6948;\\u61ADar;\\u610Firc;\\u4125\\u0180alr\\u2201\\u220E\\u2213rts\\u0100;u\\u2209\\u220A\\u6665it\\xbb\\u220Alip;\\u6026con;\\u62B9r;\\uC000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223A\\u223E\\u2243\\u225E\\u2263rr;\\u61FFtht;\\u623Bk\\u0100lr\\u2249\\u2253eftarrow;\\u61A9ightarrow;\\u61AAf;\\uC000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226F\\u2274\\u2278r;\\uC000\\ud835\\udcbdas\\xe8\\u21F4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1C5B\\u0AE1\\u22A3\\0\\u22AA\\0\\u22B8\\u22C5\\u22CE\\0\\u22D5\\u22F3\\0\\0\\u22F8\\u2322\\u2367\\u2362\\u237F\\0\\u2386\\u23AA\\u23B4cute\\u803B\\xed\\u40ED\\u0180;iy\\u0771\\u22B0\\u22B5rc\\u803B\\xee\\u40EE;\\u4438\\u0100cx\\u22BC\\u22BFy;\\u4435cl\\u803B\\xa1\\u40A1\\u0100fr\\u039F\\u22C9;\\uC000\\ud835\\udd26rave\\u803B\\xec\\u40EC\\u0200;ino\\u073E\\u22DD\\u22E9\\u22EE\\u0100in\\u22E2\\u22E6nt;\\u6A0Ct;\\u622Dfin;\\u69DCta;\\u6129lig;\\u4133\\u0180aop\\u22FE\\u231A\\u231D\\u0180cgt\\u2305\\u2308\\u2317r;\\u412B\\u0180elp\\u071F\\u230F\\u2313in\\xe5\\u078Ear\\xf4\\u0720h;\\u4131f;\\u62B7ed;\\u41B5\\u0280;cfot\\u04F4\\u232C\\u2331\\u233D\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621Eie;\\u69DDdo\\xf4\\u2319\\u0280;celp\\u0757\\u234C\\u2350\\u235B\\u2361al;\\u62BA\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234Darhk;\\u6A17rod;\\u6A3C\\u0200cgpt\\u236F\\u2372\\u2376\\u237By;\\u4451on;\\u412Ff;\\uC000\\ud835\\udd5aa;\\u43B9uest\\u803B\\xbf\\u40BF\\u0100ci\\u238A\\u238Fr;\\uC000\\ud835\\udcben\\u0280;Edsv\\u04F4\\u239B\\u239D\\u23A1\\u04F3;\\u62F9ot;\\u62F5\\u0100;v\\u23A6\\u23A7\\u62F4;\\u62F3\\u0100;i\\u0777\\u23AElde;\\u4129\\u01EB\\u23B8\\0\\u23BCcy;\\u4456l\\u803B\\xef\\u40EF\\u0300cfmosu\\u23CC\\u23D7\\u23DC\\u23E1\\u23E7\\u23F5\\u0100iy\\u23D1\\u23D5rc;\\u4135;\\u4439r;\\uC000\\ud835\\udd27ath;\\u4237pf;\\uC000\\ud835\\udd5b\\u01E3\\u23EC\\0\\u23F1r;\\uC000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240B\\u2416\\u2422\\u2427\\u242D\\u2431\\u2435\\u243Bppa\\u0100;v\\u2413\\u2414\\u43BA;\\u43F0\\u0100ey\\u241B\\u2420dil;\\u4137;\\u443Ar;\\uC000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445Cpf;\\uC000\\ud835\\udd5ccr;\\uC000\\ud835\\udcc0\\u0B80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248D\\u2491\\u250E\\u253D\\u255A\\u2580\\u264E\\u265E\\u2665\\u2679\\u267D\\u269A\\u26B2\\u26D8\\u275D\\u2768\\u278B\\u27C0\\u2801\\u2812\\u0180art\\u2477\\u247A\\u247Cr\\xf2\\u09C6\\xf2\\u0395ail;\\u691Barr;\\u690E\\u0100;g\\u0994\\u248B;\\u6A8Bar;\\u6962\\u0963\\u24A5\\0\\u24AA\\0\\u24B1\\0\\0\\0\\0\\0\\u24B5\\u24BA\\0\\u24C6\\u24C8\\u24CD\\0\\u24F9ute;\\u413Amptyv;\\u69B4ra\\xee\\u084Cbda;\\u43BBg\\u0180;dl\\u088E\\u24C1\\u24C3;\\u6991\\xe5\\u088E;\\u6A85uo\\u803B\\xab\\u40ABr\\u0400;bfhlpst\\u0899\\u24DE\\u24E6\\u24E9\\u24EB\\u24EE\\u24F1\\u24F5\\u0100;f\\u089D\\u24E3s;\\u691Fs;\\u691D\\xeb\\u2252p;\\u61ABl;\\u6939im;\\u6973l;\\u61A2\\u0180;ae\\u24FF\\u2500\\u2504\\u6AABil;\\u6919\\u0100;s\\u2509\\u250A\\u6AAD;\\uC000\\u2AAD\\uFE00\\u0180abr\\u2515\\u2519\\u251Drr;\\u690Crk;\\u6772\\u0100ak\\u2522\\u252Cc\\u0100ek\\u2528\\u252A;\\u407B;\\u405B\\u0100es\\u2531\\u2533;\\u698Bl\\u0100du\\u2539\\u253B;\\u698F;\\u698D\\u0200aeuy\\u2546\\u254B\\u2556\\u2558ron;\\u413E\\u0100di\\u2550\\u2554il;\\u413C\\xec\\u08B0\\xe2\\u2529;\\u443B\\u0200cqrs\\u2563\\u2566\\u256D\\u257Da;\\u6936uo\\u0100;r\\u0E19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694Bh;\\u61B2\\u0280;fgqs\\u258B\\u258C\\u0989\\u25F3\\u25FF\\u6264t\\u0280ahlrt\\u2598\\u25A4\\u25B7\\u25C2\\u25E8rrow\\u0100;t\\u0899\\u25A1a\\xe9\\u24F6arpoon\\u0100du\\u25AF\\u25B4own\\xbb\\u045Ap\\xbb\\u0966eftarrows;\\u61C7ight\\u0180ahs\\u25CD\\u25D6\\u25DErrow\\u0100;s\\u08F4\\u08A7arpoon\\xf3\\u0F98quigarro\\xf7\\u21F0hreetimes;\\u62CB\\u0180;qs\\u258B\\u0993\\u25FAlan\\xf4\\u09AC\\u0280;cdgs\\u09AC\\u260A\\u260D\\u261D\\u2628c;\\u6AA8ot\\u0100;o\\u2614\\u2615\\u6A7F\\u0100;r\\u261A\\u261B\\u6A81;\\u6A83\\u0100;e\\u2622\\u2625\\uC000\\u22DA\\uFE00s;\\u6A93\\u0280adegs\\u2633\\u2639\\u263D\\u2649\\u264Bppro\\xf8\\u24C6ot;\\u62D6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248C\\xf4\\u099Bi\\xed\\u09B2\\u0180ilr\\u2655\\u08E1\\u265Asht;\\u697C;\\uC000\\ud835\\udd29\\u0100;E\\u099C\\u2663;\\u6A91\\u0161\\u2669\\u2676r\\u0100du\\u25B2\\u266E\\u0100;l\\u0965\\u2673;\\u696Alk;\\u6584cy;\\u4459\\u0280;acht\\u0A48\\u2688\\u268B\\u2691\\u2696r\\xf2\\u25C1orne\\xf2\\u1D08ard;\\u696Bri;\\u65FA\\u0100io\\u269F\\u26A4dot;\\u4140ust\\u0100;a\\u26AC\\u26AD\\u63B0che\\xbb\\u26AD\\u0200Eaes\\u26BB\\u26BD\\u26C9\\u26D4;\\u6268p\\u0100;p\\u26C3\\u26C4\\u6A89rox\\xbb\\u26C4\\u0100;q\\u26CE\\u26CF\\u6A87\\u0100;q\\u26CE\\u26BBim;\\u62E6\\u0400abnoptwz\\u26E9\\u26F4\\u26F7\\u271A\\u272F\\u2741\\u2747\\u2750\\u0100nr\\u26EE\\u26F1g;\\u67ECr;\\u61FDr\\xeb\\u08C1g\\u0180lmr\\u26FF\\u270D\\u2714eft\\u0100ar\\u09E6\\u2707ight\\xe1\\u09F2apsto;\\u67FCight\\xe1\\u09FDparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24EDight;\\u61AC\\u0180afl\\u2736\\u2739\\u273Dr;\\u6985;\\uC000\\ud835\\udd5dus;\\u6A2Dimes;\\u6A34\\u0161\\u274B\\u274Fst;\\u6217\\xe1\\u134E\\u0180;ef\\u2757\\u2758\\u1800\\u65CAnge\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277C\\u2785\\u2787r\\xf2\\u08A8orne\\xf2\\u1D8Car\\u0100;d\\u0F98\\u2783;\\u696D;\\u600Eri;\\u62BF\\u0300achiqt\\u2798\\u279D\\u0A40\\u27A2\\u27AE\\u27BBquo;\\u6039r;\\uC000\\ud835\\udcc1m\\u0180;eg\\u09B2\\u27AA\\u27AC;\\u6A8D;\\u6A8F\\u0100bu\\u252A\\u27B3o\\u0100;r\\u0E1F\\u27B9;\\u601Arok;\\u4142\\u8400<;cdhilqr\\u082B\\u27D2\\u2639\\u27DC\\u27E0\\u27E5\\u27EA\\u27F0\\u0100ci\\u27D7\\u27D9;\\u6AA6r;\\u6A79re\\xe5\\u25F2mes;\\u62C9arr;\\u6976uest;\\u6A7B\\u0100Pi\\u27F5\\u27F9ar;\\u6996\\u0180;ef\\u2800\\u092D\\u181B\\u65C3r\\u0100du\\u2807\\u280Dshar;\\u694Ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uC000\\u2268\\uFE00\\xc5\\u281E\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288E\\u2893\\u28A0\\u28A5\\u28A8\\u28DA\\u28E2\\u28E4\\u0A83\\u28F3\\u2902Dot;\\u623A\\u0200clpr\\u284E\\u2852\\u2863\\u287Dr\\u803B\\xaf\\u40AF\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285E\\u285F\\u6720se\\xbb\\u285F\\u0100;s\\u103B\\u2868to\\u0200;dlu\\u103B\\u2873\\u2877\\u287Bow\\xee\\u048Cef\\xf4\\u090F\\xf0\\u13D1ker;\\u65AE\\u0100oy\\u2887\\u288Cmma;\\u6A29;\\u443Cash;\\u6014asuredangle\\xbb\\u1626r;\\uC000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28AF\\u28B4\\u28C9ro\\u803B\\xb5\\u40B5\\u0200;acd\\u1464\\u28BD\\u28C0\\u28C4s\\xf4\\u16A7ir;\\u6AF0ot\\u80BB\\xb7\\u01B5us\\u0180;bd\\u28D2\\u1903\\u28D3\\u6212\\u0100;u\\u1D3C\\u28D8;\\u6A2A\\u0163\\u28DE\\u28E1p;\\u6ADB\\xf2\\u2212\\xf0\\u0A81\\u0100dp\\u28E9\\u28EEels;\\u62A7f;\\uC000\\ud835\\udd5e\\u0100ct\\u28F8\\u28FDr;\\uC000\\ud835\\udcc2pos\\xbb\\u159D\\u0180;lm\\u2909\\u290A\\u290D\\u43BCtimap;\\u62B8\\u0C00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297E\\u2989\\u2998\\u29DA\\u29E9\\u2A15\\u2A1A\\u2A58\\u2A5D\\u2A83\\u2A95\\u2AA4\\u2AA8\\u2B04\\u2B07\\u2B44\\u2B7F\\u2BAE\\u2C34\\u2C67\\u2C7C\\u2CE9\\u0100gt\\u2947\\u294B;\\uC000\\u22D9\\u0338\\u0100;v\\u2950\\u0BCF\\uC000\\u226B\\u20D2\\u0180elt\\u295A\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61CDightarrow;\\u61CE;\\uC000\\u22D8\\u0338\\u0100;v\\u297B\\u0C47\\uC000\\u226A\\u20D2ightarrow;\\u61CF\\u0100Dd\\u298E\\u2993ash;\\u62AFash;\\u62AE\\u0280bcnpt\\u29A3\\u29A7\\u29AC\\u29B1\\u29CCla\\xbb\\u02DEute;\\u4144g;\\uC000\\u2220\\u20D2\\u0280;Eiop\\u0D84\\u29BC\\u29C0\\u29C5\\u29C8;\\uC000\\u2A70\\u0338d;\\uC000\\u224B\\u0338s;\\u4149ro\\xf8\\u0D84ur\\u0100;a\\u29D3\\u29D4\\u666El\\u0100;s\\u29D3\\u0B38\\u01F3\\u29DF\\0\\u29E3p\\u80BB\\xa0\\u0B37mp\\u0100;e\\u0BF9\\u0C00\\u0280aeouy\\u29F4\\u29FE\\u2A03\\u2A10\\u2A13\\u01F0\\u29F9\\0\\u29FB;\\u6A43on;\\u4148dil;\\u4146ng\\u0100;d\\u0D7E\\u2A0Aot;\\uC000\\u2A6D\\u0338p;\\u6A42;\\u443Dash;\\u6013\\u0380;Aadqsx\\u0B92\\u2A29\\u2A2D\\u2A3B\\u2A41\\u2A45\\u2A50rr;\\u61D7r\\u0100hr\\u2A33\\u2A36k;\\u6924\\u0100;o\\u13F2\\u13F0ot;\\uC000\\u2250\\u0338ui\\xf6\\u0B63\\u0100ei\\u2A4A\\u2A4Ear;\\u6928\\xed\\u0B98ist\\u0100;s\\u0BA0\\u0B9Fr;\\uC000\\ud835\\udd2b\\u0200Eest\\u0BC5\\u2A66\\u2A79\\u2A7C\\u0180;qs\\u0BBC\\u2A6D\\u0BE1\\u0180;qs\\u0BBC\\u0BC5\\u2A74lan\\xf4\\u0BE2i\\xed\\u0BEA\\u0100;r\\u0BB6\\u2A81\\xbb\\u0BB7\\u0180Aap\\u2A8A\\u2A8D\\u2A91r\\xf2\\u2971rr;\\u61AEar;\\u6AF2\\u0180;sv\\u0F8D\\u2A9C\\u0F8C\\u0100;d\\u2AA1\\u2AA2\\u62FC;\\u62FAcy;\\u445A\\u0380AEadest\\u2AB7\\u2ABA\\u2ABE\\u2AC2\\u2AC5\\u2AF6\\u2AF9r\\xf2\\u2966;\\uC000\\u2266\\u0338rr;\\u619Ar;\\u6025\\u0200;fqs\\u0C3B\\u2ACE\\u2AE3\\u2AEFt\\u0100ar\\u2AD4\\u2AD9rro\\xf7\\u2AC1ightarro\\xf7\\u2A90\\u0180;qs\\u0C3B\\u2ABA\\u2AEAlan\\xf4\\u0C55\\u0100;s\\u0C55\\u2AF4\\xbb\\u0C36i\\xed\\u0C5D\\u0100;r\\u0C35\\u2AFEi\\u0100;e\\u0C1A\\u0C25i\\xe4\\u0D90\\u0100pt\\u2B0C\\u2B11f;\\uC000\\ud835\\udd5f\\u8180\\xac;in\\u2B19\\u2B1A\\u2B36\\u40ACn\\u0200;Edv\\u0B89\\u2B24\\u2B28\\u2B2E;\\uC000\\u22F9\\u0338ot;\\uC000\\u22F5\\u0338\\u01E1\\u0B89\\u2B33\\u2B35;\\u62F7;\\u62F6i\\u0100;v\\u0CB8\\u2B3C\\u01E1\\u0CB8\\u2B41\\u2B43;\\u62FE;\\u62FD\\u0180aor\\u2B4B\\u2B63\\u2B69r\\u0200;ast\\u0B7B\\u2B55\\u2B5A\\u2B5Flle\\xec\\u0B7Bl;\\uC000\\u2AFD\\u20E5;\\uC000\\u2202\\u0338lint;\\u6A14\\u0180;ce\\u0C92\\u2B70\\u2B73u\\xe5\\u0CA5\\u0100;c\\u0C98\\u2B78\\u0100;e\\u0C92\\u2B7D\\xf1\\u0C98\\u0200Aait\\u2B88\\u2B8B\\u2B9D\\u2BA7r\\xf2\\u2988rr\\u0180;cw\\u2B94\\u2B95\\u2B99\\u619B;\\uC000\\u2933\\u0338;\\uC000\\u219D\\u0338ghtarrow\\xbb\\u2B95ri\\u0100;e\\u0CCB\\u0CD6\\u0380chimpqu\\u2BBD\\u2BCD\\u2BD9\\u2B04\\u0B78\\u2BE4\\u2BEF\\u0200;cer\\u0D32\\u2BC6\\u0D37\\u2BC9u\\xe5\\u0D45;\\uC000\\ud835\\udcc3ort\\u026D\\u2B05\\0\\0\\u2BD6ar\\xe1\\u2B56m\\u0100;e\\u0D6E\\u2BDF\\u0100;q\\u0D74\\u0D73su\\u0100bp\\u2BEB\\u2BED\\xe5\\u0CF8\\xe5\\u0D0B\\u0180bcp\\u2BF6\\u2C11\\u2C19\\u0200;Ees\\u2BFF\\u2C00\\u0D22\\u2C04\\u6284;\\uC000\\u2AC5\\u0338et\\u0100;e\\u0D1B\\u2C0Bq\\u0100;q\\u0D23\\u2C00c\\u0100;e\\u0D32\\u2C17\\xf1\\u0D38\\u0200;Ees\\u2C22\\u2C23\\u0D5F\\u2C27\\u6285;\\uC000\\u2AC6\\u0338et\\u0100;e\\u0D58\\u2C2Eq\\u0100;q\\u0D60\\u2C23\\u0200gilr\\u2C3D\\u2C3F\\u2C45\\u2C47\\xec\\u0BD7lde\\u803B\\xf1\\u40F1\\xe7\\u0C43iangle\\u0100lr\\u2C52\\u2C5Ceft\\u0100;e\\u0C1A\\u2C5A\\xf1\\u0C26ight\\u0100;e\\u0CCB\\u2C65\\xf1\\u0CD7\\u0100;m\\u2C6C\\u2C6D\\u43BD\\u0180;es\\u2C74\\u2C75\\u2C79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2C8F\\u2C94\\u2C99\\u2C9E\\u2CA3\\u2CB0\\u2CB6\\u2CD3\\u2CE3ash;\\u62ADarr;\\u6904p;\\uC000\\u224D\\u20D2ash;\\u62AC\\u0100et\\u2CA8\\u2CAC;\\uC000\\u2265\\u20D2;\\uC000>\\u20D2nfin;\\u69DE\\u0180Aet\\u2CBD\\u2CC1\\u2CC5rr;\\u6902;\\uC000\\u2264\\u20D2\\u0100;r\\u2CCA\\u2CCD\\uC000<\\u20D2ie;\\uC000\\u22B4\\u20D2\\u0100At\\u2CD8\\u2CDCrr;\\u6903rie;\\uC000\\u22B5\\u20D2im;\\uC000\\u223C\\u20D2\\u0180Aan\\u2CF0\\u2CF4\\u2D02rr;\\u61D6r\\u0100hr\\u2CFA\\u2CFDk;\\u6923\\u0100;o\\u13E7\\u13E5ear;\\u6927\\u1253\\u1A95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2D2D\\0\\u2D38\\u2D48\\u2D60\\u2D65\\u2D72\\u2D84\\u1B07\\0\\0\\u2D8D\\u2DAB\\0\\u2DC8\\u2DCE\\0\\u2DDC\\u2E19\\u2E2B\\u2E3E\\u2E43\\u0100cs\\u2D31\\u1A97ute\\u803B\\xf3\\u40F3\\u0100iy\\u2D3C\\u2D45r\\u0100;c\\u1A9E\\u2D42\\u803B\\xf4\\u40F4;\\u443E\\u0280abios\\u1AA0\\u2D52\\u2D57\\u01C8\\u2D5Alac;\\u4151v;\\u6A38old;\\u69BClig;\\u4153\\u0100cr\\u2D69\\u2D6Dir;\\u69BF;\\uC000\\ud835\\udd2c\\u036F\\u2D79\\0\\0\\u2D7C\\0\\u2D82n;\\u42DBave\\u803B\\xf2\\u40F2;\\u69C1\\u0100bm\\u2D88\\u0DF4ar;\\u69B5\\u0200acit\\u2D95\\u2D98\\u2DA5\\u2DA8r\\xf2\\u1A80\\u0100ir\\u2D9D\\u2DA0r;\\u69BEoss;\\u69BBn\\xe5\\u0E52;\\u69C0\\u0180aei\\u2DB1\\u2DB5\\u2DB9cr;\\u414Dga;\\u43C9\\u0180cdn\\u2DC0\\u2DC5\\u01CDron;\\u43BF;\\u69B6pf;\\uC000\\ud835\\udd60\\u0180ael\\u2DD4\\u2DD7\\u01D2r;\\u69B7rp;\\u69B9\\u0380;adiosv\\u2DEA\\u2DEB\\u2DEE\\u2E08\\u2E0D\\u2E10\\u2E16\\u6228r\\xf2\\u1A86\\u0200;efm\\u2DF7\\u2DF8\\u2E02\\u2E05\\u6A5Dr\\u0100;o\\u2DFE\\u2DFF\\u6134f\\xbb\\u2DFF\\u803B\\xaa\\u40AA\\u803B\\xba\\u40BAgof;\\u62B6r;\\u6A56lope;\\u6A57;\\u6A5B\\u0180clo\\u2E1F\\u2E21\\u2E27\\xf2\\u2E01ash\\u803B\\xf8\\u40F8l;\\u6298i\\u016C\\u2E2F\\u2E34de\\u803B\\xf5\\u40F5es\\u0100;a\\u01DB\\u2E3As;\\u6A36ml\\u803B\\xf6\\u40F6bar;\\u633D\\u0AE1\\u2E5E\\0\\u2E7D\\0\\u2E80\\u2E9D\\0\\u2EA2\\u2EB9\\0\\0\\u2ECB\\u0E9C\\0\\u2F13\\0\\0\\u2F2B\\u2FBC\\0\\u2FC8r\\u0200;ast\\u0403\\u2E67\\u2E72\\u0E85\\u8100\\xb6;l\\u2E6D\\u2E6E\\u40B6le\\xec\\u0403\\u0269\\u2E78\\0\\0\\u2E7Bm;\\u6AF3;\\u6AFDy;\\u443Fr\\u0280cimpt\\u2E8B\\u2E8F\\u2E93\\u1865\\u2E97nt;\\u4025od;\\u402Eil;\\u6030enk;\\u6031r;\\uC000\\ud835\\udd2d\\u0180imo\\u2EA8\\u2EB0\\u2EB4\\u0100;v\\u2EAD\\u2EAE\\u43C6;\\u43D5ma\\xf4\\u0A76ne;\\u660E\\u0180;tv\\u2EBF\\u2EC0\\u2EC8\\u43C0chfork\\xbb\\u1FFD;\\u43D6\\u0100au\\u2ECF\\u2EDFn\\u0100ck\\u2ED5\\u2EDDk\\u0100;h\\u21F4\\u2EDB;\\u610E\\xf6\\u21F4s\\u0480;abcdemst\\u2EF3\\u2EF4\\u1908\\u2EF9\\u2EFD\\u2F04\\u2F06\\u2F0A\\u2F0E\\u402Bcir;\\u6A23ir;\\u6A22\\u0100ou\\u1D40\\u2F02;\\u6A25;\\u6A72n\\u80BB\\xb1\\u0E9Dim;\\u6A26wo;\\u6A27\\u0180ipu\\u2F19\\u2F20\\u2F25ntint;\\u6A15f;\\uC000\\ud835\\udd61nd\\u803B\\xa3\\u40A3\\u0500;Eaceinosu\\u0EC8\\u2F3F\\u2F41\\u2F44\\u2F47\\u2F81\\u2F89\\u2F92\\u2F7E\\u2FB6;\\u6AB3p;\\u6AB7u\\xe5\\u0ED9\\u0100;c\\u0ECE\\u2F4C\\u0300;acens\\u0EC8\\u2F59\\u2F5F\\u2F66\\u2F68\\u2F7Eppro\\xf8\\u2F43urlye\\xf1\\u0ED9\\xf1\\u0ECE\\u0180aes\\u2F6F\\u2F76\\u2F7Approx;\\u6AB9qq;\\u6AB5im;\\u62E8i\\xed\\u0EDFme\\u0100;s\\u2F88\\u0EAE\\u6032\\u0180Eas\\u2F78\\u2F90\\u2F7A\\xf0\\u2F75\\u0180dfp\\u0EEC\\u2F99\\u2FAF\\u0180als\\u2FA0\\u2FA5\\u2FAAlar;\\u632Eine;\\u6312urf;\\u6313\\u0100;t\\u0EFB\\u2FB4\\xef\\u0EFBrel;\\u62B0\\u0100ci\\u2FC0\\u2FC5r;\\uC000\\ud835\\udcc5;\\u43C8ncsp;\\u6008\\u0300fiopsu\\u2FDA\\u22E2\\u2FDF\\u2FE5\\u2FEB\\u2FF1r;\\uC000\\ud835\\udd2epf;\\uC000\\ud835\\udd62rime;\\u6057cr;\\uC000\\ud835\\udcc6\\u0180aeo\\u2FF8\\u3009\\u3013t\\u0100ei\\u2FFE\\u3005rnion\\xf3\\u06B0nt;\\u6A16st\\u0100;e\\u3010\\u3011\\u403F\\xf1\\u1F19\\xf4\\u0F14\\u0A80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30E0\\u310E\\u312B\\u3147\\u3162\\u3172\\u318E\\u3206\\u3215\\u3224\\u3229\\u3258\\u326E\\u3272\\u3290\\u32B0\\u32B7\\u0180art\\u3047\\u304A\\u304Cr\\xf2\\u10B3\\xf2\\u03DDail;\\u691Car\\xf2\\u1C65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307F\\u308F\\u3094\\u30CC\\u0100eu\\u306D\\u3071;\\uC000\\u223D\\u0331te;\\u4155i\\xe3\\u116Emptyv;\\u69B3g\\u0200;del\\u0FD1\\u3089\\u308B\\u308D;\\u6992;\\u69A5\\xe5\\u0FD1uo\\u803B\\xbb\\u40BBr\\u0580;abcfhlpstw\\u0FDC\\u30AC\\u30AF\\u30B7\\u30B9\\u30BC\\u30BE\\u30C0\\u30C3\\u30C7\\u30CAp;\\u6975\\u0100;f\\u0FE0\\u30B4s;\\u6920;\\u6933s;\\u691E\\xeb\\u225D\\xf0\\u272El;\\u6945im;\\u6974l;\\u61A3;\\u619D\\u0100ai\\u30D1\\u30D5il;\\u691Ao\\u0100;n\\u30DB\\u30DC\\u6236al\\xf3\\u0F1E\\u0180abr\\u30E7\\u30EA\\u30EEr\\xf2\\u17E5rk;\\u6773\\u0100ak\\u30F3\\u30FDc\\u0100ek\\u30F9\\u30FB;\\u407D;\\u405D\\u0100es\\u3102\\u3104;\\u698Cl\\u0100du\\u310A\\u310C;\\u698E;\\u6990\\u0200aeuy\\u3117\\u311C\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0FF2\\xe2\\u30FA;\\u4440\\u0200clqs\\u3134\\u3137\\u313D\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020E\\u020Dh;\\u61B3\\u0180acg\\u314E\\u315F\\u0F44l\\u0200;ips\\u0F78\\u3158\\u315B\\u109Cn\\xe5\\u10BBar\\xf4\\u0FA9t;\\u65AD\\u0180ilr\\u3169\\u1023\\u316Esht;\\u697D;\\uC000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317D\\u317F\\xbb\\u047B\\u0100;l\\u1091\\u3184;\\u696C\\u0100;v\\u318B\\u318C\\u43C1;\\u43F1\\u0180gns\\u3195\\u31F9\\u31FCht\\u0300ahlrst\\u31A4\\u31B0\\u31C2\\u31D8\\u31E4\\u31EErrow\\u0100;t\\u0FDC\\u31ADa\\xe9\\u30C8arpoon\\u0100du\\u31BB\\u31BFow\\xee\\u317Ep\\xbb\\u1092eft\\u0100ah\\u31CA\\u31D0rrow\\xf3\\u0FEAarpoon\\xf3\\u0551ightarrows;\\u61C9quigarro\\xf7\\u30CBhreetimes;\\u62CCg;\\u42DAingdotse\\xf1\\u1F32\\u0180ahm\\u320D\\u3210\\u3213r\\xf2\\u0FEAa\\xf2\\u0551;\\u600Foust\\u0100;a\\u321E\\u321F\\u63B1che\\xbb\\u321Fmid;\\u6AEE\\u0200abpt\\u3232\\u323D\\u3240\\u3252\\u0100nr\\u3237\\u323Ag;\\u67EDr;\\u61FEr\\xeb\\u1003\\u0180afl\\u3247\\u324A\\u324Er;\\u6986;\\uC000\\ud835\\udd63us;\\u6A2Eimes;\\u6A35\\u0100ap\\u325D\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6A12ar\\xf2\\u31E3\\u0200achq\\u327B\\u3280\\u10BC\\u3285quo;\\u603Ar;\\uC000\\ud835\\udcc7\\u0100bu\\u30FB\\u328Ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329B\\u32A0re\\xe5\\u31F8mes;\\u62CAi\\u0200;efl\\u32AA\\u1059\\u1821\\u32AB\\u65B9tri;\\u69CEluhar;\\u6968;\\u611E\\u0D61\\u32D5\\u32DB\\u32DF\\u332C\\u3338\\u3371\\0\\u337A\\u33A4\\0\\0\\u33EC\\u33F0\\0\\u3428\\u3448\\u345A\\u34AD\\u34B1\\u34CA\\u34F1\\0\\u3616\\0\\0\\u3633cute;\\u415Bqu\\xef\\u27BA\\u0500;Eaceinpsy\\u11ED\\u32F3\\u32F5\\u32FF\\u3302\\u330B\\u330F\\u331F\\u3326\\u3329;\\u6AB4\\u01F0\\u32FA\\0\\u32FC;\\u6AB8on;\\u4161u\\xe5\\u11FE\\u0100;d\\u11F3\\u3307il;\\u415Frc;\\u415D\\u0180Eas\\u3316\\u3318\\u331B;\\u6AB6p;\\u6ABAim;\\u62E9olint;\\u6A13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1D47\\u3335\\u62C5;\\u6A66\\u0380Aacmstx\\u3346\\u334A\\u3357\\u335B\\u335E\\u3363\\u336Drr;\\u61D8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0A36\\u0A34t\\u803B\\xa7\\u40A7i;\\u403Bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uC000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33A0rp;\\u666F\\u0100hy\\u338B\\u338Fcy;\\u4449;\\u4448rt\\u026D\\u3399\\0\\0\\u339Ci\\xe4\\u1464ara\\xec\\u2E6F\\u803B\\xad\\u40AD\\u0100gm\\u33A8\\u33B4ma\\u0180;fv\\u33B1\\u33B2\\u33B2\\u43C3;\\u43C2\\u0400;deglnpr\\u12AB\\u33C5\\u33C9\\u33CE\\u33D6\\u33DE\\u33E1\\u33E6ot;\\u6A6A\\u0100;q\\u12B1\\u12B0\\u0100;E\\u33D3\\u33D4\\u6A9E;\\u6AA0\\u0100;E\\u33DB\\u33DC\\u6A9D;\\u6A9Fe;\\u6246lus;\\u6A24arr;\\u6972ar\\xf2\\u113D\\u0200aeit\\u33F8\\u3408\\u340F\\u3417\\u0100ls\\u33FD\\u3404lsetm\\xe9\\u336Ahp;\\u6A33parsl;\\u69E4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341C\\u341D\\u6AAA\\u0100;s\\u3422\\u3423\\u6AAC;\\uC000\\u2AAC\\uFE00\\u0180flp\\u342E\\u3433\\u3442tcy;\\u444C\\u0100;b\\u3438\\u3439\\u402F\\u0100;a\\u343E\\u343F\\u69C4r;\\u633Ff;\\uC000\\ud835\\udd64a\\u0100dr\\u344D\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349F\\u0100au\\u3465\\u346Fp\\u0100;s\\u1188\\u346B;\\uC000\\u2293\\uFE00p\\u0100;s\\u11B4\\u3475;\\uC000\\u2294\\uFE00u\\u0100bp\\u347F\\u348F\\u0180;es\\u1197\\u119C\\u3486et\\u0100;e\\u1197\\u348D\\xf1\\u119D\\u0180;es\\u11A8\\u11AD\\u3496et\\u0100;e\\u11A8\\u349D\\xf1\\u11AE\\u0180;af\\u117B\\u34A6\\u05B0r\\u0165\\u34AB\\u05B1\\xbb\\u117Car\\xf2\\u1148\\u0200cemt\\u34B9\\u34BE\\u34C2\\u34C5r;\\uC000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11BE\\u0100ar\\u34CE\\u34D5r\\u0100;f\\u34D4\\u17BF\\u6606\\u0100an\\u34DA\\u34EDight\\u0100ep\\u34E3\\u34EApsilo\\xee\\u1EE0h\\xe9\\u2EAFs\\xbb\\u2852\\u0280bcmnp\\u34FB\\u355E\\u1209\\u358B\\u358E\\u0480;Edemnprs\\u350E\\u350F\\u3511\\u3515\\u351E\\u3523\\u352C\\u3531\\u3536\\u6282;\\u6AC5ot;\\u6ABD\\u0100;d\\u11DA\\u351Aot;\\u6AC3ult;\\u6AC1\\u0100Ee\\u3528\\u352A;\\u6ACB;\\u628Alus;\\u6ABFarr;\\u6979\\u0180eiu\\u353D\\u3552\\u3555t\\u0180;en\\u350E\\u3545\\u354Bq\\u0100;q\\u11DA\\u350Feq\\u0100;q\\u352B\\u3528m;\\u6AC7\\u0100bp\\u355A\\u355C;\\u6AD5;\\u6AD3c\\u0300;acens\\u11ED\\u356C\\u3572\\u3579\\u357B\\u3326ppro\\xf8\\u32FAurlye\\xf1\\u11FE\\xf1\\u11F3\\u0180aes\\u3582\\u3588\\u331Bppro\\xf8\\u331Aq\\xf1\\u3317g;\\u666A\\u0680123;Edehlmnps\\u35A9\\u35AC\\u35AF\\u121C\\u35B2\\u35B4\\u35C0\\u35C9\\u35D5\\u35DA\\u35DF\\u35E8\\u35ED\\u803B\\xb9\\u40B9\\u803B\\xb2\\u40B2\\u803B\\xb3\\u40B3;\\u6AC6\\u0100os\\u35B9\\u35BCt;\\u6ABEub;\\u6AD8\\u0100;d\\u1222\\u35C5ot;\\u6AC4s\\u0100ou\\u35CF\\u35D2l;\\u67C9b;\\u6AD7arr;\\u697Bult;\\u6AC2\\u0100Ee\\u35E4\\u35E6;\\u6ACC;\\u628Blus;\\u6AC0\\u0180eiu\\u35F4\\u3609\\u360Ct\\u0180;en\\u121C\\u35FC\\u3602q\\u0100;q\\u1222\\u35B2eq\\u0100;q\\u35E7\\u35E4m;\\u6AC8\\u0100bp\\u3611\\u3613;\\u6AD4;\\u6AD6\\u0180Aan\\u361C\\u3620\\u362Drr;\\u61D9r\\u0100hr\\u3626\\u3628\\xeb\\u222E\\u0100;o\\u0A2B\\u0A29war;\\u692Alig\\u803B\\xdf\\u40DF\\u0BE1\\u3651\\u365D\\u3660\\u12CE\\u3673\\u3679\\0\\u367E\\u36C2\\0\\0\\0\\0\\0\\u36DB\\u3703\\0\\u3709\\u376C\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365Bget;\\u6316;\\u43C4r\\xeb\\u0E5F\\u0180aey\\u3666\\u366B\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uC000\\ud835\\udd31\\u0200eiko\\u3686\\u369D\\u36B5\\u36BC\\u01F2\\u368B\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369B\\u43B8ym;\\u43D1\\u0100cn\\u36A2\\u36B2k\\u0100as\\u36A8\\u36AEppro\\xf8\\u12C1im\\xbb\\u12ACs\\xf0\\u129E\\u0100as\\u36BA\\u36AE\\xf0\\u12C1rn\\u803B\\xfe\\u40FE\\u01EC\\u031F\\u36C6\\u22E7es\\u8180\\xd7;bd\\u36CF\\u36D0\\u36D8\\u40D7\\u0100;a\\u190F\\u36D5r;\\u6A31;\\u6A30\\u0180eps\\u36E1\\u36E3\\u3700\\xe1\\u2A4D\\u0200;bcf\\u0486\\u36EC\\u36F0\\u36F4ot;\\u6336ir;\\u6AF1\\u0100;o\\u36F9\\u36FC\\uC000\\ud835\\udd65rk;\\u6ADA\\xe1\\u3362rime;\\u6034\\u0180aip\\u370F\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374D\\u3740\\u3751\\u3757\\u375C\\u375Fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65B5own\\xbb\\u1DBBeft\\u0100;e\\u2800\\u373E\\xf1\\u092E;\\u625Cight\\u0100;e\\u32AA\\u374B\\xf1\\u105Aot;\\u65ECinus;\\u6A3Alus;\\u6A39b;\\u69CDime;\\u6A3Bezium;\\u63E2\\u0180cht\\u3772\\u377D\\u3781\\u0100ry\\u3777\\u377B;\\uC000\\ud835\\udcc9;\\u4446cy;\\u445Brok;\\u4167\\u0100io\\u378B\\u378Ex\\xf4\\u1777head\\u0100lr\\u3797\\u37A0eftarro\\xf7\\u084Fightarrow\\xbb\\u0F5D\\u0900AHabcdfghlmoprstuw\\u37D0\\u37D3\\u37D7\\u37E4\\u37F0\\u37FC\\u380E\\u381C\\u3823\\u3834\\u3851\\u385D\\u386B\\u38A9\\u38CC\\u38D2\\u38EA\\u38F6r\\xf2\\u03EDar;\\u6963\\u0100cr\\u37DC\\u37E2ute\\u803B\\xfa\\u40FA\\xf2\\u1150r\\u01E3\\u37EA\\0\\u37EDy;\\u445Eve;\\u416D\\u0100iy\\u37F5\\u37FArc\\u803B\\xfb\\u40FB;\\u4443\\u0180abh\\u3803\\u3806\\u380Br\\xf2\\u13ADlac;\\u4171a\\xf2\\u13C3\\u0100ir\\u3813\\u3818sht;\\u697E;\\uC000\\ud835\\udd32rave\\u803B\\xf9\\u40F9\\u0161\\u3827\\u3831r\\u0100lr\\u382C\\u382E\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384D\\u026F\\u383F\\0\\0\\u384Arn\\u0100;e\\u3845\\u3846\\u631Cr\\xbb\\u3846op;\\u630Fri;\\u65F8\\u0100al\\u3856\\u385Acr;\\u416B\\u80BB\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uC000\\ud835\\udd66\\u0300adhlsu\\u114B\\u3878\\u387D\\u1372\\u3891\\u38A0own\\xe1\\u13B3arpoon\\u0100lr\\u3888\\u388Cef\\xf4\\u382Digh\\xf4\\u382Fi\\u0180;hl\\u3899\\u389A\\u389C\\u43C5\\xbb\\u13FAon\\xbb\\u389Aparrows;\\u61C8\\u0180cit\\u38B0\\u38C4\\u38C8\\u026F\\u38B6\\0\\0\\u38C1rn\\u0100;e\\u38BC\\u38BD\\u631Dr\\xbb\\u38BDop;\\u630Eng;\\u416Fri;\\u65F9cr;\\uC000\\ud835\\udcca\\u0180dir\\u38D9\\u38DD\\u38E2ot;\\u62F0lde;\\u4169i\\u0100;f\\u3730\\u38E8\\xbb\\u1813\\u0100am\\u38EF\\u38F2r\\xf2\\u38A8l\\u803B\\xfc\\u40FCangle;\\u69A7\\u0780ABDacdeflnoprsz\\u391C\\u391F\\u3929\\u392D\\u39B5\\u39B8\\u39BD\\u39DF\\u39E4\\u39E8\\u39F3\\u39F9\\u39FD\\u3A01\\u3A20r\\xf2\\u03F7ar\\u0100;v\\u3926\\u3927\\u6AE8;\\u6AE9as\\xe8\\u03E1\\u0100nr\\u3932\\u3937grt;\\u699C\\u0380eknprst\\u34E3\\u3946\\u394B\\u3952\\u395D\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1E96\\u0180hir\\u34EB\\u2EC8\\u3959op\\xf4\\u2FB5\\u0100;h\\u13B7\\u3962\\xef\\u318D\\u0100iu\\u3969\\u396Dgm\\xe1\\u33B3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397D\\u3980\\uC000\\u228A\\uFE00;\\uC000\\u2ACB\\uFE00setneq\\u0100;q\\u398F\\u3992\\uC000\\u228B\\uFE00;\\uC000\\u2ACC\\uFE00\\u0100hr\\u399B\\u399Fet\\xe1\\u369Ciangle\\u0100lr\\u39AA\\u39AFeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39C4\\u39D2\\u39D7\\u0180;be\\u2DEA\\u39CB\\u39CFar;\\u62BBq;\\u625Alip;\\u62EE\\u0100bt\\u39DC\\u1468a\\xf2\\u1469r;\\uC000\\ud835\\udd33tr\\xe9\\u39AEsu\\u0100bp\\u39EF\\u39F1\\xbb\\u0D1C\\xbb\\u0D59pf;\\uC000\\ud835\\udd67ro\\xf0\\u0EFBtr\\xe9\\u39B4\\u0100cu\\u3A06\\u3A0Br;\\uC000\\ud835\\udccb\\u0100bp\\u3A10\\u3A18n\\u0100Ee\\u3980\\u3A16\\xbb\\u397En\\u0100Ee\\u3992\\u3A1E\\xbb\\u3990igzag;\\u699A\\u0380cefoprs\\u3A36\\u3A3B\\u3A56\\u3A5B\\u3A54\\u3A61\\u3A6Airc;\\u4175\\u0100di\\u3A40\\u3A51\\u0100bg\\u3A45\\u3A49ar;\\u6A5Fe\\u0100;q\\u15FA\\u3A4F;\\u6259erp;\\u6118r;\\uC000\\ud835\\udd34pf;\\uC000\\ud835\\udd68\\u0100;e\\u1479\\u3A66at\\xe8\\u1479cr;\\uC000\\ud835\\udccc\\u0AE3\\u178E\\u3A87\\0\\u3A8B\\0\\u3A90\\u3A9B\\0\\0\\u3A9D\\u3AA8\\u3AAB\\u3AAF\\0\\0\\u3AC3\\u3ACE\\0\\u3AD8\\u17DC\\u17DFtr\\xe9\\u17D1r;\\uC000\\ud835\\udd35\\u0100Aa\\u3A94\\u3A97r\\xf2\\u03C3r\\xf2\\u09F6;\\u43BE\\u0100Aa\\u3AA1\\u3AA4r\\xf2\\u03B8r\\xf2\\u09EBa\\xf0\\u2713is;\\u62FB\\u0180dpt\\u17A4\\u3AB5\\u3ABE\\u0100fl\\u3ABA\\u17A9;\\uC000\\ud835\\udd69im\\xe5\\u17B2\\u0100Aa\\u3AC7\\u3ACAr\\xf2\\u03CEr\\xf2\\u0A01\\u0100cq\\u3AD2\\u17B8r;\\uC000\\ud835\\udccd\\u0100pt\\u17D6\\u3ADCr\\xe9\\u17D4\\u0400acefiosu\\u3AF0\\u3AFD\\u3B08\\u3B0C\\u3B11\\u3B15\\u3B1B\\u3B21c\\u0100uy\\u3AF6\\u3AFBte\\u803B\\xfd\\u40FD;\\u444F\\u0100iy\\u3B02\\u3B06rc;\\u4177;\\u444Bn\\u803B\\xa5\\u40A5r;\\uC000\\ud835\\udd36cy;\\u4457pf;\\uC000\\ud835\\udd6acr;\\uC000\\ud835\\udcce\\u0100cm\\u3B26\\u3B29y;\\u444El\\u803B\\xff\\u40FF\\u0500acdefhiosw\\u3B42\\u3B48\\u3B54\\u3B58\\u3B64\\u3B69\\u3B6D\\u3B74\\u3B7A\\u3B80cute;\\u417A\\u0100ay\\u3B4D\\u3B52ron;\\u417E;\\u4437ot;\\u417C\\u0100et\\u3B5D\\u3B61tr\\xe6\\u155Fa;\\u43B6r;\\uC000\\ud835\\udd37cy;\\u4436grarr;\\u61DDpf;\\uC000\\ud835\\udd6bcr;\\uC000\\ud835\\udccf\\u0100jn\\u3B85\\u3B87;\\u600Dj;\\u600C'.split(\"\").map((c)=>c.charCodeAt(0)));\n\n\n// Generated using scripts/write-decode-map.ts\nvar $8f8573b78e12f3de$export$2e2bcd8739ae039 = new Uint16Array(// prettier-ignore\n\"\\u0200aglq\t\\x15\\x18\\x1b\\u026D\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403Et;\\u403Cuot;\\u4022\".split(\"\").map((c)=>c.charCodeAt(0)));\n\n\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar $0fdc3a4215784dc1$var$_a;\nconst $0fdc3a4215784dc1$var$decodeMap = new Map([\n [\n 0,\n 65533\n ],\n // C1 Unicode control character reference replacements\n [\n 128,\n 8364\n ],\n [\n 130,\n 8218\n ],\n [\n 131,\n 402\n ],\n [\n 132,\n 8222\n ],\n [\n 133,\n 8230\n ],\n [\n 134,\n 8224\n ],\n [\n 135,\n 8225\n ],\n [\n 136,\n 710\n ],\n [\n 137,\n 8240\n ],\n [\n 138,\n 352\n ],\n [\n 139,\n 8249\n ],\n [\n 140,\n 338\n ],\n [\n 142,\n 381\n ],\n [\n 145,\n 8216\n ],\n [\n 146,\n 8217\n ],\n [\n 147,\n 8220\n ],\n [\n 148,\n 8221\n ],\n [\n 149,\n 8226\n ],\n [\n 150,\n 8211\n ],\n [\n 151,\n 8212\n ],\n [\n 152,\n 732\n ],\n [\n 153,\n 8482\n ],\n [\n 154,\n 353\n ],\n [\n 155,\n 8250\n ],\n [\n 156,\n 339\n ],\n [\n 158,\n 382\n ],\n [\n 159,\n 376\n ]\n]);\nconst $0fdc3a4215784dc1$export$73bfc63873071f74 = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n($0fdc3a4215784dc1$var$_a = String.fromCodePoint) !== null && $0fdc3a4215784dc1$var$_a !== void 0 ? $0fdc3a4215784dc1$var$_a : function(codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(codePoint >>> 10 & 0x3ff | 0xd800);\n codePoint = 0xdc00 | codePoint & 0x3ff;\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\nfunction $0fdc3a4215784dc1$export$b978ab756102108a(codePoint) {\n var _a;\n if (codePoint >= 0xd800 && codePoint <= 0xdfff || codePoint > 0x10ffff) return 0xfffd;\n return (_a = $0fdc3a4215784dc1$var$decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nfunction $0fdc3a4215784dc1$export$2e2bcd8739ae039(codePoint) {\n return $0fdc3a4215784dc1$export$73bfc63873071f74($0fdc3a4215784dc1$export$b978ab756102108a(codePoint));\n}\n\n\nvar $1d4e17494442e5eb$var$CharCodes;\n(function(CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})($1d4e17494442e5eb$var$CharCodes || ($1d4e17494442e5eb$var$CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */ const $1d4e17494442e5eb$var$TO_LOWER_BIT = 32;\nvar $1d4e17494442e5eb$export$6a4325c613e0faec;\n(function(BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})($1d4e17494442e5eb$export$6a4325c613e0faec || ($1d4e17494442e5eb$export$6a4325c613e0faec = {}));\nfunction $1d4e17494442e5eb$var$isNumber(code) {\n return code >= $1d4e17494442e5eb$var$CharCodes.ZERO && code <= $1d4e17494442e5eb$var$CharCodes.NINE;\n}\nfunction $1d4e17494442e5eb$var$isHexadecimalCharacter(code) {\n return code >= $1d4e17494442e5eb$var$CharCodes.UPPER_A && code <= $1d4e17494442e5eb$var$CharCodes.UPPER_F || code >= $1d4e17494442e5eb$var$CharCodes.LOWER_A && code <= $1d4e17494442e5eb$var$CharCodes.LOWER_F;\n}\nfunction $1d4e17494442e5eb$var$isAsciiAlphaNumeric(code) {\n return code >= $1d4e17494442e5eb$var$CharCodes.UPPER_A && code <= $1d4e17494442e5eb$var$CharCodes.UPPER_Z || code >= $1d4e17494442e5eb$var$CharCodes.LOWER_A && code <= $1d4e17494442e5eb$var$CharCodes.LOWER_Z || $1d4e17494442e5eb$var$isNumber(code);\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */ function $1d4e17494442e5eb$var$isEntityInAttributeInvalidEnd(code) {\n return code === $1d4e17494442e5eb$var$CharCodes.EQUALS || $1d4e17494442e5eb$var$isAsciiAlphaNumeric(code);\n}\nvar $1d4e17494442e5eb$var$EntityDecoderState;\n(function(EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})($1d4e17494442e5eb$var$EntityDecoderState || ($1d4e17494442e5eb$var$EntityDecoderState = {}));\nvar $1d4e17494442e5eb$export$8c8f129ce60f53c;\n(function(DecodingMode) {\n /** Entities in text nodes that can end with any character. */ DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */ DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */ DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})($1d4e17494442e5eb$export$8c8f129ce60f53c || ($1d4e17494442e5eb$export$8c8f129ce60f53c = {}));\nclass $1d4e17494442e5eb$export$15263a93ff7ec8ba {\n constructor(/** The tree used to decode entities. */ decodeTree, /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */ emitCodePoint, /** An object that is used to produce errors. */ errors){\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */ this.state = $1d4e17494442e5eb$var$EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */ this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */ this.result = 0;\n /** The current index in the decode tree. */ this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */ this.excess = 1;\n /** The mode in which the decoder is operating. */ this.decodeMode = $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict;\n }\n /** Resets the instance to make it reusable. */ startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ write(str, offset) {\n switch(this.state){\n case $1d4e17494442e5eb$var$EntityDecoderState.EntityStart:\n if (str.charCodeAt(offset) === $1d4e17494442e5eb$var$CharCodes.NUM) {\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericStart:\n return this.stateNumericStart(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericDecimal:\n return this.stateNumericDecimal(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericHex:\n return this.stateNumericHex(str, offset);\n case $1d4e17494442e5eb$var$EntityDecoderState.NamedEntity:\n return this.stateNamedEntity(str, offset);\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNumericStart(str, offset) {\n if (offset >= str.length) return -1;\n if ((str.charCodeAt(offset) | $1d4e17494442e5eb$var$TO_LOWER_BIT) === $1d4e17494442e5eb$var$CharCodes.LOWER_X) {\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = $1d4e17494442e5eb$var$EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNumericHex(str, offset) {\n const startIdx = offset;\n while(offset < str.length){\n const char = str.charCodeAt(offset);\n if ($1d4e17494442e5eb$var$isNumber(char) || $1d4e17494442e5eb$var$isHexadecimalCharacter(char)) offset += 1;\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while(offset < str.length){\n const char = str.charCodeAt(offset);\n if ($1d4e17494442e5eb$var$isNumber(char)) offset += 1;\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */ emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === $1d4e17494442e5eb$var$CharCodes.SEMI) this.consumed += 1;\n else if (this.decodeMode === $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict) return 0;\n this.emitCodePoint((0, $0fdc3a4215784dc1$export$b978ab756102108a)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== $1d4e17494442e5eb$var$CharCodes.SEMI) this.errors.missingSemicolonAfterCharacterReference();\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */ stateNamedEntity(str, offset) {\n const { decodeTree: decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & $1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH) >> 14;\n for(; offset < str.length; offset++, this.excess++){\n const char = str.charCodeAt(offset);\n this.treeIndex = $1d4e17494442e5eb$export$44c08d99945e6276(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) return this.result === 0 || // If we are parsing an attribute\n this.decodeMode === $1d4e17494442e5eb$export$8c8f129ce60f53c.Attribute && // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 || // And there should be no invalid characters.\n $1d4e17494442e5eb$var$isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();\n current = decodeTree[this.treeIndex];\n valueLength = (current & $1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === $1d4e17494442e5eb$var$CharCodes.SEMI) return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */ emitNotTerminatedNamedEntity() {\n var _a;\n const { result: result, decodeTree: decodeTree } = this;\n const valueLength = (decodeTree[result] & $1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 || _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */ emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree: decodeTree } = this;\n this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~$1d4e17494442e5eb$export$6a4325c613e0faec.VALUE_LENGTH : decodeTree[result + 1], consumed);\n if (valueLength === 3) // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */ end() {\n var _a;\n switch(this.state){\n case $1d4e17494442e5eb$var$EntityDecoderState.NamedEntity:\n // Emit a named entity if we have one.\n return this.result !== 0 && (this.decodeMode !== $1d4e17494442e5eb$export$8c8f129ce60f53c.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;\n // Otherwise, emit a numeric entity if we have one.\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericDecimal:\n return this.emitNumericEntity(0, 2);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericHex:\n return this.emitNumericEntity(0, 3);\n case $1d4e17494442e5eb$var$EntityDecoderState.NumericStart:\n (_a = this.errors) === null || _a === void 0 || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n case $1d4e17494442e5eb$var$EntityDecoderState.EntityStart:\n // Return 0 if we have no entity.\n return 0;\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */ function $1d4e17494442e5eb$var$getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new $1d4e17494442e5eb$export$15263a93ff7ec8ba(decodeTree, (str)=>ret += (0, $0fdc3a4215784dc1$export$73bfc63873071f74)(str));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while((offset = str.indexOf(\"&\", offset)) >= 0){\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\nfunction $1d4e17494442e5eb$export$44c08d99945e6276(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & $1d4e17494442e5eb$export$6a4325c613e0faec.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & $1d4e17494442e5eb$export$6a4325c613e0faec.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while(lo <= hi){\n const mid = lo + hi >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) lo = mid + 1;\n else if (midVal > char) hi = mid - 1;\n else return decodeTree[mid + branchCount];\n }\n return -1;\n}\nconst $1d4e17494442e5eb$var$htmlDecoder = $1d4e17494442e5eb$var$getDecoder((0, $d4540ff683f7394b$export$2e2bcd8739ae039));\nconst $1d4e17494442e5eb$var$xmlDecoder = $1d4e17494442e5eb$var$getDecoder((0, $8f8573b78e12f3de$export$2e2bcd8739ae039));\nfunction $1d4e17494442e5eb$export$f045cb747ce77a19(str, mode = $1d4e17494442e5eb$export$8c8f129ce60f53c.Legacy) {\n return $1d4e17494442e5eb$var$htmlDecoder(str, mode);\n}\nfunction $1d4e17494442e5eb$export$49f5e8089adb006a(str) {\n return $1d4e17494442e5eb$var$htmlDecoder(str, $1d4e17494442e5eb$export$8c8f129ce60f53c.Attribute);\n}\nfunction $1d4e17494442e5eb$export$da52f4371b3f37de(str) {\n return $1d4e17494442e5eb$var$htmlDecoder(str, $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict);\n}\nfunction $1d4e17494442e5eb$export$88e3b9643a8bd06e(str) {\n return $1d4e17494442e5eb$var$xmlDecoder(str, $1d4e17494442e5eb$export$8c8f129ce60f53c.Strict);\n}\n\n\n// Generated using scripts/write-encode-map.ts\nfunction $30ae39ed5c434785$var$restoreDiff(arr) {\n for(let i = 1; i < arr.length; i++)arr[i][0] += arr[i - 1][0] + 1;\n return arr;\n}\nvar // prettier-ignore\n$30ae39ed5c434785$export$2e2bcd8739ae039 = new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 9,\n \"	\"\n ],\n [\n 0,\n \"
\"\n ],\n [\n 22,\n \"!\"\n ],\n [\n 0,\n \""\"\n ],\n [\n 0,\n \"#\"\n ],\n [\n 0,\n \"$\"\n ],\n [\n 0,\n \"%\"\n ],\n [\n 0,\n \"&\"\n ],\n [\n 0,\n \"'\"\n ],\n [\n 0,\n \"(\"\n ],\n [\n 0,\n \")\"\n ],\n [\n 0,\n \"*\"\n ],\n [\n 0,\n \"+\"\n ],\n [\n 0,\n \",\"\n ],\n [\n 1,\n \".\"\n ],\n [\n 0,\n \"/\"\n ],\n [\n 10,\n \":\"\n ],\n [\n 0,\n \";\"\n ],\n [\n 0,\n {\n v: \"<\",\n n: 8402,\n o: \"<⃒\"\n }\n ],\n [\n 0,\n {\n v: \"=\",\n n: 8421,\n o: \"=⃥\"\n }\n ],\n [\n 0,\n {\n v: \">\",\n n: 8402,\n o: \">⃒\"\n }\n ],\n [\n 0,\n \"?\"\n ],\n [\n 0,\n \"@\"\n ],\n [\n 26,\n \"[\"\n ],\n [\n 0,\n \"\\"\n ],\n [\n 0,\n \"]\"\n ],\n [\n 0,\n \"^\"\n ],\n [\n 0,\n \"_\"\n ],\n [\n 0,\n \"`\"\n ],\n [\n 5,\n {\n n: 106,\n o: \"fj\"\n }\n ],\n [\n 20,\n \"{\"\n ],\n [\n 0,\n \"|\"\n ],\n [\n 0,\n \"}\"\n ],\n [\n 34,\n \" \"\n ],\n [\n 0,\n \"¡\"\n ],\n [\n 0,\n \"¢\"\n ],\n [\n 0,\n \"£\"\n ],\n [\n 0,\n \"¤\"\n ],\n [\n 0,\n \"¥\"\n ],\n [\n 0,\n \"¦\"\n ],\n [\n 0,\n \"§\"\n ],\n [\n 0,\n \"¨\"\n ],\n [\n 0,\n \"©\"\n ],\n [\n 0,\n \"ª\"\n ],\n [\n 0,\n \"«\"\n ],\n [\n 0,\n \"¬\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"®\"\n ],\n [\n 0,\n \"¯\"\n ],\n [\n 0,\n \"°\"\n ],\n [\n 0,\n \"±\"\n ],\n [\n 0,\n \"²\"\n ],\n [\n 0,\n \"³\"\n ],\n [\n 0,\n \"´\"\n ],\n [\n 0,\n \"µ\"\n ],\n [\n 0,\n \"¶\"\n ],\n [\n 0,\n \"·\"\n ],\n [\n 0,\n \"¸\"\n ],\n [\n 0,\n \"¹\"\n ],\n [\n 0,\n \"º\"\n ],\n [\n 0,\n \"»\"\n ],\n [\n 0,\n \"¼\"\n ],\n [\n 0,\n \"½\"\n ],\n [\n 0,\n \"¾\"\n ],\n [\n 0,\n \"¿\"\n ],\n [\n 0,\n \"À\"\n ],\n [\n 0,\n \"Á\"\n ],\n [\n 0,\n \"Â\"\n ],\n [\n 0,\n \"Ã\"\n ],\n [\n 0,\n \"Ä\"\n ],\n [\n 0,\n \"Å\"\n ],\n [\n 0,\n \"Æ\"\n ],\n [\n 0,\n \"Ç\"\n ],\n [\n 0,\n \"È\"\n ],\n [\n 0,\n \"É\"\n ],\n [\n 0,\n \"Ê\"\n ],\n [\n 0,\n \"Ë\"\n ],\n [\n 0,\n \"Ì\"\n ],\n [\n 0,\n \"Í\"\n ],\n [\n 0,\n \"Î\"\n ],\n [\n 0,\n \"Ï\"\n ],\n [\n 0,\n \"Ð\"\n ],\n [\n 0,\n \"Ñ\"\n ],\n [\n 0,\n \"Ò\"\n ],\n [\n 0,\n \"Ó\"\n ],\n [\n 0,\n \"Ô\"\n ],\n [\n 0,\n \"Õ\"\n ],\n [\n 0,\n \"Ö\"\n ],\n [\n 0,\n \"×\"\n ],\n [\n 0,\n \"Ø\"\n ],\n [\n 0,\n \"Ù\"\n ],\n [\n 0,\n \"Ú\"\n ],\n [\n 0,\n \"Û\"\n ],\n [\n 0,\n \"Ü\"\n ],\n [\n 0,\n \"Ý\"\n ],\n [\n 0,\n \"Þ\"\n ],\n [\n 0,\n \"ß\"\n ],\n [\n 0,\n \"à\"\n ],\n [\n 0,\n \"á\"\n ],\n [\n 0,\n \"â\"\n ],\n [\n 0,\n \"ã\"\n ],\n [\n 0,\n \"ä\"\n ],\n [\n 0,\n \"å\"\n ],\n [\n 0,\n \"æ\"\n ],\n [\n 0,\n \"ç\"\n ],\n [\n 0,\n \"è\"\n ],\n [\n 0,\n \"é\"\n ],\n [\n 0,\n \"ê\"\n ],\n [\n 0,\n \"ë\"\n ],\n [\n 0,\n \"ì\"\n ],\n [\n 0,\n \"í\"\n ],\n [\n 0,\n \"î\"\n ],\n [\n 0,\n \"ï\"\n ],\n [\n 0,\n \"ð\"\n ],\n [\n 0,\n \"ñ\"\n ],\n [\n 0,\n \"ò\"\n ],\n [\n 0,\n \"ó\"\n ],\n [\n 0,\n \"ô\"\n ],\n [\n 0,\n \"õ\"\n ],\n [\n 0,\n \"ö\"\n ],\n [\n 0,\n \"÷\"\n ],\n [\n 0,\n \"ø\"\n ],\n [\n 0,\n \"ù\"\n ],\n [\n 0,\n \"ú\"\n ],\n [\n 0,\n \"û\"\n ],\n [\n 0,\n \"ü\"\n ],\n [\n 0,\n \"ý\"\n ],\n [\n 0,\n \"þ\"\n ],\n [\n 0,\n \"ÿ\"\n ],\n [\n 0,\n \"Ā\"\n ],\n [\n 0,\n \"ā\"\n ],\n [\n 0,\n \"Ă\"\n ],\n [\n 0,\n \"ă\"\n ],\n [\n 0,\n \"Ą\"\n ],\n [\n 0,\n \"ą\"\n ],\n [\n 0,\n \"Ć\"\n ],\n [\n 0,\n \"ć\"\n ],\n [\n 0,\n \"Ĉ\"\n ],\n [\n 0,\n \"ĉ\"\n ],\n [\n 0,\n \"Ċ\"\n ],\n [\n 0,\n \"ċ\"\n ],\n [\n 0,\n \"Č\"\n ],\n [\n 0,\n \"č\"\n ],\n [\n 0,\n \"Ď\"\n ],\n [\n 0,\n \"ď\"\n ],\n [\n 0,\n \"Đ\"\n ],\n [\n 0,\n \"đ\"\n ],\n [\n 0,\n \"Ē\"\n ],\n [\n 0,\n \"ē\"\n ],\n [\n 2,\n \"Ė\"\n ],\n [\n 0,\n \"ė\"\n ],\n [\n 0,\n \"Ę\"\n ],\n [\n 0,\n \"ę\"\n ],\n [\n 0,\n \"Ě\"\n ],\n [\n 0,\n \"ě\"\n ],\n [\n 0,\n \"Ĝ\"\n ],\n [\n 0,\n \"ĝ\"\n ],\n [\n 0,\n \"Ğ\"\n ],\n [\n 0,\n \"ğ\"\n ],\n [\n 0,\n \"Ġ\"\n ],\n [\n 0,\n \"ġ\"\n ],\n [\n 0,\n \"Ģ\"\n ],\n [\n 1,\n \"Ĥ\"\n ],\n [\n 0,\n \"ĥ\"\n ],\n [\n 0,\n \"Ħ\"\n ],\n [\n 0,\n \"ħ\"\n ],\n [\n 0,\n \"Ĩ\"\n ],\n [\n 0,\n \"ĩ\"\n ],\n [\n 0,\n \"Ī\"\n ],\n [\n 0,\n \"ī\"\n ],\n [\n 2,\n \"Į\"\n ],\n [\n 0,\n \"į\"\n ],\n [\n 0,\n \"İ\"\n ],\n [\n 0,\n \"ı\"\n ],\n [\n 0,\n \"IJ\"\n ],\n [\n 0,\n \"ij\"\n ],\n [\n 0,\n \"Ĵ\"\n ],\n [\n 0,\n \"ĵ\"\n ],\n [\n 0,\n \"Ķ\"\n ],\n [\n 0,\n \"ķ\"\n ],\n [\n 0,\n \"ĸ\"\n ],\n [\n 0,\n \"Ĺ\"\n ],\n [\n 0,\n \"ĺ\"\n ],\n [\n 0,\n \"Ļ\"\n ],\n [\n 0,\n \"ļ\"\n ],\n [\n 0,\n \"Ľ\"\n ],\n [\n 0,\n \"ľ\"\n ],\n [\n 0,\n \"Ŀ\"\n ],\n [\n 0,\n \"ŀ\"\n ],\n [\n 0,\n \"Ł\"\n ],\n [\n 0,\n \"ł\"\n ],\n [\n 0,\n \"Ń\"\n ],\n [\n 0,\n \"ń\"\n ],\n [\n 0,\n \"Ņ\"\n ],\n [\n 0,\n \"ņ\"\n ],\n [\n 0,\n \"Ň\"\n ],\n [\n 0,\n \"ň\"\n ],\n [\n 0,\n \"ʼn\"\n ],\n [\n 0,\n \"Ŋ\"\n ],\n [\n 0,\n \"ŋ\"\n ],\n [\n 0,\n \"Ō\"\n ],\n [\n 0,\n \"ō\"\n ],\n [\n 2,\n \"Ő\"\n ],\n [\n 0,\n \"ő\"\n ],\n [\n 0,\n \"Œ\"\n ],\n [\n 0,\n \"œ\"\n ],\n [\n 0,\n \"Ŕ\"\n ],\n [\n 0,\n \"ŕ\"\n ],\n [\n 0,\n \"Ŗ\"\n ],\n [\n 0,\n \"ŗ\"\n ],\n [\n 0,\n \"Ř\"\n ],\n [\n 0,\n \"ř\"\n ],\n [\n 0,\n \"Ś\"\n ],\n [\n 0,\n \"ś\"\n ],\n [\n 0,\n \"Ŝ\"\n ],\n [\n 0,\n \"ŝ\"\n ],\n [\n 0,\n \"Ş\"\n ],\n [\n 0,\n \"ş\"\n ],\n [\n 0,\n \"Š\"\n ],\n [\n 0,\n \"š\"\n ],\n [\n 0,\n \"Ţ\"\n ],\n [\n 0,\n \"ţ\"\n ],\n [\n 0,\n \"Ť\"\n ],\n [\n 0,\n \"ť\"\n ],\n [\n 0,\n \"Ŧ\"\n ],\n [\n 0,\n \"ŧ\"\n ],\n [\n 0,\n \"Ũ\"\n ],\n [\n 0,\n \"ũ\"\n ],\n [\n 0,\n \"Ū\"\n ],\n [\n 0,\n \"ū\"\n ],\n [\n 0,\n \"Ŭ\"\n ],\n [\n 0,\n \"ŭ\"\n ],\n [\n 0,\n \"Ů\"\n ],\n [\n 0,\n \"ů\"\n ],\n [\n 0,\n \"Ű\"\n ],\n [\n 0,\n \"ű\"\n ],\n [\n 0,\n \"Ų\"\n ],\n [\n 0,\n \"ų\"\n ],\n [\n 0,\n \"Ŵ\"\n ],\n [\n 0,\n \"ŵ\"\n ],\n [\n 0,\n \"Ŷ\"\n ],\n [\n 0,\n \"ŷ\"\n ],\n [\n 0,\n \"Ÿ\"\n ],\n [\n 0,\n \"Ź\"\n ],\n [\n 0,\n \"ź\"\n ],\n [\n 0,\n \"Ż\"\n ],\n [\n 0,\n \"ż\"\n ],\n [\n 0,\n \"Ž\"\n ],\n [\n 0,\n \"ž\"\n ],\n [\n 19,\n \"ƒ\"\n ],\n [\n 34,\n \"Ƶ\"\n ],\n [\n 63,\n \"ǵ\"\n ],\n [\n 65,\n \"ȷ\"\n ],\n [\n 142,\n \"ˆ\"\n ],\n [\n 0,\n \"ˇ\"\n ],\n [\n 16,\n \"˘\"\n ],\n [\n 0,\n \"˙\"\n ],\n [\n 0,\n \"˚\"\n ],\n [\n 0,\n \"˛\"\n ],\n [\n 0,\n \"˜\"\n ],\n [\n 0,\n \"˝\"\n ],\n [\n 51,\n \"̑\"\n ],\n [\n 127,\n \"Α\"\n ],\n [\n 0,\n \"Β\"\n ],\n [\n 0,\n \"Γ\"\n ],\n [\n 0,\n \"Δ\"\n ],\n [\n 0,\n \"Ε\"\n ],\n [\n 0,\n \"Ζ\"\n ],\n [\n 0,\n \"Η\"\n ],\n [\n 0,\n \"Θ\"\n ],\n [\n 0,\n \"Ι\"\n ],\n [\n 0,\n \"Κ\"\n ],\n [\n 0,\n \"Λ\"\n ],\n [\n 0,\n \"Μ\"\n ],\n [\n 0,\n \"Ν\"\n ],\n [\n 0,\n \"Ξ\"\n ],\n [\n 0,\n \"Ο\"\n ],\n [\n 0,\n \"Π\"\n ],\n [\n 0,\n \"Ρ\"\n ],\n [\n 1,\n \"Σ\"\n ],\n [\n 0,\n \"Τ\"\n ],\n [\n 0,\n \"Υ\"\n ],\n [\n 0,\n \"Φ\"\n ],\n [\n 0,\n \"Χ\"\n ],\n [\n 0,\n \"Ψ\"\n ],\n [\n 0,\n \"Ω\"\n ],\n [\n 7,\n \"α\"\n ],\n [\n 0,\n \"β\"\n ],\n [\n 0,\n \"γ\"\n ],\n [\n 0,\n \"δ\"\n ],\n [\n 0,\n \"ε\"\n ],\n [\n 0,\n \"ζ\"\n ],\n [\n 0,\n \"η\"\n ],\n [\n 0,\n \"θ\"\n ],\n [\n 0,\n \"ι\"\n ],\n [\n 0,\n \"κ\"\n ],\n [\n 0,\n \"λ\"\n ],\n [\n 0,\n \"μ\"\n ],\n [\n 0,\n \"ν\"\n ],\n [\n 0,\n \"ξ\"\n ],\n [\n 0,\n \"ο\"\n ],\n [\n 0,\n \"π\"\n ],\n [\n 0,\n \"ρ\"\n ],\n [\n 0,\n \"ς\"\n ],\n [\n 0,\n \"σ\"\n ],\n [\n 0,\n \"τ\"\n ],\n [\n 0,\n \"υ\"\n ],\n [\n 0,\n \"φ\"\n ],\n [\n 0,\n \"χ\"\n ],\n [\n 0,\n \"ψ\"\n ],\n [\n 0,\n \"ω\"\n ],\n [\n 7,\n \"ϑ\"\n ],\n [\n 0,\n \"ϒ\"\n ],\n [\n 2,\n \"ϕ\"\n ],\n [\n 0,\n \"ϖ\"\n ],\n [\n 5,\n \"Ϝ\"\n ],\n [\n 0,\n \"ϝ\"\n ],\n [\n 18,\n \"ϰ\"\n ],\n [\n 0,\n \"ϱ\"\n ],\n [\n 3,\n \"ϵ\"\n ],\n [\n 0,\n \"϶\"\n ],\n [\n 10,\n \"Ё\"\n ],\n [\n 0,\n \"Ђ\"\n ],\n [\n 0,\n \"Ѓ\"\n ],\n [\n 0,\n \"Є\"\n ],\n [\n 0,\n \"Ѕ\"\n ],\n [\n 0,\n \"І\"\n ],\n [\n 0,\n \"Ї\"\n ],\n [\n 0,\n \"Ј\"\n ],\n [\n 0,\n \"Љ\"\n ],\n [\n 0,\n \"Њ\"\n ],\n [\n 0,\n \"Ћ\"\n ],\n [\n 0,\n \"Ќ\"\n ],\n [\n 1,\n \"Ў\"\n ],\n [\n 0,\n \"Џ\"\n ],\n [\n 0,\n \"А\"\n ],\n [\n 0,\n \"Б\"\n ],\n [\n 0,\n \"В\"\n ],\n [\n 0,\n \"Г\"\n ],\n [\n 0,\n \"Д\"\n ],\n [\n 0,\n \"Е\"\n ],\n [\n 0,\n \"Ж\"\n ],\n [\n 0,\n \"З\"\n ],\n [\n 0,\n \"И\"\n ],\n [\n 0,\n \"Й\"\n ],\n [\n 0,\n \"К\"\n ],\n [\n 0,\n \"Л\"\n ],\n [\n 0,\n \"М\"\n ],\n [\n 0,\n \"Н\"\n ],\n [\n 0,\n \"О\"\n ],\n [\n 0,\n \"П\"\n ],\n [\n 0,\n \"Р\"\n ],\n [\n 0,\n \"С\"\n ],\n [\n 0,\n \"Т\"\n ],\n [\n 0,\n \"У\"\n ],\n [\n 0,\n \"Ф\"\n ],\n [\n 0,\n \"Х\"\n ],\n [\n 0,\n \"Ц\"\n ],\n [\n 0,\n \"Ч\"\n ],\n [\n 0,\n \"Ш\"\n ],\n [\n 0,\n \"Щ\"\n ],\n [\n 0,\n \"Ъ\"\n ],\n [\n 0,\n \"Ы\"\n ],\n [\n 0,\n \"Ь\"\n ],\n [\n 0,\n \"Э\"\n ],\n [\n 0,\n \"Ю\"\n ],\n [\n 0,\n \"Я\"\n ],\n [\n 0,\n \"а\"\n ],\n [\n 0,\n \"б\"\n ],\n [\n 0,\n \"в\"\n ],\n [\n 0,\n \"г\"\n ],\n [\n 0,\n \"д\"\n ],\n [\n 0,\n \"е\"\n ],\n [\n 0,\n \"ж\"\n ],\n [\n 0,\n \"з\"\n ],\n [\n 0,\n \"и\"\n ],\n [\n 0,\n \"й\"\n ],\n [\n 0,\n \"к\"\n ],\n [\n 0,\n \"л\"\n ],\n [\n 0,\n \"м\"\n ],\n [\n 0,\n \"н\"\n ],\n [\n 0,\n \"о\"\n ],\n [\n 0,\n \"п\"\n ],\n [\n 0,\n \"р\"\n ],\n [\n 0,\n \"с\"\n ],\n [\n 0,\n \"т\"\n ],\n [\n 0,\n \"у\"\n ],\n [\n 0,\n \"ф\"\n ],\n [\n 0,\n \"х\"\n ],\n [\n 0,\n \"ц\"\n ],\n [\n 0,\n \"ч\"\n ],\n [\n 0,\n \"ш\"\n ],\n [\n 0,\n \"щ\"\n ],\n [\n 0,\n \"ъ\"\n ],\n [\n 0,\n \"ы\"\n ],\n [\n 0,\n \"ь\"\n ],\n [\n 0,\n \"э\"\n ],\n [\n 0,\n \"ю\"\n ],\n [\n 0,\n \"я\"\n ],\n [\n 1,\n \"ё\"\n ],\n [\n 0,\n \"ђ\"\n ],\n [\n 0,\n \"ѓ\"\n ],\n [\n 0,\n \"є\"\n ],\n [\n 0,\n \"ѕ\"\n ],\n [\n 0,\n \"і\"\n ],\n [\n 0,\n \"ї\"\n ],\n [\n 0,\n \"ј\"\n ],\n [\n 0,\n \"љ\"\n ],\n [\n 0,\n \"њ\"\n ],\n [\n 0,\n \"ћ\"\n ],\n [\n 0,\n \"ќ\"\n ],\n [\n 1,\n \"ў\"\n ],\n [\n 0,\n \"џ\"\n ],\n [\n 7074,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 1,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \" \"\n ],\n [\n 0,\n \"​\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"\"\n ],\n [\n 0,\n \"‐\"\n ],\n [\n 2,\n \"–\"\n ],\n [\n 0,\n \"—\"\n ],\n [\n 0,\n \"―\"\n ],\n [\n 0,\n \"‖\"\n ],\n [\n 1,\n \"‘\"\n ],\n [\n 0,\n \"’\"\n ],\n [\n 0,\n \"‚\"\n ],\n [\n 1,\n \"“\"\n ],\n [\n 0,\n \"”\"\n ],\n [\n 0,\n \"„\"\n ],\n [\n 1,\n \"†\"\n ],\n [\n 0,\n \"‡\"\n ],\n [\n 0,\n \"•\"\n ],\n [\n 2,\n \"‥\"\n ],\n [\n 0,\n \"…\"\n ],\n [\n 9,\n \"‰\"\n ],\n [\n 0,\n \"‱\"\n ],\n [\n 0,\n \"′\"\n ],\n [\n 0,\n \"″\"\n ],\n [\n 0,\n \"‴\"\n ],\n [\n 0,\n \"‵\"\n ],\n [\n 3,\n \"‹\"\n ],\n [\n 0,\n \"›\"\n ],\n [\n 3,\n \"‾\"\n ],\n [\n 2,\n \"⁁\"\n ],\n [\n 1,\n \"⁃\"\n ],\n [\n 0,\n \"⁄\"\n ],\n [\n 10,\n \"⁏\"\n ],\n [\n 7,\n \"⁗\"\n ],\n [\n 7,\n {\n v: \" \",\n n: 8202,\n o: \"  \"\n }\n ],\n [\n 0,\n \"⁠\"\n ],\n [\n 0,\n \"⁡\"\n ],\n [\n 0,\n \"⁢\"\n ],\n [\n 0,\n \"⁣\"\n ],\n [\n 72,\n \"€\"\n ],\n [\n 46,\n \"⃛\"\n ],\n [\n 0,\n \"⃜\"\n ],\n [\n 37,\n \"ℂ\"\n ],\n [\n 2,\n \"℅\"\n ],\n [\n 4,\n \"ℊ\"\n ],\n [\n 0,\n \"ℋ\"\n ],\n [\n 0,\n \"ℌ\"\n ],\n [\n 0,\n \"ℍ\"\n ],\n [\n 0,\n \"ℎ\"\n ],\n [\n 0,\n \"ℏ\"\n ],\n [\n 0,\n \"ℐ\"\n ],\n [\n 0,\n \"ℑ\"\n ],\n [\n 0,\n \"ℒ\"\n ],\n [\n 0,\n \"ℓ\"\n ],\n [\n 1,\n \"ℕ\"\n ],\n [\n 0,\n \"№\"\n ],\n [\n 0,\n \"℗\"\n ],\n [\n 0,\n \"℘\"\n ],\n [\n 0,\n \"ℙ\"\n ],\n [\n 0,\n \"ℚ\"\n ],\n [\n 0,\n \"ℛ\"\n ],\n [\n 0,\n \"ℜ\"\n ],\n [\n 0,\n \"ℝ\"\n ],\n [\n 0,\n \"℞\"\n ],\n [\n 3,\n \"™\"\n ],\n [\n 1,\n \"ℤ\"\n ],\n [\n 2,\n \"℧\"\n ],\n [\n 0,\n \"ℨ\"\n ],\n [\n 0,\n \"℩\"\n ],\n [\n 2,\n \"ℬ\"\n ],\n [\n 0,\n \"ℭ\"\n ],\n [\n 1,\n \"ℯ\"\n ],\n [\n 0,\n \"ℰ\"\n ],\n [\n 0,\n \"ℱ\"\n ],\n [\n 1,\n \"ℳ\"\n ],\n [\n 0,\n \"ℴ\"\n ],\n [\n 0,\n \"ℵ\"\n ],\n [\n 0,\n \"ℶ\"\n ],\n [\n 0,\n \"ℷ\"\n ],\n [\n 0,\n \"ℸ\"\n ],\n [\n 12,\n \"ⅅ\"\n ],\n [\n 0,\n \"ⅆ\"\n ],\n [\n 0,\n \"ⅇ\"\n ],\n [\n 0,\n \"ⅈ\"\n ],\n [\n 10,\n \"⅓\"\n ],\n [\n 0,\n \"⅔\"\n ],\n [\n 0,\n \"⅕\"\n ],\n [\n 0,\n \"⅖\"\n ],\n [\n 0,\n \"⅗\"\n ],\n [\n 0,\n \"⅘\"\n ],\n [\n 0,\n \"⅙\"\n ],\n [\n 0,\n \"⅚\"\n ],\n [\n 0,\n \"⅛\"\n ],\n [\n 0,\n \"⅜\"\n ],\n [\n 0,\n \"⅝\"\n ],\n [\n 0,\n \"⅞\"\n ],\n [\n 49,\n \"←\"\n ],\n [\n 0,\n \"↑\"\n ],\n [\n 0,\n \"→\"\n ],\n [\n 0,\n \"↓\"\n ],\n [\n 0,\n \"↔\"\n ],\n [\n 0,\n \"↕\"\n ],\n [\n 0,\n \"↖\"\n ],\n [\n 0,\n \"↗\"\n ],\n [\n 0,\n \"↘\"\n ],\n [\n 0,\n \"↙\"\n ],\n [\n 0,\n \"↚\"\n ],\n [\n 0,\n \"↛\"\n ],\n [\n 1,\n {\n v: \"↝\",\n n: 824,\n o: \"↝̸\"\n }\n ],\n [\n 0,\n \"↞\"\n ],\n [\n 0,\n \"↟\"\n ],\n [\n 0,\n \"↠\"\n ],\n [\n 0,\n \"↡\"\n ],\n [\n 0,\n \"↢\"\n ],\n [\n 0,\n \"↣\"\n ],\n [\n 0,\n \"↤\"\n ],\n [\n 0,\n \"↥\"\n ],\n [\n 0,\n \"↦\"\n ],\n [\n 0,\n \"↧\"\n ],\n [\n 1,\n \"↩\"\n ],\n [\n 0,\n \"↪\"\n ],\n [\n 0,\n \"↫\"\n ],\n [\n 0,\n \"↬\"\n ],\n [\n 0,\n \"↭\"\n ],\n [\n 0,\n \"↮\"\n ],\n [\n 1,\n \"↰\"\n ],\n [\n 0,\n \"↱\"\n ],\n [\n 0,\n \"↲\"\n ],\n [\n 0,\n \"↳\"\n ],\n [\n 1,\n \"↵\"\n ],\n [\n 0,\n \"↶\"\n ],\n [\n 0,\n \"↷\"\n ],\n [\n 2,\n \"↺\"\n ],\n [\n 0,\n \"↻\"\n ],\n [\n 0,\n \"↼\"\n ],\n [\n 0,\n \"↽\"\n ],\n [\n 0,\n \"↾\"\n ],\n [\n 0,\n \"↿\"\n ],\n [\n 0,\n \"⇀\"\n ],\n [\n 0,\n \"⇁\"\n ],\n [\n 0,\n \"⇂\"\n ],\n [\n 0,\n \"⇃\"\n ],\n [\n 0,\n \"⇄\"\n ],\n [\n 0,\n \"⇅\"\n ],\n [\n 0,\n \"⇆\"\n ],\n [\n 0,\n \"⇇\"\n ],\n [\n 0,\n \"⇈\"\n ],\n [\n 0,\n \"⇉\"\n ],\n [\n 0,\n \"⇊\"\n ],\n [\n 0,\n \"⇋\"\n ],\n [\n 0,\n \"⇌\"\n ],\n [\n 0,\n \"⇍\"\n ],\n [\n 0,\n \"⇎\"\n ],\n [\n 0,\n \"⇏\"\n ],\n [\n 0,\n \"⇐\"\n ],\n [\n 0,\n \"⇑\"\n ],\n [\n 0,\n \"⇒\"\n ],\n [\n 0,\n \"⇓\"\n ],\n [\n 0,\n \"⇔\"\n ],\n [\n 0,\n \"⇕\"\n ],\n [\n 0,\n \"⇖\"\n ],\n [\n 0,\n \"⇗\"\n ],\n [\n 0,\n \"⇘\"\n ],\n [\n 0,\n \"⇙\"\n ],\n [\n 0,\n \"⇚\"\n ],\n [\n 0,\n \"⇛\"\n ],\n [\n 1,\n \"⇝\"\n ],\n [\n 6,\n \"⇤\"\n ],\n [\n 0,\n \"⇥\"\n ],\n [\n 15,\n \"⇵\"\n ],\n [\n 7,\n \"⇽\"\n ],\n [\n 0,\n \"⇾\"\n ],\n [\n 0,\n \"⇿\"\n ],\n [\n 0,\n \"∀\"\n ],\n [\n 0,\n \"∁\"\n ],\n [\n 0,\n {\n v: \"∂\",\n n: 824,\n o: \"∂̸\"\n }\n ],\n [\n 0,\n \"∃\"\n ],\n [\n 0,\n \"∄\"\n ],\n [\n 0,\n \"∅\"\n ],\n [\n 1,\n \"∇\"\n ],\n [\n 0,\n \"∈\"\n ],\n [\n 0,\n \"∉\"\n ],\n [\n 1,\n \"∋\"\n ],\n [\n 0,\n \"∌\"\n ],\n [\n 2,\n \"∏\"\n ],\n [\n 0,\n \"∐\"\n ],\n [\n 0,\n \"∑\"\n ],\n [\n 0,\n \"−\"\n ],\n [\n 0,\n \"∓\"\n ],\n [\n 0,\n \"∔\"\n ],\n [\n 1,\n \"∖\"\n ],\n [\n 0,\n \"∗\"\n ],\n [\n 0,\n \"∘\"\n ],\n [\n 1,\n \"√\"\n ],\n [\n 2,\n \"∝\"\n ],\n [\n 0,\n \"∞\"\n ],\n [\n 0,\n \"∟\"\n ],\n [\n 0,\n {\n v: \"∠\",\n n: 8402,\n o: \"∠⃒\"\n }\n ],\n [\n 0,\n \"∡\"\n ],\n [\n 0,\n \"∢\"\n ],\n [\n 0,\n \"∣\"\n ],\n [\n 0,\n \"∤\"\n ],\n [\n 0,\n \"∥\"\n ],\n [\n 0,\n \"∦\"\n ],\n [\n 0,\n \"∧\"\n ],\n [\n 0,\n \"∨\"\n ],\n [\n 0,\n {\n v: \"∩\",\n n: 65024,\n o: \"∩︀\"\n }\n ],\n [\n 0,\n {\n v: \"∪\",\n n: 65024,\n o: \"∪︀\"\n }\n ],\n [\n 0,\n \"∫\"\n ],\n [\n 0,\n \"∬\"\n ],\n [\n 0,\n \"∭\"\n ],\n [\n 0,\n \"∮\"\n ],\n [\n 0,\n \"∯\"\n ],\n [\n 0,\n \"∰\"\n ],\n [\n 0,\n \"∱\"\n ],\n [\n 0,\n \"∲\"\n ],\n [\n 0,\n \"∳\"\n ],\n [\n 0,\n \"∴\"\n ],\n [\n 0,\n \"∵\"\n ],\n [\n 0,\n \"∶\"\n ],\n [\n 0,\n \"∷\"\n ],\n [\n 0,\n \"∸\"\n ],\n [\n 1,\n \"∺\"\n ],\n [\n 0,\n \"∻\"\n ],\n [\n 0,\n {\n v: \"∼\",\n n: 8402,\n o: \"∼⃒\"\n }\n ],\n [\n 0,\n {\n v: \"∽\",\n n: 817,\n o: \"∽̱\"\n }\n ],\n [\n 0,\n {\n v: \"∾\",\n n: 819,\n o: \"∾̳\"\n }\n ],\n [\n 0,\n \"∿\"\n ],\n [\n 0,\n \"≀\"\n ],\n [\n 0,\n \"≁\"\n ],\n [\n 0,\n {\n v: \"≂\",\n n: 824,\n o: \"≂̸\"\n }\n ],\n [\n 0,\n \"≃\"\n ],\n [\n 0,\n \"≄\"\n ],\n [\n 0,\n \"≅\"\n ],\n [\n 0,\n \"≆\"\n ],\n [\n 0,\n \"≇\"\n ],\n [\n 0,\n \"≈\"\n ],\n [\n 0,\n \"≉\"\n ],\n [\n 0,\n \"≊\"\n ],\n [\n 0,\n {\n v: \"≋\",\n n: 824,\n o: \"≋̸\"\n }\n ],\n [\n 0,\n \"≌\"\n ],\n [\n 0,\n {\n v: \"≍\",\n n: 8402,\n o: \"≍⃒\"\n }\n ],\n [\n 0,\n {\n v: \"≎\",\n n: 824,\n o: \"≎̸\"\n }\n ],\n [\n 0,\n {\n v: \"≏\",\n n: 824,\n o: \"≏̸\"\n }\n ],\n [\n 0,\n {\n v: \"≐\",\n n: 824,\n o: \"≐̸\"\n }\n ],\n [\n 0,\n \"≑\"\n ],\n [\n 0,\n \"≒\"\n ],\n [\n 0,\n \"≓\"\n ],\n [\n 0,\n \"≔\"\n ],\n [\n 0,\n \"≕\"\n ],\n [\n 0,\n \"≖\"\n ],\n [\n 0,\n \"≗\"\n ],\n [\n 1,\n \"≙\"\n ],\n [\n 0,\n \"≚\"\n ],\n [\n 1,\n \"≜\"\n ],\n [\n 2,\n \"≟\"\n ],\n [\n 0,\n \"≠\"\n ],\n [\n 0,\n {\n v: \"≡\",\n n: 8421,\n o: \"≡⃥\"\n }\n ],\n [\n 0,\n \"≢\"\n ],\n [\n 1,\n {\n v: \"≤\",\n n: 8402,\n o: \"≤⃒\"\n }\n ],\n [\n 0,\n {\n v: \"≥\",\n n: 8402,\n o: \"≥⃒\"\n }\n ],\n [\n 0,\n {\n v: \"≦\",\n n: 824,\n o: \"≦̸\"\n }\n ],\n [\n 0,\n {\n v: \"≧\",\n n: 824,\n o: \"≧̸\"\n }\n ],\n [\n 0,\n {\n v: \"≨\",\n n: 65024,\n o: \"≨︀\"\n }\n ],\n [\n 0,\n {\n v: \"≩\",\n n: 65024,\n o: \"≩︀\"\n }\n ],\n [\n 0,\n {\n v: \"≪\",\n n: new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 824,\n \"≪̸\"\n ],\n [\n 7577,\n \"≪⃒\"\n ]\n ]))\n }\n ],\n [\n 0,\n {\n v: \"≫\",\n n: new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 824,\n \"≫̸\"\n ],\n [\n 7577,\n \"≫⃒\"\n ]\n ]))\n }\n ],\n [\n 0,\n \"≬\"\n ],\n [\n 0,\n \"≭\"\n ],\n [\n 0,\n \"≮\"\n ],\n [\n 0,\n \"≯\"\n ],\n [\n 0,\n \"≰\"\n ],\n [\n 0,\n \"≱\"\n ],\n [\n 0,\n \"≲\"\n ],\n [\n 0,\n \"≳\"\n ],\n [\n 0,\n \"≴\"\n ],\n [\n 0,\n \"≵\"\n ],\n [\n 0,\n \"≶\"\n ],\n [\n 0,\n \"≷\"\n ],\n [\n 0,\n \"≸\"\n ],\n [\n 0,\n \"≹\"\n ],\n [\n 0,\n \"≺\"\n ],\n [\n 0,\n \"≻\"\n ],\n [\n 0,\n \"≼\"\n ],\n [\n 0,\n \"≽\"\n ],\n [\n 0,\n \"≾\"\n ],\n [\n 0,\n {\n v: \"≿\",\n n: 824,\n o: \"≿̸\"\n }\n ],\n [\n 0,\n \"⊀\"\n ],\n [\n 0,\n \"⊁\"\n ],\n [\n 0,\n {\n v: \"⊂\",\n n: 8402,\n o: \"⊂⃒\"\n }\n ],\n [\n 0,\n {\n v: \"⊃\",\n n: 8402,\n o: \"⊃⃒\"\n }\n ],\n [\n 0,\n \"⊄\"\n ],\n [\n 0,\n \"⊅\"\n ],\n [\n 0,\n \"⊆\"\n ],\n [\n 0,\n \"⊇\"\n ],\n [\n 0,\n \"⊈\"\n ],\n [\n 0,\n \"⊉\"\n ],\n [\n 0,\n {\n v: \"⊊\",\n n: 65024,\n o: \"⊊︀\"\n }\n ],\n [\n 0,\n {\n v: \"⊋\",\n n: 65024,\n o: \"⊋︀\"\n }\n ],\n [\n 1,\n \"⊍\"\n ],\n [\n 0,\n \"⊎\"\n ],\n [\n 0,\n {\n v: \"⊏\",\n n: 824,\n o: \"⊏̸\"\n }\n ],\n [\n 0,\n {\n v: \"⊐\",\n n: 824,\n o: \"⊐̸\"\n }\n ],\n [\n 0,\n \"⊑\"\n ],\n [\n 0,\n \"⊒\"\n ],\n [\n 0,\n {\n v: \"⊓\",\n n: 65024,\n o: \"⊓︀\"\n }\n ],\n [\n 0,\n {\n v: \"⊔\",\n n: 65024,\n o: \"⊔︀\"\n }\n ],\n [\n 0,\n \"⊕\"\n ],\n [\n 0,\n \"⊖\"\n ],\n [\n 0,\n \"⊗\"\n ],\n [\n 0,\n \"⊘\"\n ],\n [\n 0,\n \"⊙\"\n ],\n [\n 0,\n \"⊚\"\n ],\n [\n 0,\n \"⊛\"\n ],\n [\n 1,\n \"⊝\"\n ],\n [\n 0,\n \"⊞\"\n ],\n [\n 0,\n \"⊟\"\n ],\n [\n 0,\n \"⊠\"\n ],\n [\n 0,\n \"⊡\"\n ],\n [\n 0,\n \"⊢\"\n ],\n [\n 0,\n \"⊣\"\n ],\n [\n 0,\n \"⊤\"\n ],\n [\n 0,\n \"⊥\"\n ],\n [\n 1,\n \"⊧\"\n ],\n [\n 0,\n \"⊨\"\n ],\n [\n 0,\n \"⊩\"\n ],\n [\n 0,\n \"⊪\"\n ],\n [\n 0,\n \"⊫\"\n ],\n [\n 0,\n \"⊬\"\n ],\n [\n 0,\n \"⊭\"\n ],\n [\n 0,\n \"⊮\"\n ],\n [\n 0,\n \"⊯\"\n ],\n [\n 0,\n \"⊰\"\n ],\n [\n 1,\n \"⊲\"\n ],\n [\n 0,\n \"⊳\"\n ],\n [\n 0,\n {\n v: \"⊴\",\n n: 8402,\n o: \"⊴⃒\"\n }\n ],\n [\n 0,\n {\n v: \"⊵\",\n n: 8402,\n o: \"⊵⃒\"\n }\n ],\n [\n 0,\n \"⊶\"\n ],\n [\n 0,\n \"⊷\"\n ],\n [\n 0,\n \"⊸\"\n ],\n [\n 0,\n \"⊹\"\n ],\n [\n 0,\n \"⊺\"\n ],\n [\n 0,\n \"⊻\"\n ],\n [\n 1,\n \"⊽\"\n ],\n [\n 0,\n \"⊾\"\n ],\n [\n 0,\n \"⊿\"\n ],\n [\n 0,\n \"⋀\"\n ],\n [\n 0,\n \"⋁\"\n ],\n [\n 0,\n \"⋂\"\n ],\n [\n 0,\n \"⋃\"\n ],\n [\n 0,\n \"⋄\"\n ],\n [\n 0,\n \"⋅\"\n ],\n [\n 0,\n \"⋆\"\n ],\n [\n 0,\n \"⋇\"\n ],\n [\n 0,\n \"⋈\"\n ],\n [\n 0,\n \"⋉\"\n ],\n [\n 0,\n \"⋊\"\n ],\n [\n 0,\n \"⋋\"\n ],\n [\n 0,\n \"⋌\"\n ],\n [\n 0,\n \"⋍\"\n ],\n [\n 0,\n \"⋎\"\n ],\n [\n 0,\n \"⋏\"\n ],\n [\n 0,\n \"⋐\"\n ],\n [\n 0,\n \"⋑\"\n ],\n [\n 0,\n \"⋒\"\n ],\n [\n 0,\n \"⋓\"\n ],\n [\n 0,\n \"⋔\"\n ],\n [\n 0,\n \"⋕\"\n ],\n [\n 0,\n \"⋖\"\n ],\n [\n 0,\n \"⋗\"\n ],\n [\n 0,\n {\n v: \"⋘\",\n n: 824,\n o: \"⋘̸\"\n }\n ],\n [\n 0,\n {\n v: \"⋙\",\n n: 824,\n o: \"⋙̸\"\n }\n ],\n [\n 0,\n {\n v: \"⋚\",\n n: 65024,\n o: \"⋚︀\"\n }\n ],\n [\n 0,\n {\n v: \"⋛\",\n n: 65024,\n o: \"⋛︀\"\n }\n ],\n [\n 2,\n \"⋞\"\n ],\n [\n 0,\n \"⋟\"\n ],\n [\n 0,\n \"⋠\"\n ],\n [\n 0,\n \"⋡\"\n ],\n [\n 0,\n \"⋢\"\n ],\n [\n 0,\n \"⋣\"\n ],\n [\n 2,\n \"⋦\"\n ],\n [\n 0,\n \"⋧\"\n ],\n [\n 0,\n \"⋨\"\n ],\n [\n 0,\n \"⋩\"\n ],\n [\n 0,\n \"⋪\"\n ],\n [\n 0,\n \"⋫\"\n ],\n [\n 0,\n \"⋬\"\n ],\n [\n 0,\n \"⋭\"\n ],\n [\n 0,\n \"⋮\"\n ],\n [\n 0,\n \"⋯\"\n ],\n [\n 0,\n \"⋰\"\n ],\n [\n 0,\n \"⋱\"\n ],\n [\n 0,\n \"⋲\"\n ],\n [\n 0,\n \"⋳\"\n ],\n [\n 0,\n \"⋴\"\n ],\n [\n 0,\n {\n v: \"⋵\",\n n: 824,\n o: \"⋵̸\"\n }\n ],\n [\n 0,\n \"⋶\"\n ],\n [\n 0,\n \"⋷\"\n ],\n [\n 1,\n {\n v: \"⋹\",\n n: 824,\n o: \"⋹̸\"\n }\n ],\n [\n 0,\n \"⋺\"\n ],\n [\n 0,\n \"⋻\"\n ],\n [\n 0,\n \"⋼\"\n ],\n [\n 0,\n \"⋽\"\n ],\n [\n 0,\n \"⋾\"\n ],\n [\n 6,\n \"⌅\"\n ],\n [\n 0,\n \"⌆\"\n ],\n [\n 1,\n \"⌈\"\n ],\n [\n 0,\n \"⌉\"\n ],\n [\n 0,\n \"⌊\"\n ],\n [\n 0,\n \"⌋\"\n ],\n [\n 0,\n \"⌌\"\n ],\n [\n 0,\n \"⌍\"\n ],\n [\n 0,\n \"⌎\"\n ],\n [\n 0,\n \"⌏\"\n ],\n [\n 0,\n \"⌐\"\n ],\n [\n 1,\n \"⌒\"\n ],\n [\n 0,\n \"⌓\"\n ],\n [\n 1,\n \"⌕\"\n ],\n [\n 0,\n \"⌖\"\n ],\n [\n 5,\n \"⌜\"\n ],\n [\n 0,\n \"⌝\"\n ],\n [\n 0,\n \"⌞\"\n ],\n [\n 0,\n \"⌟\"\n ],\n [\n 2,\n \"⌢\"\n ],\n [\n 0,\n \"⌣\"\n ],\n [\n 9,\n \"⌭\"\n ],\n [\n 0,\n \"⌮\"\n ],\n [\n 7,\n \"⌶\"\n ],\n [\n 6,\n \"⌽\"\n ],\n [\n 1,\n \"⌿\"\n ],\n [\n 60,\n \"⍼\"\n ],\n [\n 51,\n \"⎰\"\n ],\n [\n 0,\n \"⎱\"\n ],\n [\n 2,\n \"⎴\"\n ],\n [\n 0,\n \"⎵\"\n ],\n [\n 0,\n \"⎶\"\n ],\n [\n 37,\n \"⏜\"\n ],\n [\n 0,\n \"⏝\"\n ],\n [\n 0,\n \"⏞\"\n ],\n [\n 0,\n \"⏟\"\n ],\n [\n 2,\n \"⏢\"\n ],\n [\n 4,\n \"⏧\"\n ],\n [\n 59,\n \"␣\"\n ],\n [\n 164,\n \"Ⓢ\"\n ],\n [\n 55,\n \"─\"\n ],\n [\n 1,\n \"│\"\n ],\n [\n 9,\n \"┌\"\n ],\n [\n 3,\n \"┐\"\n ],\n [\n 3,\n \"└\"\n ],\n [\n 3,\n \"┘\"\n ],\n [\n 3,\n \"├\"\n ],\n [\n 7,\n \"┤\"\n ],\n [\n 7,\n \"┬\"\n ],\n [\n 7,\n \"┴\"\n ],\n [\n 7,\n \"┼\"\n ],\n [\n 19,\n \"═\"\n ],\n [\n 0,\n \"║\"\n ],\n [\n 0,\n \"╒\"\n ],\n [\n 0,\n \"╓\"\n ],\n [\n 0,\n \"╔\"\n ],\n [\n 0,\n \"╕\"\n ],\n [\n 0,\n \"╖\"\n ],\n [\n 0,\n \"╗\"\n ],\n [\n 0,\n \"╘\"\n ],\n [\n 0,\n \"╙\"\n ],\n [\n 0,\n \"╚\"\n ],\n [\n 0,\n \"╛\"\n ],\n [\n 0,\n \"╜\"\n ],\n [\n 0,\n \"╝\"\n ],\n [\n 0,\n \"╞\"\n ],\n [\n 0,\n \"╟\"\n ],\n [\n 0,\n \"╠\"\n ],\n [\n 0,\n \"╡\"\n ],\n [\n 0,\n \"╢\"\n ],\n [\n 0,\n \"╣\"\n ],\n [\n 0,\n \"╤\"\n ],\n [\n 0,\n \"╥\"\n ],\n [\n 0,\n \"╦\"\n ],\n [\n 0,\n \"╧\"\n ],\n [\n 0,\n \"╨\"\n ],\n [\n 0,\n \"╩\"\n ],\n [\n 0,\n \"╪\"\n ],\n [\n 0,\n \"╫\"\n ],\n [\n 0,\n \"╬\"\n ],\n [\n 19,\n \"▀\"\n ],\n [\n 3,\n \"▄\"\n ],\n [\n 3,\n \"█\"\n ],\n [\n 8,\n \"░\"\n ],\n [\n 0,\n \"▒\"\n ],\n [\n 0,\n \"▓\"\n ],\n [\n 13,\n \"□\"\n ],\n [\n 8,\n \"▪\"\n ],\n [\n 0,\n \"▫\"\n ],\n [\n 1,\n \"▭\"\n ],\n [\n 0,\n \"▮\"\n ],\n [\n 2,\n \"▱\"\n ],\n [\n 1,\n \"△\"\n ],\n [\n 0,\n \"▴\"\n ],\n [\n 0,\n \"▵\"\n ],\n [\n 2,\n \"▸\"\n ],\n [\n 0,\n \"▹\"\n ],\n [\n 3,\n \"▽\"\n ],\n [\n 0,\n \"▾\"\n ],\n [\n 0,\n \"▿\"\n ],\n [\n 2,\n \"◂\"\n ],\n [\n 0,\n \"◃\"\n ],\n [\n 6,\n \"◊\"\n ],\n [\n 0,\n \"○\"\n ],\n [\n 32,\n \"◬\"\n ],\n [\n 2,\n \"◯\"\n ],\n [\n 8,\n \"◸\"\n ],\n [\n 0,\n \"◹\"\n ],\n [\n 0,\n \"◺\"\n ],\n [\n 0,\n \"◻\"\n ],\n [\n 0,\n \"◼\"\n ],\n [\n 8,\n \"★\"\n ],\n [\n 0,\n \"☆\"\n ],\n [\n 7,\n \"☎\"\n ],\n [\n 49,\n \"♀\"\n ],\n [\n 1,\n \"♂\"\n ],\n [\n 29,\n \"♠\"\n ],\n [\n 2,\n \"♣\"\n ],\n [\n 1,\n \"♥\"\n ],\n [\n 0,\n \"♦\"\n ],\n [\n 3,\n \"♪\"\n ],\n [\n 2,\n \"♭\"\n ],\n [\n 0,\n \"♮\"\n ],\n [\n 0,\n \"♯\"\n ],\n [\n 163,\n \"✓\"\n ],\n [\n 3,\n \"✗\"\n ],\n [\n 8,\n \"✠\"\n ],\n [\n 21,\n \"✶\"\n ],\n [\n 33,\n \"❘\"\n ],\n [\n 25,\n \"❲\"\n ],\n [\n 0,\n \"❳\"\n ],\n [\n 84,\n \"⟈\"\n ],\n [\n 0,\n \"⟉\"\n ],\n [\n 28,\n \"⟦\"\n ],\n [\n 0,\n \"⟧\"\n ],\n [\n 0,\n \"〈\"\n ],\n [\n 0,\n \"〉\"\n ],\n [\n 0,\n \"⟪\"\n ],\n [\n 0,\n \"⟫\"\n ],\n [\n 0,\n \"⟬\"\n ],\n [\n 0,\n \"⟭\"\n ],\n [\n 7,\n \"⟵\"\n ],\n [\n 0,\n \"⟶\"\n ],\n [\n 0,\n \"⟷\"\n ],\n [\n 0,\n \"⟸\"\n ],\n [\n 0,\n \"⟹\"\n ],\n [\n 0,\n \"⟺\"\n ],\n [\n 1,\n \"⟼\"\n ],\n [\n 2,\n \"⟿\"\n ],\n [\n 258,\n \"⤂\"\n ],\n [\n 0,\n \"⤃\"\n ],\n [\n 0,\n \"⤄\"\n ],\n [\n 0,\n \"⤅\"\n ],\n [\n 6,\n \"⤌\"\n ],\n [\n 0,\n \"⤍\"\n ],\n [\n 0,\n \"⤎\"\n ],\n [\n 0,\n \"⤏\"\n ],\n [\n 0,\n \"⤐\"\n ],\n [\n 0,\n \"⤑\"\n ],\n [\n 0,\n \"⤒\"\n ],\n [\n 0,\n \"⤓\"\n ],\n [\n 2,\n \"⤖\"\n ],\n [\n 2,\n \"⤙\"\n ],\n [\n 0,\n \"⤚\"\n ],\n [\n 0,\n \"⤛\"\n ],\n [\n 0,\n \"⤜\"\n ],\n [\n 0,\n \"⤝\"\n ],\n [\n 0,\n \"⤞\"\n ],\n [\n 0,\n \"⤟\"\n ],\n [\n 0,\n \"⤠\"\n ],\n [\n 2,\n \"⤣\"\n ],\n [\n 0,\n \"⤤\"\n ],\n [\n 0,\n \"⤥\"\n ],\n [\n 0,\n \"⤦\"\n ],\n [\n 0,\n \"⤧\"\n ],\n [\n 0,\n \"⤨\"\n ],\n [\n 0,\n \"⤩\"\n ],\n [\n 0,\n \"⤪\"\n ],\n [\n 8,\n {\n v: \"⤳\",\n n: 824,\n o: \"⤳̸\"\n }\n ],\n [\n 1,\n \"⤵\"\n ],\n [\n 0,\n \"⤶\"\n ],\n [\n 0,\n \"⤷\"\n ],\n [\n 0,\n \"⤸\"\n ],\n [\n 0,\n \"⤹\"\n ],\n [\n 2,\n \"⤼\"\n ],\n [\n 0,\n \"⤽\"\n ],\n [\n 7,\n \"⥅\"\n ],\n [\n 2,\n \"⥈\"\n ],\n [\n 0,\n \"⥉\"\n ],\n [\n 0,\n \"⥊\"\n ],\n [\n 0,\n \"⥋\"\n ],\n [\n 2,\n \"⥎\"\n ],\n [\n 0,\n \"⥏\"\n ],\n [\n 0,\n \"⥐\"\n ],\n [\n 0,\n \"⥑\"\n ],\n [\n 0,\n \"⥒\"\n ],\n [\n 0,\n \"⥓\"\n ],\n [\n 0,\n \"⥔\"\n ],\n [\n 0,\n \"⥕\"\n ],\n [\n 0,\n \"⥖\"\n ],\n [\n 0,\n \"⥗\"\n ],\n [\n 0,\n \"⥘\"\n ],\n [\n 0,\n \"⥙\"\n ],\n [\n 0,\n \"⥚\"\n ],\n [\n 0,\n \"⥛\"\n ],\n [\n 0,\n \"⥜\"\n ],\n [\n 0,\n \"⥝\"\n ],\n [\n 0,\n \"⥞\"\n ],\n [\n 0,\n \"⥟\"\n ],\n [\n 0,\n \"⥠\"\n ],\n [\n 0,\n \"⥡\"\n ],\n [\n 0,\n \"⥢\"\n ],\n [\n 0,\n \"⥣\"\n ],\n [\n 0,\n \"⥤\"\n ],\n [\n 0,\n \"⥥\"\n ],\n [\n 0,\n \"⥦\"\n ],\n [\n 0,\n \"⥧\"\n ],\n [\n 0,\n \"⥨\"\n ],\n [\n 0,\n \"⥩\"\n ],\n [\n 0,\n \"⥪\"\n ],\n [\n 0,\n \"⥫\"\n ],\n [\n 0,\n \"⥬\"\n ],\n [\n 0,\n \"⥭\"\n ],\n [\n 0,\n \"⥮\"\n ],\n [\n 0,\n \"⥯\"\n ],\n [\n 0,\n \"⥰\"\n ],\n [\n 0,\n \"⥱\"\n ],\n [\n 0,\n \"⥲\"\n ],\n [\n 0,\n \"⥳\"\n ],\n [\n 0,\n \"⥴\"\n ],\n [\n 0,\n \"⥵\"\n ],\n [\n 0,\n \"⥶\"\n ],\n [\n 1,\n \"⥸\"\n ],\n [\n 0,\n \"⥹\"\n ],\n [\n 1,\n \"⥻\"\n ],\n [\n 0,\n \"⥼\"\n ],\n [\n 0,\n \"⥽\"\n ],\n [\n 0,\n \"⥾\"\n ],\n [\n 0,\n \"⥿\"\n ],\n [\n 5,\n \"⦅\"\n ],\n [\n 0,\n \"⦆\"\n ],\n [\n 4,\n \"⦋\"\n ],\n [\n 0,\n \"⦌\"\n ],\n [\n 0,\n \"⦍\"\n ],\n [\n 0,\n \"⦎\"\n ],\n [\n 0,\n \"⦏\"\n ],\n [\n 0,\n \"⦐\"\n ],\n [\n 0,\n \"⦑\"\n ],\n [\n 0,\n \"⦒\"\n ],\n [\n 0,\n \"⦓\"\n ],\n [\n 0,\n \"⦔\"\n ],\n [\n 0,\n \"⦕\"\n ],\n [\n 0,\n \"⦖\"\n ],\n [\n 3,\n \"⦚\"\n ],\n [\n 1,\n \"⦜\"\n ],\n [\n 0,\n \"⦝\"\n ],\n [\n 6,\n \"⦤\"\n ],\n [\n 0,\n \"⦥\"\n ],\n [\n 0,\n \"⦦\"\n ],\n [\n 0,\n \"⦧\"\n ],\n [\n 0,\n \"⦨\"\n ],\n [\n 0,\n \"⦩\"\n ],\n [\n 0,\n \"⦪\"\n ],\n [\n 0,\n \"⦫\"\n ],\n [\n 0,\n \"⦬\"\n ],\n [\n 0,\n \"⦭\"\n ],\n [\n 0,\n \"⦮\"\n ],\n [\n 0,\n \"⦯\"\n ],\n [\n 0,\n \"⦰\"\n ],\n [\n 0,\n \"⦱\"\n ],\n [\n 0,\n \"⦲\"\n ],\n [\n 0,\n \"⦳\"\n ],\n [\n 0,\n \"⦴\"\n ],\n [\n 0,\n \"⦵\"\n ],\n [\n 0,\n \"⦶\"\n ],\n [\n 0,\n \"⦷\"\n ],\n [\n 1,\n \"⦹\"\n ],\n [\n 1,\n \"⦻\"\n ],\n [\n 0,\n \"⦼\"\n ],\n [\n 1,\n \"⦾\"\n ],\n [\n 0,\n \"⦿\"\n ],\n [\n 0,\n \"⧀\"\n ],\n [\n 0,\n \"⧁\"\n ],\n [\n 0,\n \"⧂\"\n ],\n [\n 0,\n \"⧃\"\n ],\n [\n 0,\n \"⧄\"\n ],\n [\n 0,\n \"⧅\"\n ],\n [\n 3,\n \"⧉\"\n ],\n [\n 3,\n \"⧍\"\n ],\n [\n 0,\n \"⧎\"\n ],\n [\n 0,\n {\n v: \"⧏\",\n n: 824,\n o: \"⧏̸\"\n }\n ],\n [\n 0,\n {\n v: \"⧐\",\n n: 824,\n o: \"⧐̸\"\n }\n ],\n [\n 11,\n \"⧜\"\n ],\n [\n 0,\n \"⧝\"\n ],\n [\n 0,\n \"⧞\"\n ],\n [\n 4,\n \"⧣\"\n ],\n [\n 0,\n \"⧤\"\n ],\n [\n 0,\n \"⧥\"\n ],\n [\n 5,\n \"⧫\"\n ],\n [\n 8,\n \"⧴\"\n ],\n [\n 1,\n \"⧶\"\n ],\n [\n 9,\n \"⨀\"\n ],\n [\n 0,\n \"⨁\"\n ],\n [\n 0,\n \"⨂\"\n ],\n [\n 1,\n \"⨄\"\n ],\n [\n 1,\n \"⨆\"\n ],\n [\n 5,\n \"⨌\"\n ],\n [\n 0,\n \"⨍\"\n ],\n [\n 2,\n \"⨐\"\n ],\n [\n 0,\n \"⨑\"\n ],\n [\n 0,\n \"⨒\"\n ],\n [\n 0,\n \"⨓\"\n ],\n [\n 0,\n \"⨔\"\n ],\n [\n 0,\n \"⨕\"\n ],\n [\n 0,\n \"⨖\"\n ],\n [\n 0,\n \"⨗\"\n ],\n [\n 10,\n \"⨢\"\n ],\n [\n 0,\n \"⨣\"\n ],\n [\n 0,\n \"⨤\"\n ],\n [\n 0,\n \"⨥\"\n ],\n [\n 0,\n \"⨦\"\n ],\n [\n 0,\n \"⨧\"\n ],\n [\n 1,\n \"⨩\"\n ],\n [\n 0,\n \"⨪\"\n ],\n [\n 2,\n \"⨭\"\n ],\n [\n 0,\n \"⨮\"\n ],\n [\n 0,\n \"⨯\"\n ],\n [\n 0,\n \"⨰\"\n ],\n [\n 0,\n \"⨱\"\n ],\n [\n 1,\n \"⨳\"\n ],\n [\n 0,\n \"⨴\"\n ],\n [\n 0,\n \"⨵\"\n ],\n [\n 0,\n \"⨶\"\n ],\n [\n 0,\n \"⨷\"\n ],\n [\n 0,\n \"⨸\"\n ],\n [\n 0,\n \"⨹\"\n ],\n [\n 0,\n \"⨺\"\n ],\n [\n 0,\n \"⨻\"\n ],\n [\n 0,\n \"⨼\"\n ],\n [\n 2,\n \"⨿\"\n ],\n [\n 0,\n \"⩀\"\n ],\n [\n 1,\n \"⩂\"\n ],\n [\n 0,\n \"⩃\"\n ],\n [\n 0,\n \"⩄\"\n ],\n [\n 0,\n \"⩅\"\n ],\n [\n 0,\n \"⩆\"\n ],\n [\n 0,\n \"⩇\"\n ],\n [\n 0,\n \"⩈\"\n ],\n [\n 0,\n \"⩉\"\n ],\n [\n 0,\n \"⩊\"\n ],\n [\n 0,\n \"⩋\"\n ],\n [\n 0,\n \"⩌\"\n ],\n [\n 0,\n \"⩍\"\n ],\n [\n 2,\n \"⩐\"\n ],\n [\n 2,\n \"⩓\"\n ],\n [\n 0,\n \"⩔\"\n ],\n [\n 0,\n \"⩕\"\n ],\n [\n 0,\n \"⩖\"\n ],\n [\n 0,\n \"⩗\"\n ],\n [\n 0,\n \"⩘\"\n ],\n [\n 1,\n \"⩚\"\n ],\n [\n 0,\n \"⩛\"\n ],\n [\n 0,\n \"⩜\"\n ],\n [\n 0,\n \"⩝\"\n ],\n [\n 1,\n \"⩟\"\n ],\n [\n 6,\n \"⩦\"\n ],\n [\n 3,\n \"⩪\"\n ],\n [\n 2,\n {\n v: \"⩭\",\n n: 824,\n o: \"⩭̸\"\n }\n ],\n [\n 0,\n \"⩮\"\n ],\n [\n 0,\n \"⩯\"\n ],\n [\n 0,\n {\n v: \"⩰\",\n n: 824,\n o: \"⩰̸\"\n }\n ],\n [\n 0,\n \"⩱\"\n ],\n [\n 0,\n \"⩲\"\n ],\n [\n 0,\n \"⩳\"\n ],\n [\n 0,\n \"⩴\"\n ],\n [\n 0,\n \"⩵\"\n ],\n [\n 1,\n \"⩷\"\n ],\n [\n 0,\n \"⩸\"\n ],\n [\n 0,\n \"⩹\"\n ],\n [\n 0,\n \"⩺\"\n ],\n [\n 0,\n \"⩻\"\n ],\n [\n 0,\n \"⩼\"\n ],\n [\n 0,\n {\n v: \"⩽\",\n n: 824,\n o: \"⩽̸\"\n }\n ],\n [\n 0,\n {\n v: \"⩾\",\n n: 824,\n o: \"⩾̸\"\n }\n ],\n [\n 0,\n \"⩿\"\n ],\n [\n 0,\n \"⪀\"\n ],\n [\n 0,\n \"⪁\"\n ],\n [\n 0,\n \"⪂\"\n ],\n [\n 0,\n \"⪃\"\n ],\n [\n 0,\n \"⪄\"\n ],\n [\n 0,\n \"⪅\"\n ],\n [\n 0,\n \"⪆\"\n ],\n [\n 0,\n \"⪇\"\n ],\n [\n 0,\n \"⪈\"\n ],\n [\n 0,\n \"⪉\"\n ],\n [\n 0,\n \"⪊\"\n ],\n [\n 0,\n \"⪋\"\n ],\n [\n 0,\n \"⪌\"\n ],\n [\n 0,\n \"⪍\"\n ],\n [\n 0,\n \"⪎\"\n ],\n [\n 0,\n \"⪏\"\n ],\n [\n 0,\n \"⪐\"\n ],\n [\n 0,\n \"⪑\"\n ],\n [\n 0,\n \"⪒\"\n ],\n [\n 0,\n \"⪓\"\n ],\n [\n 0,\n \"⪔\"\n ],\n [\n 0,\n \"⪕\"\n ],\n [\n 0,\n \"⪖\"\n ],\n [\n 0,\n \"⪗\"\n ],\n [\n 0,\n \"⪘\"\n ],\n [\n 0,\n \"⪙\"\n ],\n [\n 0,\n \"⪚\"\n ],\n [\n 2,\n \"⪝\"\n ],\n [\n 0,\n \"⪞\"\n ],\n [\n 0,\n \"⪟\"\n ],\n [\n 0,\n \"⪠\"\n ],\n [\n 0,\n {\n v: \"⪡\",\n n: 824,\n o: \"⪡̸\"\n }\n ],\n [\n 0,\n {\n v: \"⪢\",\n n: 824,\n o: \"⪢̸\"\n }\n ],\n [\n 1,\n \"⪤\"\n ],\n [\n 0,\n \"⪥\"\n ],\n [\n 0,\n \"⪦\"\n ],\n [\n 0,\n \"⪧\"\n ],\n [\n 0,\n \"⪨\"\n ],\n [\n 0,\n \"⪩\"\n ],\n [\n 0,\n \"⪪\"\n ],\n [\n 0,\n \"⪫\"\n ],\n [\n 0,\n {\n v: \"⪬\",\n n: 65024,\n o: \"⪬︀\"\n }\n ],\n [\n 0,\n {\n v: \"⪭\",\n n: 65024,\n o: \"⪭︀\"\n }\n ],\n [\n 0,\n \"⪮\"\n ],\n [\n 0,\n {\n v: \"⪯\",\n n: 824,\n o: \"⪯̸\"\n }\n ],\n [\n 0,\n {\n v: \"⪰\",\n n: 824,\n o: \"⪰̸\"\n }\n ],\n [\n 2,\n \"⪳\"\n ],\n [\n 0,\n \"⪴\"\n ],\n [\n 0,\n \"⪵\"\n ],\n [\n 0,\n \"⪶\"\n ],\n [\n 0,\n \"⪷\"\n ],\n [\n 0,\n \"⪸\"\n ],\n [\n 0,\n \"⪹\"\n ],\n [\n 0,\n \"⪺\"\n ],\n [\n 0,\n \"⪻\"\n ],\n [\n 0,\n \"⪼\"\n ],\n [\n 0,\n \"⪽\"\n ],\n [\n 0,\n \"⪾\"\n ],\n [\n 0,\n \"⪿\"\n ],\n [\n 0,\n \"⫀\"\n ],\n [\n 0,\n \"⫁\"\n ],\n [\n 0,\n \"⫂\"\n ],\n [\n 0,\n \"⫃\"\n ],\n [\n 0,\n \"⫄\"\n ],\n [\n 0,\n {\n v: \"⫅\",\n n: 824,\n o: \"⫅̸\"\n }\n ],\n [\n 0,\n {\n v: \"⫆\",\n n: 824,\n o: \"⫆̸\"\n }\n ],\n [\n 0,\n \"⫇\"\n ],\n [\n 0,\n \"⫈\"\n ],\n [\n 2,\n {\n v: \"⫋\",\n n: 65024,\n o: \"⫋︀\"\n }\n ],\n [\n 0,\n {\n v: \"⫌\",\n n: 65024,\n o: \"⫌︀\"\n }\n ],\n [\n 2,\n \"⫏\"\n ],\n [\n 0,\n \"⫐\"\n ],\n [\n 0,\n \"⫑\"\n ],\n [\n 0,\n \"⫒\"\n ],\n [\n 0,\n \"⫓\"\n ],\n [\n 0,\n \"⫔\"\n ],\n [\n 0,\n \"⫕\"\n ],\n [\n 0,\n \"⫖\"\n ],\n [\n 0,\n \"⫗\"\n ],\n [\n 0,\n \"⫘\"\n ],\n [\n 0,\n \"⫙\"\n ],\n [\n 0,\n \"⫚\"\n ],\n [\n 0,\n \"⫛\"\n ],\n [\n 8,\n \"⫤\"\n ],\n [\n 1,\n \"⫦\"\n ],\n [\n 0,\n \"⫧\"\n ],\n [\n 0,\n \"⫨\"\n ],\n [\n 0,\n \"⫩\"\n ],\n [\n 1,\n \"⫫\"\n ],\n [\n 0,\n \"⫬\"\n ],\n [\n 0,\n \"⫭\"\n ],\n [\n 0,\n \"⫮\"\n ],\n [\n 0,\n \"⫯\"\n ],\n [\n 0,\n \"⫰\"\n ],\n [\n 0,\n \"⫱\"\n ],\n [\n 0,\n \"⫲\"\n ],\n [\n 0,\n \"⫳\"\n ],\n [\n 9,\n {\n v: \"⫽\",\n n: 8421,\n o: \"⫽⃥\"\n }\n ],\n [\n 44343,\n {\n n: new Map(/* #__PURE__ */ $30ae39ed5c434785$var$restoreDiff([\n [\n 56476,\n \"𝒜\"\n ],\n [\n 1,\n \"𝒞\"\n ],\n [\n 0,\n \"𝒟\"\n ],\n [\n 2,\n \"𝒢\"\n ],\n [\n 2,\n \"𝒥\"\n ],\n [\n 0,\n \"𝒦\"\n ],\n [\n 2,\n \"𝒩\"\n ],\n [\n 0,\n \"𝒪\"\n ],\n [\n 0,\n \"𝒫\"\n ],\n [\n 0,\n \"𝒬\"\n ],\n [\n 1,\n \"𝒮\"\n ],\n [\n 0,\n \"𝒯\"\n ],\n [\n 0,\n \"𝒰\"\n ],\n [\n 0,\n \"𝒱\"\n ],\n [\n 0,\n \"𝒲\"\n ],\n [\n 0,\n \"𝒳\"\n ],\n [\n 0,\n \"𝒴\"\n ],\n [\n 0,\n \"𝒵\"\n ],\n [\n 0,\n \"𝒶\"\n ],\n [\n 0,\n \"𝒷\"\n ],\n [\n 0,\n \"𝒸\"\n ],\n [\n 0,\n \"𝒹\"\n ],\n [\n 1,\n \"𝒻\"\n ],\n [\n 1,\n \"𝒽\"\n ],\n [\n 0,\n \"𝒾\"\n ],\n [\n 0,\n \"𝒿\"\n ],\n [\n 0,\n \"𝓀\"\n ],\n [\n 0,\n \"𝓁\"\n ],\n [\n 0,\n \"𝓂\"\n ],\n [\n 0,\n \"𝓃\"\n ],\n [\n 1,\n \"𝓅\"\n ],\n [\n 0,\n \"𝓆\"\n ],\n [\n 0,\n \"𝓇\"\n ],\n [\n 0,\n \"𝓈\"\n ],\n [\n 0,\n \"𝓉\"\n ],\n [\n 0,\n \"𝓊\"\n ],\n [\n 0,\n \"𝓋\"\n ],\n [\n 0,\n \"𝓌\"\n ],\n [\n 0,\n \"𝓍\"\n ],\n [\n 0,\n \"𝓎\"\n ],\n [\n 0,\n \"𝓏\"\n ],\n [\n 52,\n \"𝔄\"\n ],\n [\n 0,\n \"𝔅\"\n ],\n [\n 1,\n \"𝔇\"\n ],\n [\n 0,\n \"𝔈\"\n ],\n [\n 0,\n \"𝔉\"\n ],\n [\n 0,\n \"𝔊\"\n ],\n [\n 2,\n \"𝔍\"\n ],\n [\n 0,\n \"𝔎\"\n ],\n [\n 0,\n \"𝔏\"\n ],\n [\n 0,\n \"𝔐\"\n ],\n [\n 0,\n \"𝔑\"\n ],\n [\n 0,\n \"𝔒\"\n ],\n [\n 0,\n \"𝔓\"\n ],\n [\n 0,\n \"𝔔\"\n ],\n [\n 1,\n \"𝔖\"\n ],\n [\n 0,\n \"𝔗\"\n ],\n [\n 0,\n \"𝔘\"\n ],\n [\n 0,\n \"𝔙\"\n ],\n [\n 0,\n \"𝔚\"\n ],\n [\n 0,\n \"𝔛\"\n ],\n [\n 0,\n \"𝔜\"\n ],\n [\n 1,\n \"𝔞\"\n ],\n [\n 0,\n \"𝔟\"\n ],\n [\n 0,\n \"𝔠\"\n ],\n [\n 0,\n \"𝔡\"\n ],\n [\n 0,\n \"𝔢\"\n ],\n [\n 0,\n \"𝔣\"\n ],\n [\n 0,\n \"𝔤\"\n ],\n [\n 0,\n \"𝔥\"\n ],\n [\n 0,\n \"𝔦\"\n ],\n [\n 0,\n \"𝔧\"\n ],\n [\n 0,\n \"𝔨\"\n ],\n [\n 0,\n \"𝔩\"\n ],\n [\n 0,\n \"𝔪\"\n ],\n [\n 0,\n \"𝔫\"\n ],\n [\n 0,\n \"𝔬\"\n ],\n [\n 0,\n \"𝔭\"\n ],\n [\n 0,\n \"𝔮\"\n ],\n [\n 0,\n \"𝔯\"\n ],\n [\n 0,\n \"𝔰\"\n ],\n [\n 0,\n \"𝔱\"\n ],\n [\n 0,\n \"𝔲\"\n ],\n [\n 0,\n \"𝔳\"\n ],\n [\n 0,\n \"𝔴\"\n ],\n [\n 0,\n \"𝔵\"\n ],\n [\n 0,\n \"𝔶\"\n ],\n [\n 0,\n \"𝔷\"\n ],\n [\n 0,\n \"𝔸\"\n ],\n [\n 0,\n \"𝔹\"\n ],\n [\n 1,\n \"𝔻\"\n ],\n [\n 0,\n \"𝔼\"\n ],\n [\n 0,\n \"𝔽\"\n ],\n [\n 0,\n \"𝔾\"\n ],\n [\n 1,\n \"𝕀\"\n ],\n [\n 0,\n \"𝕁\"\n ],\n [\n 0,\n \"𝕂\"\n ],\n [\n 0,\n \"𝕃\"\n ],\n [\n 0,\n \"𝕄\"\n ],\n [\n 1,\n \"𝕆\"\n ],\n [\n 3,\n \"𝕊\"\n ],\n [\n 0,\n \"𝕋\"\n ],\n [\n 0,\n \"𝕌\"\n ],\n [\n 0,\n \"𝕍\"\n ],\n [\n 0,\n \"𝕎\"\n ],\n [\n 0,\n \"𝕏\"\n ],\n [\n 0,\n \"𝕐\"\n ],\n [\n 1,\n \"𝕒\"\n ],\n [\n 0,\n \"𝕓\"\n ],\n [\n 0,\n \"𝕔\"\n ],\n [\n 0,\n \"𝕕\"\n ],\n [\n 0,\n \"𝕖\"\n ],\n [\n 0,\n \"𝕗\"\n ],\n [\n 0,\n \"𝕘\"\n ],\n [\n 0,\n \"𝕙\"\n ],\n [\n 0,\n \"𝕚\"\n ],\n [\n 0,\n \"𝕛\"\n ],\n [\n 0,\n \"𝕜\"\n ],\n [\n 0,\n \"𝕝\"\n ],\n [\n 0,\n \"𝕞\"\n ],\n [\n 0,\n \"𝕟\"\n ],\n [\n 0,\n \"𝕠\"\n ],\n [\n 0,\n \"𝕡\"\n ],\n [\n 0,\n \"𝕢\"\n ],\n [\n 0,\n \"𝕣\"\n ],\n [\n 0,\n \"𝕤\"\n ],\n [\n 0,\n \"𝕥\"\n ],\n [\n 0,\n \"𝕦\"\n ],\n [\n 0,\n \"𝕧\"\n ],\n [\n 0,\n \"𝕨\"\n ],\n [\n 0,\n \"𝕩\"\n ],\n [\n 0,\n \"𝕪\"\n ],\n [\n 0,\n \"𝕫\"\n ]\n ]))\n }\n ],\n [\n 8906,\n \"ff\"\n ],\n [\n 0,\n \"fi\"\n ],\n [\n 0,\n \"fl\"\n ],\n [\n 0,\n \"ffi\"\n ],\n [\n 0,\n \"ffl\"\n ]\n]));\n\n\nconst $d321bae15adf01a4$export$5699810ce3244ab8 = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst $d321bae15adf01a4$var$xmlCodeMap = new Map([\n [\n 34,\n \""\"\n ],\n [\n 38,\n \"&\"\n ],\n [\n 39,\n \"'\"\n ],\n [\n 60,\n \"<\"\n ],\n [\n 62,\n \">\"\n ]\n]);\nconst $d321bae15adf01a4$export$e02688b8085d016b = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null ? (str, index)=>str.codePointAt(index) : (c, index)=>(c.charCodeAt(index) & 0xfc00) === 0xd800 ? (c.charCodeAt(index) - 0xd800) * 0x400 + c.charCodeAt(index + 1) - 0xdc00 + 0x10000 : c.charCodeAt(index);\nfunction $d321bae15adf01a4$export$18855ec5be97da16(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while((match = $d321bae15adf01a4$export$5699810ce3244ab8.exec(str)) !== null){\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = $d321bae15adf01a4$var$xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n } else {\n ret += `${str.substring(lastIdx, i)}${$d321bae15adf01a4$export$e02688b8085d016b(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = $d321bae15adf01a4$export$5699810ce3244ab8.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\nconst $d321bae15adf01a4$export$4e7f196112fea3c5 = $d321bae15adf01a4$export$18855ec5be97da16;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */ function $d321bae15adf01a4$var$getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while(match = regex.exec(data)){\n if (lastIdx !== match.index) result += data.substring(lastIdx, match.index);\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\nconst $d321bae15adf01a4$export$9e081872deefdcb0 = $d321bae15adf01a4$var$getEscaper(/[&<>'\"]/g, $d321bae15adf01a4$var$xmlCodeMap);\nconst $d321bae15adf01a4$export$30330f3d5eb70e11 = $d321bae15adf01a4$var$getEscaper(/[\"&\\u00A0]/g, new Map([\n [\n 34,\n \""\"\n ],\n [\n 38,\n \"&\"\n ],\n [\n 160,\n \" \"\n ]\n]));\nconst $d321bae15adf01a4$export$96e6fc3a139b2555 = $d321bae15adf01a4$var$getEscaper(/[&<>\\u00A0]/g, new Map([\n [\n 38,\n \"&\"\n ],\n [\n 60,\n \"<\"\n ],\n [\n 62,\n \">\"\n ],\n [\n 160,\n \" \"\n ]\n]));\n\n\nconst $4fc1d8dbc74f1929$var$htmlReplacer = /[\\t\\n!-,./:-@[-`\\f{-}$\\x80-\\uFFFF]/g;\nfunction $4fc1d8dbc74f1929$export$f9d6449b9af28dc1(data) {\n return $4fc1d8dbc74f1929$var$encodeHTMLTrieRe($4fc1d8dbc74f1929$var$htmlReplacer, data);\n}\nfunction $4fc1d8dbc74f1929$export$e6e86c76506f1190(data) {\n return $4fc1d8dbc74f1929$var$encodeHTMLTrieRe((0, $d321bae15adf01a4$export$5699810ce3244ab8), data);\n}\nfunction $4fc1d8dbc74f1929$var$encodeHTMLTrieRe(regExp, str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while((match = regExp.exec(str)) !== null){\n const i = match.index;\n ret += str.substring(lastIdx, i);\n const char = str.charCodeAt(i);\n let next = (0, $30ae39ed5c434785$export$2e2bcd8739ae039).get(char);\n if (typeof next === \"object\") {\n // We are in a branch. Try to match the next char.\n if (i + 1 < str.length) {\n const nextChar = str.charCodeAt(i + 1);\n const value = typeof next.n === \"number\" ? next.n === nextChar ? next.o : undefined : next.n.get(nextChar);\n if (value !== undefined) {\n ret += value;\n lastIdx = regExp.lastIndex += 1;\n continue;\n }\n }\n next = next.v;\n }\n // We might have a tree node without a value; skip and use a numeric entity.\n if (next !== undefined) {\n ret += next;\n lastIdx = i + 1;\n } else {\n const cp = (0, $d321bae15adf01a4$export$e02688b8085d016b)(str, i);\n ret += `${cp.toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = regExp.lastIndex += Number(cp !== char);\n }\n }\n return ret + str.substr(lastIdx);\n}\n\n\n\nvar $929c4c22a3253652$export$b8c86583d9718b50;\n(function(EntityLevel) {\n /** Support only XML entities. */ EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */ EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})($929c4c22a3253652$export$b8c86583d9718b50 || ($929c4c22a3253652$export$b8c86583d9718b50 = {}));\nvar $929c4c22a3253652$export$1851b20d614eb756;\n(function(EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */ EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */ EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */ EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */ EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */ EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})($929c4c22a3253652$export$1851b20d614eb756 || ($929c4c22a3253652$export$1851b20d614eb756 = {}));\nfunction $929c4c22a3253652$export$2f872c0f2117be69(data, options = $929c4c22a3253652$export$b8c86583d9718b50.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === $929c4c22a3253652$export$b8c86583d9718b50.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return (0, $1d4e17494442e5eb$export$f045cb747ce77a19)(data, mode);\n }\n return (0, $1d4e17494442e5eb$export$88e3b9643a8bd06e)(data);\n}\nfunction $929c4c22a3253652$export$c94669f4c7d36be4(data, options = $929c4c22a3253652$export$b8c86583d9718b50.XML) {\n var _a;\n const opts = typeof options === \"number\" ? {\n level: options\n } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : opts.mode = (0, $1d4e17494442e5eb$export$8c8f129ce60f53c).Strict;\n return $929c4c22a3253652$export$2f872c0f2117be69(data, opts);\n}\nfunction $929c4c22a3253652$export$c564cdbbe6da493(data, options = $929c4c22a3253652$export$b8c86583d9718b50.XML) {\n const opts = typeof options === \"number\" ? {\n level: options\n } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.UTF8) return (0, $d321bae15adf01a4$export$9e081872deefdcb0)(data);\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.Attribute) return (0, $d321bae15adf01a4$export$30330f3d5eb70e11)(data);\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.Text) return (0, $d321bae15adf01a4$export$96e6fc3a139b2555)(data);\n if (opts.level === $929c4c22a3253652$export$b8c86583d9718b50.HTML) {\n if (opts.mode === $929c4c22a3253652$export$1851b20d614eb756.ASCII) return (0, $4fc1d8dbc74f1929$export$e6e86c76506f1190)(data);\n return (0, $4fc1d8dbc74f1929$export$f9d6449b9af28dc1)(data);\n }\n // ASCII and Extensive are equivalent\n return (0, $d321bae15adf01a4$export$18855ec5be97da16)(data);\n}\n\n\nconst $416afbc7a414ed28$export$82b917442d249e05 = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\"\n].map((val)=>[\n val.toLowerCase(),\n val\n ]));\nconst $416afbc7a414ed28$export$b4cfbfd90280b005 = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\"\n].map((val)=>[\n val.toLowerCase(),\n val\n ]));\n\n\nconst $7a645f35b51bdf0b$var$unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\"\n]);\nfunction $7a645f35b51bdf0b$var$replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */ function $7a645f35b51bdf0b$var$formatAttributes(attributes, opts) {\n var _a;\n if (!attributes) return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false ? $7a645f35b51bdf0b$var$replaceQuotes : opts.xmlMode || opts.encodeEntities !== \"utf8\" ? (0, $d321bae15adf01a4$export$18855ec5be97da16) : (0, $d321bae15adf01a4$export$30330f3d5eb70e11);\n return Object.keys(attributes).map((key)=>{\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") /* Fix up mixed-case attribute names */ key = (_b = (0, $416afbc7a414ed28$export$b4cfbfd90280b005).get(key)) !== null && _b !== void 0 ? _b : key;\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") return key;\n return `${key}=\"${encode(value)}\"`;\n }).join(\" \");\n}\n/**\n * Self-enclosing tags\n */ const $7a645f35b51bdf0b$var$singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\"\n]);\nfunction $7a645f35b51bdf0b$export$b3890eb0ae9dca99(node, options = {}) {\n const nodes = \"length\" in node ? node : [\n node\n ];\n let output = \"\";\n for(let i = 0; i < nodes.length; i++)output += $7a645f35b51bdf0b$var$renderNode(nodes[i], options);\n return output;\n}\nvar $7a645f35b51bdf0b$export$2e2bcd8739ae039 = $7a645f35b51bdf0b$export$b3890eb0ae9dca99;\nfunction $7a645f35b51bdf0b$var$renderNode(node, options) {\n switch(node.type){\n case $15bfb7bf4e445d41$export$be92b6f5f03c0fe9:\n return $7a645f35b51bdf0b$export$b3890eb0ae9dca99(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case $15bfb7bf4e445d41$export$31b44af36ff2c60f:\n case $15bfb7bf4e445d41$export$befdefbdce210f91:\n return $7a645f35b51bdf0b$var$renderDirective(node);\n case $15bfb7bf4e445d41$export$4d299b491347818a:\n return $7a645f35b51bdf0b$var$renderComment(node);\n case $15bfb7bf4e445d41$export$1f8b8f7e5c763232:\n return $7a645f35b51bdf0b$var$renderCdata(node);\n case $15bfb7bf4e445d41$export$2f8b47a141e57afc:\n case $15bfb7bf4e445d41$export$d9e45bc13d335801:\n case $15bfb7bf4e445d41$export$3288d34c523a1192:\n return $7a645f35b51bdf0b$var$renderTag(node, options);\n case $15bfb7bf4e445d41$export$5f1af8db9871e1d6:\n return $7a645f35b51bdf0b$var$renderText(node, options);\n }\n}\nconst $7a645f35b51bdf0b$var$foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\"\n]);\nconst $7a645f35b51bdf0b$var$foreignElements = new Set([\n \"svg\",\n \"math\"\n]);\nfunction $7a645f35b51bdf0b$var$renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */ elem.name = (_a = (0, $416afbc7a414ed28$export$82b917442d249e05).get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */ if (elem.parent && $7a645f35b51bdf0b$var$foreignModeIntegrationPoints.has(elem.parent.name)) opts = {\n ...opts,\n xmlMode: false\n };\n }\n if (!opts.xmlMode && $7a645f35b51bdf0b$var$foreignElements.has(elem.name)) opts = {\n ...opts,\n xmlMode: \"foreign\"\n };\n let tag = `<${elem.name}`;\n const attribs = $7a645f35b51bdf0b$var$formatAttributes(elem.attribs, opts);\n if (attribs) tag += ` ${attribs}`;\n if (elem.children.length === 0 && (opts.xmlMode ? opts.selfClosingTags !== false : opts.selfClosingTags && $7a645f35b51bdf0b$var$singleTag.has(elem.name))) {\n if (!opts.xmlMode) tag += \" \";\n tag += \"/>\";\n } else {\n tag += \">\";\n if (elem.children.length > 0) tag += $7a645f35b51bdf0b$export$b3890eb0ae9dca99(elem.children, opts);\n if (opts.xmlMode || !$7a645f35b51bdf0b$var$singleTag.has(elem.name)) tag += `${elem.name}>`;\n }\n return tag;\n}\nfunction $7a645f35b51bdf0b$var$renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction $7a645f35b51bdf0b$var$renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false && !(!opts.xmlMode && elem.parent && $7a645f35b51bdf0b$var$unencodedElements.has(elem.parent.name))) data = opts.xmlMode || opts.encodeEntities !== \"utf8\" ? (0, $d321bae15adf01a4$export$18855ec5be97da16)(data) : (0, $d321bae15adf01a4$export$96e6fc3a139b2555)(data);\n return data;\n}\nfunction $7a645f35b51bdf0b$var$renderCdata(elem) {\n return ``;\n}\nfunction $7a645f35b51bdf0b$var$renderComment(elem) {\n return ``;\n}\n\n\n\nfunction $1492c9a788fb16e1$export$39484b727cc2f324(node, options) {\n return (0, $7a645f35b51bdf0b$export$2e2bcd8739ae039)(node, options);\n}\nfunction $1492c9a788fb16e1$export$7ed15b4d2218408(node, options) {\n return (0, $f781defdc25f69c3$export$bd5ff50f0e53d41c)(node) ? node.children.map((node)=>$1492c9a788fb16e1$export$39484b727cc2f324(node, options)).join(\"\") : \"\";\n}\nfunction $1492c9a788fb16e1$export$c72d34660a162238(node) {\n if (Array.isArray(node)) return node.map($1492c9a788fb16e1$export$c72d34660a162238).join(\"\");\n if ((0, $f781defdc25f69c3$export$3bf645f08efe3292)(node)) return node.name === \"br\" ? \"\\n\" : $1492c9a788fb16e1$export$c72d34660a162238(node.children);\n if ((0, $f781defdc25f69c3$export$c2d65aed98d39b56)(node)) return $1492c9a788fb16e1$export$c72d34660a162238(node.children);\n if ((0, $f781defdc25f69c3$export$1879817ac5c922b7)(node)) return node.data;\n return \"\";\n}\nfunction $1492c9a788fb16e1$export$e0e0794250e9118f(node) {\n if (Array.isArray(node)) return node.map($1492c9a788fb16e1$export$e0e0794250e9118f).join(\"\");\n if ((0, $f781defdc25f69c3$export$bd5ff50f0e53d41c)(node) && !(0, $f781defdc25f69c3$export$3ab01370f5e64ac8)(node)) return $1492c9a788fb16e1$export$e0e0794250e9118f(node.children);\n if ((0, $f781defdc25f69c3$export$1879817ac5c922b7)(node)) return node.data;\n return \"\";\n}\nfunction $1492c9a788fb16e1$export$5864bc2a45f1eb81(node) {\n if (Array.isArray(node)) return node.map($1492c9a788fb16e1$export$5864bc2a45f1eb81).join(\"\");\n if ((0, $f781defdc25f69c3$export$bd5ff50f0e53d41c)(node) && (node.type === (0, $15bfb7bf4e445d41$export$b992dc138d950e31).Tag || (0, $f781defdc25f69c3$export$c2d65aed98d39b56)(node))) return $1492c9a788fb16e1$export$5864bc2a45f1eb81(node.children);\n if ((0, $f781defdc25f69c3$export$1879817ac5c922b7)(node)) return node.data;\n return \"\";\n}\n\n\n\nfunction $469d49c0c2788608$export$f8cf48ee793b41be(elem) {\n return (0, $f781defdc25f69c3$export$bd5ff50f0e53d41c)(elem) ? elem.children : [];\n}\nfunction $469d49c0c2788608$export$58081aedf094d85b(elem) {\n return elem.parent || null;\n}\nfunction $469d49c0c2788608$export$f312c3733b79ac0d(elem) {\n const parent = $469d49c0c2788608$export$58081aedf094d85b(elem);\n if (parent != null) return $469d49c0c2788608$export$f8cf48ee793b41be(parent);\n const siblings = [\n elem\n ];\n let { prev: prev, next: next } = elem;\n while(prev != null){\n siblings.unshift(prev);\n ({ prev: prev } = prev);\n }\n while(next != null){\n siblings.push(next);\n ({ next: next } = next);\n }\n return siblings;\n}\nfunction $469d49c0c2788608$export$1e335898aa11b111(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\nfunction $469d49c0c2788608$export$aa37f90c17957f38(elem, name) {\n return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null;\n}\nfunction $469d49c0c2788608$export$7d9f7e9c1c02b41e(elem) {\n return elem.name;\n}\nfunction $469d49c0c2788608$export$9be3779649ef9cc7(elem) {\n let { next: next } = elem;\n while(next !== null && !(0, $f781defdc25f69c3$export$3bf645f08efe3292)(next))({ next: next } = next);\n return next;\n}\nfunction $469d49c0c2788608$export$c8bafb6e59c0b8e(elem) {\n let { prev: prev } = elem;\n while(prev !== null && !(0, $f781defdc25f69c3$export$3bf645f08efe3292)(prev))({ prev: prev } = prev);\n return prev;\n}\n\n\n/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */ function $b97584d8d1d972f9$export$f883456a56996078(elem) {\n if (elem.prev) elem.prev.next = elem.next;\n if (elem.next) elem.next.prev = elem.prev;\n if (elem.parent) {\n const childs = elem.parent.children;\n const childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) childs.splice(childsIndex, 1);\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\nfunction $b97584d8d1d972f9$export$2dfe578f95754f6a(elem, replacement) {\n const prev = replacement.prev = elem.prev;\n if (prev) prev.next = replacement;\n const next = replacement.next = elem.next;\n if (next) next.prev = replacement;\n const parent = replacement.parent = elem.parent;\n if (parent) {\n const childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\nfunction $b97584d8d1d972f9$export$1b8e57c9ea42f1d2(parent, child) {\n $b97584d8d1d972f9$export$f883456a56996078(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n const sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n } else child.prev = null;\n}\nfunction $b97584d8d1d972f9$export$10d8903dec122b9d(elem, next) {\n $b97584d8d1d972f9$export$f883456a56996078(next);\n const { parent: parent } = elem;\n const currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n } else if (parent) parent.children.push(next);\n}\nfunction $b97584d8d1d972f9$export$47b51e6d100007bc(parent, child) {\n $b97584d8d1d972f9$export$f883456a56996078(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n const sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n } else child.next = null;\n}\nfunction $b97584d8d1d972f9$export$68159836694e22c1(elem, prev) {\n $b97584d8d1d972f9$export$f883456a56996078(prev);\n const { parent: parent } = elem;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) elem.prev.next = prev;\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n\n\n\nfunction $e42ddbaefcc2cb3e$export$3dea766d36a8935f(test, node, recurse = true, limit = Infinity) {\n return $e42ddbaefcc2cb3e$export$71aa6c912b956294(test, Array.isArray(node) ? node : [\n node\n ], recurse, limit);\n}\nfunction $e42ddbaefcc2cb3e$export$71aa6c912b956294(test, nodes, recurse, limit) {\n const result = [];\n /** Stack of the arrays we are looking at. */ const nodeStack = [\n nodes\n ];\n /** Stack of the indices within the arrays. */ const indexStack = [\n 0\n ];\n for(;;){\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) return result;\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0) return result;\n }\n if (recurse && (0, $f781defdc25f69c3$export$bd5ff50f0e53d41c)(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */ indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\nfunction $e42ddbaefcc2cb3e$export$ac03a862904ce329(test, nodes) {\n return nodes.find(test);\n}\nfunction $e42ddbaefcc2cb3e$export$a541876d5d7daf90(test, nodes, recurse = true) {\n let elem = null;\n for(let i = 0; i < nodes.length && !elem; i++){\n const node = nodes[i];\n if (!(0, $f781defdc25f69c3$export$3bf645f08efe3292)(node)) continue;\n else if (test(node)) elem = node;\n else if (recurse && node.children.length > 0) elem = $e42ddbaefcc2cb3e$export$a541876d5d7daf90(test, node.children, true);\n }\n return elem;\n}\nfunction $e42ddbaefcc2cb3e$export$9d99dce58ac4a31b(test, nodes) {\n return nodes.some((checked)=>(0, $f781defdc25f69c3$export$3bf645f08efe3292)(checked) && (test(checked) || $e42ddbaefcc2cb3e$export$9d99dce58ac4a31b(test, checked.children)));\n}\nfunction $e42ddbaefcc2cb3e$export$18200ea6c8035394(test, nodes) {\n const result = [];\n const nodeStack = [\n nodes\n ];\n const indexStack = [\n 0\n ];\n for(;;){\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) return result;\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (!(0, $f781defdc25f69c3$export$3bf645f08efe3292)(elem)) continue;\n if (test(elem)) result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n\n\n\n\n/**\n * A map of functions to check nodes against.\n */ const $5837fd230ec46d88$var$Checks = {\n tag_name (name) {\n if (typeof name === \"function\") return (elem)=>(0, $f781defdc25f69c3$export$3bf645f08efe3292)(elem) && name(elem.name);\n else if (name === \"*\") return 0, $f781defdc25f69c3$export$3bf645f08efe3292;\n return (elem)=>(0, $f781defdc25f69c3$export$3bf645f08efe3292)(elem) && elem.name === name;\n },\n tag_type (type) {\n if (typeof type === \"function\") return (elem)=>type(elem.type);\n return (elem)=>elem.type === type;\n },\n tag_contains (data) {\n if (typeof data === \"function\") return (elem)=>(0, $f781defdc25f69c3$export$1879817ac5c922b7)(elem) && data(elem.data);\n return (elem)=>(0, $f781defdc25f69c3$export$1879817ac5c922b7)(elem) && elem.data === data;\n }\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */ function $5837fd230ec46d88$var$getAttribCheck(attrib, value) {\n if (typeof value === \"function\") return (elem)=>(0, $f781defdc25f69c3$export$3bf645f08efe3292)(elem) && value(elem.attribs[attrib]);\n return (elem)=>(0, $f781defdc25f69c3$export$3bf645f08efe3292)(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */ function $5837fd230ec46d88$var$combineFuncs(a, b) {\n return (elem)=>a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */ function $5837fd230ec46d88$var$compileTest(options) {\n const funcs = Object.keys(options).map((key)=>{\n const value = options[key];\n return Object.prototype.hasOwnProperty.call($5837fd230ec46d88$var$Checks, key) ? $5837fd230ec46d88$var$Checks[key](value) : $5837fd230ec46d88$var$getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce($5837fd230ec46d88$var$combineFuncs);\n}\nfunction $5837fd230ec46d88$export$7b31db6b5a0b2f32(options, node) {\n const test = $5837fd230ec46d88$var$compileTest(options);\n return test ? test(node) : true;\n}\nfunction $5837fd230ec46d88$export$73eac51a39d6b0eb(options, nodes, recurse, limit = Infinity) {\n const test = $5837fd230ec46d88$var$compileTest(options);\n return test ? (0, $e42ddbaefcc2cb3e$export$3dea766d36a8935f)(test, nodes, recurse, limit) : [];\n}\nfunction $5837fd230ec46d88$export$83595b84fc78b9b4(id, nodes, recurse = true) {\n if (!Array.isArray(nodes)) nodes = [\n nodes\n ];\n return (0, $e42ddbaefcc2cb3e$export$a541876d5d7daf90)($5837fd230ec46d88$var$getAttribCheck(\"id\", id), nodes, recurse);\n}\nfunction $5837fd230ec46d88$export$af941c3c7c3b40f5(tagName, nodes, recurse = true, limit = Infinity) {\n return (0, $e42ddbaefcc2cb3e$export$3dea766d36a8935f)($5837fd230ec46d88$var$Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\nfunction $5837fd230ec46d88$export$f5d981e30be5545b(type, nodes, recurse = true, limit = Infinity) {\n return (0, $e42ddbaefcc2cb3e$export$3dea766d36a8935f)($5837fd230ec46d88$var$Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n\n\n\nfunction $9fbe5392cb849ded$export$171dc294232ebeef(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */ while(--idx >= 0){\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */ if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for(let ancestor = node.parent; ancestor; ancestor = ancestor.parent)if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n return nodes;\n}\nvar $9fbe5392cb849ded$export$406a59d989e8005a;\n(function(DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})($9fbe5392cb849ded$export$406a59d989e8005a || ($9fbe5392cb849ded$export$406a59d989e8005a = {}));\nfunction $9fbe5392cb849ded$export$17303b8fea718ecc(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) return 0;\n let current = (0, $f781defdc25f69c3$export$bd5ff50f0e53d41c)(nodeA) ? nodeA : nodeA.parent;\n while(current){\n aParents.unshift(current);\n current = current.parent;\n }\n current = (0, $f781defdc25f69c3$export$bd5ff50f0e53d41c)(nodeB) ? nodeB : nodeB.parent;\n while(current){\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while(idx < maxIdx && aParents[idx] === bParents[idx])idx++;\n if (idx === 0) return $9fbe5392cb849ded$export$406a59d989e8005a.DISCONNECTED;\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) return $9fbe5392cb849ded$export$406a59d989e8005a.FOLLOWING | $9fbe5392cb849ded$export$406a59d989e8005a.CONTAINED_BY;\n return $9fbe5392cb849ded$export$406a59d989e8005a.FOLLOWING;\n }\n if (sharedParent === nodeA) return $9fbe5392cb849ded$export$406a59d989e8005a.PRECEDING | $9fbe5392cb849ded$export$406a59d989e8005a.CONTAINS;\n return $9fbe5392cb849ded$export$406a59d989e8005a.PRECEDING;\n}\nfunction $9fbe5392cb849ded$export$1c267319665a7e7e(nodes) {\n nodes = nodes.filter((node, i, arr)=>!arr.includes(node, i + 1));\n nodes.sort((a, b)=>{\n const relative = $9fbe5392cb849ded$export$17303b8fea718ecc(a, b);\n if (relative & $9fbe5392cb849ded$export$406a59d989e8005a.PRECEDING) return -1;\n else if (relative & $9fbe5392cb849ded$export$406a59d989e8005a.FOLLOWING) return 1;\n return 0;\n });\n return nodes;\n}\n\n\n\n\nfunction $74495ffac5d924b7$export$ad32138c9e09ad4(doc) {\n const feedRoot = $74495ffac5d924b7$var$getOneElement($74495ffac5d924b7$var$isValidFeed, doc);\n return !feedRoot ? null : feedRoot.name === \"feed\" ? $74495ffac5d924b7$var$getAtomFeed(feedRoot) : $74495ffac5d924b7$var$getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */ function $74495ffac5d924b7$var$getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: (0, $5837fd230ec46d88$export$af941c3c7c3b40f5)(\"entry\", childs).map((item)=>{\n var _a;\n const { children: children } = item;\n const entry = {\n media: $74495ffac5d924b7$var$getMediaElements(children)\n };\n $74495ffac5d924b7$var$addConditionally(entry, \"id\", \"id\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = $74495ffac5d924b7$var$getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) entry.link = href;\n const description = $74495ffac5d924b7$var$fetch(\"summary\", children) || $74495ffac5d924b7$var$fetch(\"content\", children);\n if (description) entry.description = description;\n const pubDate = $74495ffac5d924b7$var$fetch(\"updated\", children);\n if (pubDate) entry.pubDate = new Date(pubDate);\n return entry;\n })\n };\n $74495ffac5d924b7$var$addConditionally(feed, \"id\", \"id\", childs);\n $74495ffac5d924b7$var$addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = $74495ffac5d924b7$var$getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) feed.link = href;\n $74495ffac5d924b7$var$addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = $74495ffac5d924b7$var$fetch(\"updated\", childs);\n if (updated) feed.updated = new Date(updated);\n $74495ffac5d924b7$var$addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */ function $74495ffac5d924b7$var$getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = $74495ffac5d924b7$var$getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: (0, $5837fd230ec46d88$export$af941c3c7c3b40f5)(\"item\", feedRoot.children).map((item)=>{\n const { children: children } = item;\n const entry = {\n media: $74495ffac5d924b7$var$getMediaElements(children)\n };\n $74495ffac5d924b7$var$addConditionally(entry, \"id\", \"guid\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"title\", \"title\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"link\", \"link\", children);\n $74495ffac5d924b7$var$addConditionally(entry, \"description\", \"description\", children);\n const pubDate = $74495ffac5d924b7$var$fetch(\"pubDate\", children) || $74495ffac5d924b7$var$fetch(\"dc:date\", children);\n if (pubDate) entry.pubDate = new Date(pubDate);\n return entry;\n })\n };\n $74495ffac5d924b7$var$addConditionally(feed, \"title\", \"title\", childs);\n $74495ffac5d924b7$var$addConditionally(feed, \"link\", \"link\", childs);\n $74495ffac5d924b7$var$addConditionally(feed, \"description\", \"description\", childs);\n const updated = $74495ffac5d924b7$var$fetch(\"lastBuildDate\", childs);\n if (updated) feed.updated = new Date(updated);\n $74495ffac5d924b7$var$addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst $74495ffac5d924b7$var$MEDIA_KEYS_STRING = [\n \"url\",\n \"type\",\n \"lang\"\n];\nconst $74495ffac5d924b7$var$MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\"\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */ function $74495ffac5d924b7$var$getMediaElements(where) {\n return (0, $5837fd230ec46d88$export$af941c3c7c3b40f5)(\"media:content\", where).map((elem)=>{\n const { attribs: attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"]\n };\n for (const attrib of $74495ffac5d924b7$var$MEDIA_KEYS_STRING)if (attribs[attrib]) media[attrib] = attribs[attrib];\n for (const attrib of $74495ffac5d924b7$var$MEDIA_KEYS_INT)if (attribs[attrib]) media[attrib] = parseInt(attribs[attrib], 10);\n if (attribs[\"expression\"]) media.expression = attribs[\"expression\"];\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */ function $74495ffac5d924b7$var$getOneElement(tagName, node) {\n return (0, $5837fd230ec46d88$export$af941c3c7c3b40f5)(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */ function $74495ffac5d924b7$var$fetch(tagName, where, recurse = false) {\n return (0, $1492c9a788fb16e1$export$e0e0794250e9118f)((0, $5837fd230ec46d88$export$af941c3c7c3b40f5)(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */ function $74495ffac5d924b7$var$addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = $74495ffac5d924b7$var$fetch(tagName, where, recurse);\n if (val) obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */ function $74495ffac5d924b7$var$isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n\n\n\n\n\nfunction $0678fe9330bdbd89$export$b6a9369736b19f4d(data, options) {\n const handler = new (0, $ef7c620119bd03f2$export$ff8ccbac9225de62)(undefined, options);\n new (0, $fde3d61a8539aed7$export$7acfa6ed01010e37)(handler, options).end(data);\n return handler.root;\n}\nfunction $0678fe9330bdbd89$export$d66b332881d9723f(data, options) {\n return $0678fe9330bdbd89$export$b6a9369736b19f4d(data, options).children;\n}\nfunction $0678fe9330bdbd89$export$2bbd0317573b00fc(callback, options, elementCallback) {\n const handler = new (0, $ef7c620119bd03f2$export$ff8ccbac9225de62)(callback, options, elementCallback);\n return new (0, $fde3d61a8539aed7$export$7acfa6ed01010e37)(handler, options);\n}\nconst $0678fe9330bdbd89$var$parseFeedDefaultOptions = {\n xmlMode: true\n};\nfunction $0678fe9330bdbd89$export$5267abf679cd576b(feed, options = $0678fe9330bdbd89$var$parseFeedDefaultOptions) {\n return (0, $74495ffac5d924b7$export$ad32138c9e09ad4)($0678fe9330bdbd89$export$d66b332881d9723f(feed, options));\n}\n\n\n\nvar $35d8a34091988186$exports = {};\n\"use strict\";\nvar $35d8a34091988186$var$isMergeableObject = function isMergeableObject(value) {\n return $35d8a34091988186$var$isNonNullObject(value) && !$35d8a34091988186$var$isSpecial(value);\n};\nfunction $35d8a34091988186$var$isNonNullObject(value) {\n return !!value && typeof value === \"object\";\n}\nfunction $35d8a34091988186$var$isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === \"[object RegExp]\" || stringValue === \"[object Date]\" || $35d8a34091988186$var$isReactElement(value);\n}\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar $35d8a34091988186$var$canUseSymbol = typeof Symbol === \"function\" && Symbol.for;\nvar $35d8a34091988186$var$REACT_ELEMENT_TYPE = $35d8a34091988186$var$canUseSymbol ? Symbol.for(\"react.element\") : 0xeac7;\nfunction $35d8a34091988186$var$isReactElement(value) {\n return value.$$typeof === $35d8a34091988186$var$REACT_ELEMENT_TYPE;\n}\nfunction $35d8a34091988186$var$emptyTarget(val) {\n return Array.isArray(val) ? [] : {};\n}\nfunction $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? $35d8a34091988186$var$deepmerge($35d8a34091988186$var$emptyTarget(value), value, options) : value;\n}\nfunction $35d8a34091988186$var$defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function(element) {\n return $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(element, options);\n });\n}\nfunction $35d8a34091988186$var$getMergeFunction(key, options) {\n if (!options.customMerge) return $35d8a34091988186$var$deepmerge;\n var customMerge = options.customMerge(key);\n return typeof customMerge === \"function\" ? customMerge : $35d8a34091988186$var$deepmerge;\n}\nfunction $35d8a34091988186$var$getEnumerableOwnPropertySymbols(target) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n return Object.propertyIsEnumerable.call(target, symbol);\n }) : [];\n}\nfunction $35d8a34091988186$var$getKeys(target) {\n return Object.keys(target).concat($35d8a34091988186$var$getEnumerableOwnPropertySymbols(target));\n}\nfunction $35d8a34091988186$var$propertyIsOnObject(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n}\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction $35d8a34091988186$var$propertyIsUnsafe(target, key) {\n return $35d8a34091988186$var$propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key) // and also unsafe if they're nonenumerable.\n );\n}\nfunction $35d8a34091988186$var$mergeObject(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) $35d8a34091988186$var$getKeys(target).forEach(function(key) {\n destination[key] = $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(target[key], options);\n });\n $35d8a34091988186$var$getKeys(source).forEach(function(key) {\n if ($35d8a34091988186$var$propertyIsUnsafe(target, key)) return;\n if ($35d8a34091988186$var$propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) destination[key] = $35d8a34091988186$var$getMergeFunction(key, options)(target[key], source[key], options);\n else destination[key] = $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(source[key], options);\n });\n return destination;\n}\nfunction $35d8a34091988186$var$deepmerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || $35d8a34091988186$var$defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || $35d8a34091988186$var$isMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = $35d8a34091988186$var$cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) return $35d8a34091988186$var$cloneUnlessOtherwiseSpecified(source, options);\n else if (sourceIsArray) return options.arrayMerge(target, source, options);\n else return $35d8a34091988186$var$mergeObject(target, source, options);\n}\n$35d8a34091988186$var$deepmerge.all = function deepmergeAll(array, options) {\n if (!Array.isArray(array)) throw new Error(\"first argument should be an array\");\n return array.reduce(function(prev, next) {\n return $35d8a34091988186$var$deepmerge(prev, next, options);\n }, {});\n};\nvar $35d8a34091988186$var$deepmerge_1 = $35d8a34091988186$var$deepmerge;\n$35d8a34091988186$exports = $35d8a34091988186$var$deepmerge_1;\n\n\n\n/**\n * Make a recursive function that will only run to a given depth\n * and switches to an alternative function at that depth. \\\n * No limitation if `n` is `undefined` (Just wraps `f` in that case).\n *\n * @param { number | undefined } n Allowed depth of recursion. `undefined` for no limitation.\n * @param { Function } f Function that accepts recursive callback as the first argument.\n * @param { Function } [g] Function to run instead, when maximum depth was reached. Do nothing by default.\n * @returns { Function }\n */ function $f14a7b0c234065ea$var$limitedDepthRecursive(n, f, g = ()=>undefined) {\n if (n === undefined) {\n const f1 = function(...args) {\n return f(f1, ...args);\n };\n return f1;\n }\n if (n >= 0) return function(...args) {\n return f($f14a7b0c234065ea$var$limitedDepthRecursive(n - 1, f, g), ...args);\n };\n return g;\n}\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from each side.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$trimCharacter(str, char) {\n let start = 0;\n let end = str.length;\n while(start < end && str[start] === char)++start;\n while(end > start && str[end - 1] === char)--end;\n return start > 0 || end < str.length ? str.substring(start, end) : str;\n}\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from the end only.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$trimCharacterEnd(str, char) {\n let end = str.length;\n while(end > 0 && str[end - 1] === char)--end;\n return end < str.length ? str.substring(0, end) : str;\n}\n/**\n * Return a new string will all characters replaced with unicode escape sequences.\n * This extreme kind of escaping can used to be safely compose regular expressions.\n *\n * @param { string } str A string to escape.\n * @returns { string } A string of unicode escape sequences.\n */ function $f14a7b0c234065ea$var$unicodeEscape(str) {\n return str.replace(/[\\s\\S]/g, (c)=>\"\\\\u\" + c.charCodeAt().toString(16).padStart(4, \"0\"));\n}\n/**\n * Deduplicate an array by a given key callback.\n * Item properties are merged recursively and with the preference for last defined values.\n * Of items with the same key, merged item takes the place of the last item,\n * others are omitted.\n *\n * @param { any[] } items An array to deduplicate.\n * @param { (x: any) => string } getKey Callback to get a value that distinguishes unique items.\n * @returns { any[] }\n */ function $f14a7b0c234065ea$var$mergeDuplicatesPreferLast(items, getKey) {\n const map = new Map();\n for(let i = items.length; i-- > 0;){\n const item = items[i];\n const key = getKey(item);\n map.set(key, map.has(key) ? (0, (/*@__PURE__*/$parcel$interopDefault($35d8a34091988186$exports)))(item, map.get(key), {\n arrayMerge: $f14a7b0c234065ea$var$overwriteMerge$1\n }) : item);\n }\n return [\n ...map.values()\n ].reverse();\n}\nconst $f14a7b0c234065ea$var$overwriteMerge$1 = (acc, src, options)=>[\n ...src\n ];\n/**\n * Get a nested property from an object.\n *\n * @param { object } obj The object to query for the value.\n * @param { string[] } path The path to the property.\n * @returns { any }\n */ function $f14a7b0c234065ea$var$get(obj, path) {\n for (const key of path){\n if (!obj) return undefined;\n obj = obj[key];\n }\n return obj;\n}\n/**\n * Convert a number into alphabetic sequence representation (Sequence without zeroes).\n *\n * For example: `a, ..., z, aa, ..., zz, aaa, ...`.\n *\n * @param { number } num Number to convert. Must be >= 1.\n * @param { string } [baseChar = 'a'] Character for 1 in the sequence.\n * @param { number } [base = 26] Number of characters in the sequence.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$numberToLetterSequence(num, baseChar = \"a\", base = 26) {\n const digits = [];\n do {\n num -= 1;\n digits.push(num % base);\n num = num / base >> 0; // quick `floor`\n }while (num > 0);\n const baseCode = baseChar.charCodeAt(0);\n return digits.reverse().map((n)=>String.fromCharCode(baseCode + n)).join(\"\");\n}\nconst $f14a7b0c234065ea$var$I = [\n \"I\",\n \"X\",\n \"C\",\n \"M\"\n];\nconst $f14a7b0c234065ea$var$V = [\n \"V\",\n \"L\",\n \"D\"\n];\n/**\n * Convert a number to it's Roman representation. No large numbers extension.\n *\n * @param { number } num Number to convert. `0 < num <= 3999`.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$numberToRoman(num) {\n return [\n ...num + \"\"\n ].map((n)=>+n).reverse().map((v, i)=>v % 5 < 4 ? (v < 5 ? \"\" : $f14a7b0c234065ea$var$V[i]) + $f14a7b0c234065ea$var$I[i].repeat(v % 5) : $f14a7b0c234065ea$var$I[i] + (v < 5 ? $f14a7b0c234065ea$var$V[i] : $f14a7b0c234065ea$var$I[i + 1])).reverse().join(\"\");\n}\n/**\n * Helps to build text from words.\n */ class $f14a7b0c234065ea$var$InlineTextBuilder {\n /**\n * Creates an instance of InlineTextBuilder.\n *\n * If `maxLineLength` is not provided then it is either `options.wordwrap` or unlimited.\n *\n * @param { Options } options HtmlToText options.\n * @param { number } [ maxLineLength ] This builder will try to wrap text to fit this line length.\n */ constructor(options, maxLineLength){\n /** @type { string[][] } */ this.lines = [];\n /** @type { string[] } */ this.nextLineWords = [];\n this.maxLineLength = maxLineLength || options.wordwrap || Number.MAX_VALUE;\n this.nextLineAvailableChars = this.maxLineLength;\n this.wrapCharacters = $f14a7b0c234065ea$var$get(options, [\n \"longWordSplit\",\n \"wrapCharacters\"\n ]) || [];\n this.forceWrapOnLimit = $f14a7b0c234065ea$var$get(options, [\n \"longWordSplit\",\n \"forceWrapOnLimit\"\n ]) || false;\n this.stashedSpace = false;\n this.wordBreakOpportunity = false;\n }\n /**\n * Add a new word.\n *\n * @param { string } word A word to add.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */ pushWord(word, noWrap = false) {\n if (this.nextLineAvailableChars <= 0 && !noWrap) this.startNewLine();\n const isLineStart = this.nextLineWords.length === 0;\n const cost = word.length + (isLineStart ? 0 : 1);\n if (cost <= this.nextLineAvailableChars || noWrap) {\n this.nextLineWords.push(word);\n this.nextLineAvailableChars -= cost;\n } else {\n // The word is moved to a new line - prefer to wrap between words.\n const [first, ...rest] = this.splitLongWord(word);\n if (!isLineStart) this.startNewLine();\n this.nextLineWords.push(first);\n this.nextLineAvailableChars -= first.length;\n for (const part of rest){\n this.startNewLine();\n this.nextLineWords.push(part);\n this.nextLineAvailableChars -= part.length;\n }\n }\n }\n /**\n * Pop a word from the currently built line.\n * This doesn't affect completed lines.\n *\n * @returns { string }\n */ popWord() {\n const lastWord = this.nextLineWords.pop();\n if (lastWord !== undefined) {\n const isLineStart = this.nextLineWords.length === 0;\n const cost = lastWord.length + (isLineStart ? 0 : 1);\n this.nextLineAvailableChars += cost;\n }\n return lastWord;\n }\n /**\n * Concat a word to the last word already in the builder.\n * Adds a new word in case there are no words yet in the last line.\n *\n * @param { string } word A word to be concatenated.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */ concatWord(word, noWrap = false) {\n if (this.wordBreakOpportunity && word.length > this.nextLineAvailableChars) {\n this.pushWord(word, noWrap);\n this.wordBreakOpportunity = false;\n } else {\n const lastWord = this.popWord();\n this.pushWord(lastWord ? lastWord.concat(word) : word, noWrap);\n }\n }\n /**\n * Add current line (and more empty lines if provided argument > 1) to the list of complete lines and start a new one.\n *\n * @param { number } n Number of line breaks that will be added to the resulting string.\n */ startNewLine(n = 1) {\n this.lines.push(this.nextLineWords);\n if (n > 1) this.lines.push(...Array.from({\n length: n - 1\n }, ()=>[]));\n this.nextLineWords = [];\n this.nextLineAvailableChars = this.maxLineLength;\n }\n /**\n * No words in this builder.\n *\n * @returns { boolean }\n */ isEmpty() {\n return this.lines.length === 0 && this.nextLineWords.length === 0;\n }\n clear() {\n this.lines.length = 0;\n this.nextLineWords.length = 0;\n this.nextLineAvailableChars = this.maxLineLength;\n }\n /**\n * Join all lines of words inside the InlineTextBuilder into a complete string.\n *\n * @returns { string }\n */ toString() {\n return [\n ...this.lines,\n this.nextLineWords\n ].map((words)=>words.join(\" \")).join(\"\\n\");\n }\n /**\n * Split a long word up to fit within the word wrap limit.\n * Use either a character to split looking back from the word wrap limit,\n * or truncate to the word wrap limit.\n *\n * @param { string } word Input word.\n * @returns { string[] } Parts of the word.\n */ splitLongWord(word) {\n const parts = [];\n let idx = 0;\n while(word.length > this.maxLineLength){\n const firstLine = word.substring(0, this.maxLineLength);\n const remainingChars = word.substring(this.maxLineLength);\n const splitIndex = firstLine.lastIndexOf(this.wrapCharacters[idx]);\n if (splitIndex > -1) {\n word = firstLine.substring(splitIndex + 1) + remainingChars;\n parts.push(firstLine.substring(0, splitIndex + 1));\n } else {\n idx++;\n if (idx < this.wrapCharacters.length) word = firstLine + remainingChars;\n else {\n if (this.forceWrapOnLimit) {\n parts.push(firstLine);\n word = remainingChars;\n if (word.length > this.maxLineLength) continue;\n } else word = firstLine + remainingChars;\n break;\n }\n }\n }\n parts.push(word); // Add remaining part to array\n return parts;\n }\n}\n/* eslint-disable max-classes-per-file */ class $f14a7b0c234065ea$var$StackItem {\n constructor(next = null){\n this.next = next;\n }\n getRoot() {\n return this.next ? this.next : this;\n }\n}\nclass $f14a7b0c234065ea$var$BlockStackItem extends $f14a7b0c234065ea$var$StackItem {\n constructor(options, next = null, leadingLineBreaks = 1, maxLineLength){\n super(next);\n this.leadingLineBreaks = leadingLineBreaks;\n this.inlineTextBuilder = new $f14a7b0c234065ea$var$InlineTextBuilder(options, maxLineLength);\n this.rawText = \"\";\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\nclass $f14a7b0c234065ea$var$ListStackItem extends $f14a7b0c234065ea$var$BlockStackItem {\n constructor(options, next = null, { interRowLineBreaks: interRowLineBreaks = 1, leadingLineBreaks: leadingLineBreaks = 2, maxLineLength: maxLineLength, maxPrefixLength: maxPrefixLength = 0, prefixAlign: prefixAlign = \"left\" } = {}){\n super(options, next, leadingLineBreaks, maxLineLength);\n this.maxPrefixLength = maxPrefixLength;\n this.prefixAlign = prefixAlign;\n this.interRowLineBreaks = interRowLineBreaks;\n }\n}\nclass $f14a7b0c234065ea$var$ListItemStackItem extends $f14a7b0c234065ea$var$BlockStackItem {\n constructor(options, next = null, { leadingLineBreaks: leadingLineBreaks = 1, maxLineLength: maxLineLength, prefix: prefix = \"\" } = {}){\n super(options, next, leadingLineBreaks, maxLineLength);\n this.prefix = prefix;\n }\n}\nclass $f14a7b0c234065ea$var$TableStackItem extends $f14a7b0c234065ea$var$StackItem {\n constructor(next = null){\n super(next);\n this.rows = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\nclass $f14a7b0c234065ea$var$TableRowStackItem extends $f14a7b0c234065ea$var$StackItem {\n constructor(next = null){\n super(next);\n this.cells = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\nclass $f14a7b0c234065ea$var$TableCellStackItem extends $f14a7b0c234065ea$var$StackItem {\n constructor(options, next = null, maxColumnWidth){\n super(next);\n this.inlineTextBuilder = new $f14a7b0c234065ea$var$InlineTextBuilder(options, maxColumnWidth);\n this.rawText = \"\";\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\nclass $f14a7b0c234065ea$var$TransformerStackItem extends $f14a7b0c234065ea$var$StackItem {\n constructor(next = null, transform){\n super(next);\n this.transform = transform;\n }\n}\nfunction $f14a7b0c234065ea$var$charactersToCodes(str) {\n return [\n ...str\n ].map((c)=>\"\\\\u\" + c.charCodeAt(0).toString(16).padStart(4, \"0\")).join(\"\");\n}\n/**\n * Helps to handle HTML whitespaces.\n *\n * @class WhitespaceProcessor\n */ class $f14a7b0c234065ea$var$WhitespaceProcessor {\n /**\n * Creates an instance of WhitespaceProcessor.\n *\n * @param { Options } options HtmlToText options.\n * @memberof WhitespaceProcessor\n */ constructor(options){\n this.whitespaceChars = options.preserveNewlines ? options.whitespaceCharacters.replace(/\\n/g, \"\") : options.whitespaceCharacters;\n const whitespaceCodes = $f14a7b0c234065ea$var$charactersToCodes(this.whitespaceChars);\n this.leadingWhitespaceRe = new RegExp(`^[${whitespaceCodes}]`);\n this.trailingWhitespaceRe = new RegExp(`[${whitespaceCodes}]$`);\n this.allWhitespaceOrEmptyRe = new RegExp(`^[${whitespaceCodes}]*$`);\n this.newlineOrNonWhitespaceRe = new RegExp(`(\\\\n|[^\\\\n${whitespaceCodes}])`, \"g\");\n this.newlineOrNonNewlineStringRe = new RegExp(`(\\\\n|[^\\\\n]+)`, \"g\");\n if (options.preserveNewlines) {\n const wordOrNewlineRe = new RegExp(`\\\\n|[^\\\\n${whitespaceCodes}]+`, \"gm\");\n /**\n * Shrink whitespaces and wrap text, add to the builder.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { (str: string) => string } [ transform ] A transform to be applied to words.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */ this.shrinkWrapAdd = function(text, inlineTextBuilder, transform = (str)=>str, noWrap = false) {\n if (!text) return;\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordOrNewlineRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === \"\\n\") inlineTextBuilder.startNewLine();\n else if (previouslyStashedSpace || this.testLeadingWhitespace(text)) inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n else inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n while((m = wordOrNewlineRe.exec(text)) !== null)if (m[0] === \"\\n\") inlineTextBuilder.startNewLine();\n else inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n inlineTextBuilder.stashedSpace = previouslyStashedSpace && !anyMatch || this.testTrailingWhitespace(text);\n // No need to stash a space in case last added item was a new line,\n // but that won't affect anything later anyway.\n };\n } else {\n const wordRe = new RegExp(`[^${whitespaceCodes}]+`, \"g\");\n this.shrinkWrapAdd = function(text, inlineTextBuilder, transform = (str)=>str, noWrap = false) {\n if (!text) return;\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordRe.exec(text);\n if (m) {\n anyMatch = true;\n if (previouslyStashedSpace || this.testLeadingWhitespace(text)) inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n else inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n while((m = wordRe.exec(text)) !== null)inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n inlineTextBuilder.stashedSpace = previouslyStashedSpace && !anyMatch || this.testTrailingWhitespace(text);\n };\n }\n }\n /**\n * Add text with only minimal processing.\n * Everything between newlines considered a single word.\n * No whitespace is trimmed.\n * Not affected by preserveNewlines option - `\\n` always starts a new line.\n *\n * `noWrap` argument is `true` by default - this won't start a new line\n * even if there is not enough space left in the current line.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */ addLiteral(text, inlineTextBuilder, noWrap = true) {\n if (!text) return;\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = this.newlineOrNonNewlineStringRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === \"\\n\") inlineTextBuilder.startNewLine();\n else if (previouslyStashedSpace) inlineTextBuilder.pushWord(m[0], noWrap);\n else inlineTextBuilder.concatWord(m[0], noWrap);\n while((m = this.newlineOrNonNewlineStringRe.exec(text)) !== null)if (m[0] === \"\\n\") inlineTextBuilder.startNewLine();\n else inlineTextBuilder.pushWord(m[0], noWrap);\n }\n inlineTextBuilder.stashedSpace = previouslyStashedSpace && !anyMatch;\n }\n /**\n * Test whether the given text starts with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */ testLeadingWhitespace(text) {\n return this.leadingWhitespaceRe.test(text);\n }\n /**\n * Test whether the given text ends with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */ testTrailingWhitespace(text) {\n return this.trailingWhitespaceRe.test(text);\n }\n /**\n * Test whether the given text contains any non-whitespace characters.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */ testContainsWords(text) {\n return !this.allWhitespaceOrEmptyRe.test(text);\n }\n /**\n * Return the number of newlines if there are no words.\n *\n * If any word is found then return zero regardless of the actual number of newlines.\n *\n * @param { string } text Input string.\n * @returns { number }\n */ countNewlinesNoWords(text) {\n this.newlineOrNonWhitespaceRe.lastIndex = 0;\n let counter = 0;\n let match;\n while((match = this.newlineOrNonWhitespaceRe.exec(text)) !== null){\n if (match[0] === \"\\n\") counter++;\n else return 0;\n }\n return counter;\n }\n}\n/**\n * Helps to build text from inline and block elements.\n *\n * @class BlockTextBuilder\n */ class $f14a7b0c234065ea$var$BlockTextBuilder {\n /**\n * Creates an instance of BlockTextBuilder.\n *\n * @param { Options } options HtmlToText options.\n * @param { import('selderee').Picker } picker Selectors decision tree picker.\n * @param { any} [metadata] Optional metadata for HTML document, for use in formatters.\n */ constructor(options, picker, metadata){\n this.options = options;\n this.picker = picker;\n this.metadata = metadata;\n this.whitespaceProcessor = new $f14a7b0c234065ea$var$WhitespaceProcessor(options);\n /** @type { StackItem } */ this._stackItem = new $f14a7b0c234065ea$var$BlockStackItem(options);\n /** @type { TransformerStackItem } */ this._wordTransformer = undefined;\n }\n /**\n * Put a word-by-word transform function onto the transformations stack.\n *\n * Mainly used for uppercasing. Can be bypassed to add unformatted text such as URLs.\n *\n * Word transformations applied before wrapping.\n *\n * @param { (str: string) => string } wordTransform Word transformation function.\n */ pushWordTransform(wordTransform) {\n this._wordTransformer = new $f14a7b0c234065ea$var$TransformerStackItem(this._wordTransformer, wordTransform);\n }\n /**\n * Remove a function from the word transformations stack.\n *\n * @returns { (str: string) => string } A function that was removed.\n */ popWordTransform() {\n if (!this._wordTransformer) return undefined;\n const transform = this._wordTransformer.transform;\n this._wordTransformer = this._wordTransformer.next;\n return transform;\n }\n /**\n * Ignore wordwrap option in followup inline additions and disable automatic wrapping.\n */ startNoWrap() {\n this._stackItem.isNoWrap = true;\n }\n /**\n * Return automatic wrapping to behavior defined by options.\n */ stopNoWrap() {\n this._stackItem.isNoWrap = false;\n }\n /** @returns { (str: string) => string } */ _getCombinedWordTransformer() {\n const wt = this._wordTransformer ? (str)=>$f14a7b0c234065ea$var$applyTransformer(str, this._wordTransformer) : undefined;\n const ce = this.options.encodeCharacters;\n return wt ? ce ? (str)=>ce(wt(str)) : wt : ce;\n }\n _popStackItem() {\n const item = this._stackItem;\n this._stackItem = item.next;\n return item;\n }\n /**\n * Add a line break into currently built block.\n */ addLineBreak() {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem)) return;\n if (this._stackItem.isPre) this._stackItem.rawText += \"\\n\";\n else this._stackItem.inlineTextBuilder.startNewLine();\n }\n /**\n * Allow to break line in case directly following text will not fit.\n */ addWordBreakOpportunity() {\n if (this._stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem) this._stackItem.inlineTextBuilder.wordBreakOpportunity = true;\n }\n /**\n * Add a node inline into the currently built block.\n *\n * @param { string } str\n * Text content of a node to add.\n *\n * @param { object } [param1]\n * Object holding the parameters of the operation.\n *\n * @param { boolean } [param1.noWordTransform]\n * Ignore word transformers if there are any.\n * Don't encode characters as well.\n * (Use this for things like URL addresses).\n */ addInline(str, { noWordTransform: noWordTransform = false } = {}) {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem)) return;\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n if (str.length === 0 || // empty string\n this._stackItem.stashedLineBreaks && // stashed linebreaks make whitespace irrelevant\n !this.whitespaceProcessor.testContainsWords(str) // no words to add\n ) return;\n if (this.options.preserveNewlines) {\n const newlinesNumber = this.whitespaceProcessor.countNewlinesNoWords(str);\n if (newlinesNumber > 0) {\n this._stackItem.inlineTextBuilder.startNewLine(newlinesNumber);\n // keep stashedLineBreaks unchanged\n return;\n }\n }\n if (this._stackItem.stashedLineBreaks) this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n this.whitespaceProcessor.shrinkWrapAdd(str, this._stackItem.inlineTextBuilder, noWordTransform ? undefined : this._getCombinedWordTransformer(), this._stackItem.isNoWrap);\n this._stackItem.stashedLineBreaks = 0; // inline text doesn't introduce line breaks\n }\n /**\n * Add a string inline into the currently built block.\n *\n * Use this for markup elements that don't have to adhere\n * to text layout rules.\n *\n * @param { string } str Text to add.\n */ addLiteral(str) {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || this._stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem)) return;\n if (str.length === 0) return;\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n if (this._stackItem.stashedLineBreaks) this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n this.whitespaceProcessor.addLiteral(str, this._stackItem.inlineTextBuilder, this._stackItem.isNoWrap);\n this._stackItem.stashedLineBreaks = 0;\n }\n /**\n * Start building a new block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any preceding block.\n *\n * @param { number } [param0.reservedLineLength]\n * Reserve this number of characters on each line for block markup.\n *\n * @param { boolean } [param0.isPre]\n * Should HTML whitespace be preserved inside this block.\n */ openBlock({ leadingLineBreaks: leadingLineBreaks = 1, reservedLineLength: reservedLineLength = 0, isPre: isPre = false } = {}) {\n const maxLineLength = Math.max(20, this._stackItem.inlineTextBuilder.maxLineLength - reservedLineLength);\n this._stackItem = new $f14a7b0c234065ea$var$BlockStackItem(this.options, this._stackItem, leadingLineBreaks, maxLineLength);\n if (isPre) this._stackItem.isPre = true;\n }\n /**\n * Finalize currently built block, add it's content to the parent block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any following block.\n *\n * @param { (str: string) => string } [param0.blockTransform]\n * A function to transform the block text before adding to the parent block.\n * This happens after word wrap and should be used in combination with reserved line length\n * in order to keep line lengths correct.\n * Used for whole block markup.\n */ closeBlock({ trailingLineBreaks: trailingLineBreaks = 1, blockTransform: blockTransform } = {}) {\n const block = this._popStackItem();\n const blockText = blockTransform ? blockTransform($f14a7b0c234065ea$var$getText(block)) : $f14a7b0c234065ea$var$getText(block);\n $f14a7b0c234065ea$var$addText(this._stackItem, blockText, block.leadingLineBreaks, Math.max(block.stashedLineBreaks, trailingLineBreaks));\n }\n /**\n * Start building a new list.\n *\n * @param { object } [param0]\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.maxPrefixLength]\n * Length of the longest list item prefix.\n * If not supplied or too small then list items won't be aligned properly.\n *\n * @param { 'left' | 'right' } [param0.prefixAlign]\n * Specify how prefixes of different lengths have to be aligned\n * within a column.\n *\n * @param { number } [param0.interRowLineBreaks]\n * Minimum number of line breaks between list items.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any preceding block.\n */ openList({ maxPrefixLength: maxPrefixLength = 0, prefixAlign: prefixAlign = \"left\", interRowLineBreaks: interRowLineBreaks = 1, leadingLineBreaks: leadingLineBreaks = 2 } = {}) {\n this._stackItem = new $f14a7b0c234065ea$var$ListStackItem(this.options, this._stackItem, {\n interRowLineBreaks: interRowLineBreaks,\n leadingLineBreaks: leadingLineBreaks,\n maxLineLength: this._stackItem.inlineTextBuilder.maxLineLength,\n maxPrefixLength: maxPrefixLength,\n prefixAlign: prefixAlign\n });\n }\n /**\n * Start building a new list item.\n *\n * @param {object} param0\n * Object holding the parameters of the list item.\n *\n * @param { string } [param0.prefix]\n * Prefix for this list item (item number, bullet point, etc).\n */ openListItem({ prefix: prefix = \"\" } = {}) {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$ListStackItem)) throw new Error(\"Can't add a list item to something that is not a list! Check the formatter.\");\n const list = this._stackItem;\n const prefixLength = Math.max(prefix.length, list.maxPrefixLength);\n const maxLineLength = Math.max(20, list.inlineTextBuilder.maxLineLength - prefixLength);\n this._stackItem = new $f14a7b0c234065ea$var$ListItemStackItem(this.options, list, {\n prefix: prefix,\n maxLineLength: maxLineLength,\n leadingLineBreaks: list.interRowLineBreaks\n });\n }\n /**\n * Finalize currently built list item, add it's content to the parent list.\n */ closeListItem() {\n const listItem = this._popStackItem();\n const list = listItem.next;\n const prefixLength = Math.max(listItem.prefix.length, list.maxPrefixLength);\n const spacing = \"\\n\" + \" \".repeat(prefixLength);\n const prefix = list.prefixAlign === \"right\" ? listItem.prefix.padStart(prefixLength) : listItem.prefix.padEnd(prefixLength);\n const text = prefix + $f14a7b0c234065ea$var$getText(listItem).replace(/\\n/g, spacing);\n $f14a7b0c234065ea$var$addText(list, text, listItem.leadingLineBreaks, Math.max(listItem.stashedLineBreaks, list.interRowLineBreaks));\n }\n /**\n * Finalize currently built list, add it's content to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any following block.\n */ closeList({ trailingLineBreaks: trailingLineBreaks = 2 } = {}) {\n const list = this._popStackItem();\n const text = $f14a7b0c234065ea$var$getText(list);\n if (text) $f14a7b0c234065ea$var$addText(this._stackItem, text, list.leadingLineBreaks, trailingLineBreaks);\n }\n /**\n * Start building a table.\n */ openTable() {\n this._stackItem = new $f14a7b0c234065ea$var$TableStackItem(this._stackItem);\n }\n /**\n * Start building a table row.\n */ openTableRow() {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$TableStackItem)) throw new Error(\"Can't add a table row to something that is not a table! Check the formatter.\");\n this._stackItem = new $f14a7b0c234065ea$var$TableRowStackItem(this._stackItem);\n }\n /**\n * Start building a table cell.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.maxColumnWidth]\n * Wrap cell content to this width. Fall back to global wordwrap value if undefined.\n */ openTableCell({ maxColumnWidth: maxColumnWidth } = {}) {\n if (!(this._stackItem instanceof $f14a7b0c234065ea$var$TableRowStackItem)) throw new Error(\"Can't add a table cell to something that is not a table row! Check the formatter.\");\n this._stackItem = new $f14a7b0c234065ea$var$TableCellStackItem(this.options, this._stackItem, maxColumnWidth);\n }\n /**\n * Finalize currently built table cell and add it to parent table row's cells.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.colspan] How many columns this cell should occupy.\n * @param { number } [param0.rowspan] How many rows this cell should occupy.\n */ closeTableCell({ colspan: colspan = 1, rowspan: rowspan = 1 } = {}) {\n const cell = this._popStackItem();\n const text = $f14a7b0c234065ea$var$trimCharacter($f14a7b0c234065ea$var$getText(cell), \"\\n\");\n cell.next.cells.push({\n colspan: colspan,\n rowspan: rowspan,\n text: text\n });\n }\n /**\n * Finalize currently built table row and add it to parent table's rows.\n */ closeTableRow() {\n const row = this._popStackItem();\n row.next.rows.push(row.cells);\n }\n /**\n * Finalize currently built table and add the rendered text to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the table.\n *\n * @param { TablePrinter } param0.tableToString\n * A function to convert a table of stringified cells into a complete table.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This table should have at least this number of line breaks to separate if from any preceding block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This table should have at least this number of line breaks to separate it from any following block.\n */ closeTable({ tableToString: tableToString, leadingLineBreaks: leadingLineBreaks = 2, trailingLineBreaks: trailingLineBreaks = 2 }) {\n const table = this._popStackItem();\n const output = tableToString(table.rows);\n if (output) $f14a7b0c234065ea$var$addText(this._stackItem, output, leadingLineBreaks, trailingLineBreaks);\n }\n /**\n * Return the rendered text content of this builder.\n *\n * @returns { string }\n */ toString() {\n return $f14a7b0c234065ea$var$getText(this._stackItem.getRoot());\n // There should only be the root item if everything is closed properly.\n }\n}\nfunction $f14a7b0c234065ea$var$getText(stackItem) {\n if (!(stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem)) throw new Error(\"Only blocks, list items and table cells can be requested for text contents.\");\n return stackItem.inlineTextBuilder.isEmpty() ? stackItem.rawText : stackItem.rawText + stackItem.inlineTextBuilder.toString();\n}\nfunction $f14a7b0c234065ea$var$addText(stackItem, text, leadingLineBreaks, trailingLineBreaks) {\n if (!(stackItem instanceof $f14a7b0c234065ea$var$BlockStackItem || stackItem instanceof $f14a7b0c234065ea$var$ListItemStackItem || stackItem instanceof $f14a7b0c234065ea$var$TableCellStackItem)) throw new Error(\"Only blocks, list items and table cells can contain text.\");\n const parentText = $f14a7b0c234065ea$var$getText(stackItem);\n const lineBreaks = Math.max(stackItem.stashedLineBreaks, leadingLineBreaks);\n stackItem.inlineTextBuilder.clear();\n if (parentText) stackItem.rawText = parentText + \"\\n\".repeat(lineBreaks) + text;\n else {\n stackItem.rawText = text;\n stackItem.leadingLineBreaks = lineBreaks;\n }\n stackItem.stashedLineBreaks = trailingLineBreaks;\n}\n/**\n * @param { string } str A string to transform.\n * @param { TransformerStackItem } transformer A transformer item (with possible continuation).\n * @returns { string }\n */ function $f14a7b0c234065ea$var$applyTransformer(str, transformer) {\n return transformer ? $f14a7b0c234065ea$var$applyTransformer(transformer.transform(str), transformer.next) : str;\n}\n/**\n * Compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options (defaults, formatters, user options merged, deduplicated).\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */ function $f14a7b0c234065ea$var$compile$1(options = {}) {\n const selectorsWithoutFormat = options.selectors.filter((s)=>!s.format);\n if (selectorsWithoutFormat.length) throw new Error(\"Following selectors have no specified format: \" + selectorsWithoutFormat.map((s)=>`\\`${s.selector}\\``).join(\", \"));\n const picker = new (0, $5220bf0c68681267$export$de34b2c812597081)(options.selectors.map((s)=>[\n s.selector,\n s\n ])).build((0, $cbea839d19c5e791$export$dbda60a8f53eb466));\n if (typeof options.encodeCharacters !== \"function\") options.encodeCharacters = $f14a7b0c234065ea$var$makeReplacerFromDict(options.encodeCharacters);\n const baseSelectorsPicker = new (0, $5220bf0c68681267$export$de34b2c812597081)(options.baseElements.selectors.map((s, i)=>[\n s,\n i + 1\n ])).build((0, $cbea839d19c5e791$export$dbda60a8f53eb466));\n function findBaseElements(dom) {\n return $f14a7b0c234065ea$var$findBases(dom, options, baseSelectorsPicker);\n }\n const limitedWalk = $f14a7b0c234065ea$var$limitedDepthRecursive(options.limits.maxDepth, $f14a7b0c234065ea$var$recursiveWalk, function(dom, builder) {\n builder.addInline(options.limits.ellipsis || \"\");\n });\n return function(html, metadata) {\n return $f14a7b0c234065ea$var$process(html, metadata, options, picker, findBaseElements, limitedWalk);\n };\n}\n/**\n * Convert given HTML according to preprocessed options.\n *\n * @param { string } html HTML content to convert.\n * @param { any } metadata Optional metadata for HTML document, for use in formatters.\n * @param { Options } options HtmlToText options (preprocessed).\n * @param { import('selderee').Picker } picker\n * Tag definition picker for DOM nodes processing.\n * @param { (dom: DomNode[]) => DomNode[] } findBaseElements\n * Function to extract elements from HTML DOM\n * that will only be present in the output text.\n * @param { RecursiveCallback } walk Recursive callback.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$process(html, metadata, options, picker, findBaseElements, walk) {\n const maxInputLength = options.limits.maxInputLength;\n if (maxInputLength && html && html.length > maxInputLength) {\n console.warn(`Input length ${html.length} is above allowed limit of ${maxInputLength}. Truncating without ellipsis.`);\n html = html.substring(0, maxInputLength);\n }\n const document = (0, $0678fe9330bdbd89$export$b6a9369736b19f4d)(html, {\n decodeEntities: options.decodeEntities\n });\n const bases = findBaseElements(document.children);\n const builder = new $f14a7b0c234065ea$var$BlockTextBuilder(options, picker, metadata);\n walk(bases, builder);\n return builder.toString();\n}\nfunction $f14a7b0c234065ea$var$findBases(dom, options, baseSelectorsPicker) {\n const results = [];\n function recursiveWalk(walk, /** @type { DomNode[] } */ dom) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n for (const elem of dom){\n if (elem.type !== \"tag\") continue;\n const pickedSelectorIndex = baseSelectorsPicker.pick1(elem);\n if (pickedSelectorIndex > 0) results.push({\n selectorIndex: pickedSelectorIndex,\n element: elem\n });\n else if (elem.children) walk(elem.children);\n if (results.length >= options.limits.maxBaseElements) return;\n }\n }\n const limitedWalk = $f14a7b0c234065ea$var$limitedDepthRecursive(options.limits.maxDepth, recursiveWalk);\n limitedWalk(dom);\n if (options.baseElements.orderBy !== \"occurrence\") results.sort((a, b)=>a.selectorIndex - b.selectorIndex);\n return options.baseElements.returnDomByDefault && results.length === 0 ? dom : results.map((x)=>x.element);\n}\n/**\n * Function to walk through DOM nodes and accumulate their string representations.\n *\n * @param { RecursiveCallback } walk Recursive callback.\n * @param { DomNode[] } [dom] Nodes array to process.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @private\n */ function $f14a7b0c234065ea$var$recursiveWalk(walk, dom, builder) {\n if (!dom) return;\n const options = builder.options;\n const tooManyChildNodes = dom.length > options.limits.maxChildNodes;\n if (tooManyChildNodes) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n dom.push({\n data: options.limits.ellipsis,\n type: \"text\"\n });\n }\n for (const elem of dom)switch(elem.type){\n case \"text\":\n builder.addInline(elem.data);\n break;\n case \"tag\":\n {\n const tagDefinition = builder.picker.pick1(elem);\n const format = options.formatters[tagDefinition.format];\n format(elem, walk, builder, tagDefinition.options || {});\n break;\n }\n }\n return;\n}\n/**\n * @param { Object } dict\n * A dictionary where keys are characters to replace\n * and values are replacement strings.\n *\n * First code point from dict keys is used.\n * Compound emojis with ZWJ are not supported (not until Node 16).\n *\n * @returns { ((str: string) => string) | undefined }\n */ function $f14a7b0c234065ea$var$makeReplacerFromDict(dict) {\n if (!dict || Object.keys(dict).length === 0) return undefined;\n /** @type { [string, string][] } */ const entries = Object.entries(dict).filter(([, v])=>v !== false);\n const regex = new RegExp(entries.map(([c])=>`(${$f14a7b0c234065ea$var$unicodeEscape([\n ...c\n ][0])})`).join(\"|\"), \"g\");\n const values = entries.map(([, v])=>v);\n const replacer = (m, ...cgs)=>values[cgs.findIndex((cg)=>cg)];\n return (str)=>str.replace(regex, replacer);\n}\n/**\n * Dummy formatter that discards the input and does nothing.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatSkip(elem, walk, builder, formatOptions) {\n/* do nothing */ }\n/**\n * Insert the given string literal inline instead of a tag.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatInlineString(elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.string || \"\");\n}\n/**\n * Insert a block with the given string literal instead of a tag.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatBlockString(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n builder.addLiteral(formatOptions.string || \"\");\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process an inline-level element.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatInline(elem, walk, builder, formatOptions) {\n walk(elem.children, builder);\n}\n/**\n * Process a block-level container.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatBlock$1(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\nfunction $f14a7b0c234065ea$var$renderOpenTag(elem) {\n const attrs = elem.attribs && elem.attribs.length ? \" \" + Object.entries(elem.attribs).map(([k, v])=>v === \"\" ? k : `${k}=${v.replace(/\"/g, \""\")}`).join(\" \") : \"\";\n return `<${elem.name}${attrs}>`;\n}\nfunction $f14a7b0c234065ea$var$renderCloseTag(elem) {\n return `${elem.name}>`;\n}\n/**\n * Render an element as inline HTML tag, walk through it's children.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatInlineTag(elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral($f14a7b0c234065ea$var$renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral($f14a7b0c234065ea$var$renderCloseTag(elem));\n builder.stopNoWrap();\n}\n/**\n * Render an element as HTML block bag, walk through it's children.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatBlockTag(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n builder.startNoWrap();\n builder.addLiteral($f14a7b0c234065ea$var$renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral($f14a7b0c234065ea$var$renderCloseTag(elem));\n builder.stopNoWrap();\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Render an element with all it's children as inline HTML.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatInlineHtml(elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral((0, $7a645f35b51bdf0b$export$b3890eb0ae9dca99)(elem, {\n decodeEntities: builder.options.decodeEntities\n }));\n builder.stopNoWrap();\n}\n/**\n * Render an element with all it's children as HTML block.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatBlockHtml(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n builder.startNoWrap();\n builder.addLiteral((0, $7a645f35b51bdf0b$export$b3890eb0ae9dca99)(elem, {\n decodeEntities: builder.options.decodeEntities\n }));\n builder.stopNoWrap();\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Render inline element wrapped with given strings.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatInlineSurround(elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.prefix || \"\");\n walk(elem.children, builder);\n builder.addLiteral(formatOptions.suffix || \"\");\n}\nvar $f14a7b0c234065ea$var$genericFormatters = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n block: $f14a7b0c234065ea$var$formatBlock$1,\n blockHtml: $f14a7b0c234065ea$var$formatBlockHtml,\n blockString: $f14a7b0c234065ea$var$formatBlockString,\n blockTag: $f14a7b0c234065ea$var$formatBlockTag,\n inline: $f14a7b0c234065ea$var$formatInline,\n inlineHtml: $f14a7b0c234065ea$var$formatInlineHtml,\n inlineString: $f14a7b0c234065ea$var$formatInlineString,\n inlineSurround: $f14a7b0c234065ea$var$formatInlineSurround,\n inlineTag: $f14a7b0c234065ea$var$formatInlineTag,\n skip: $f14a7b0c234065ea$var$formatSkip\n});\nfunction $f14a7b0c234065ea$var$getRow(matrix, j) {\n if (!matrix[j]) matrix[j] = [];\n return matrix[j];\n}\nfunction $f14a7b0c234065ea$var$findFirstVacantIndex(row, x = 0) {\n while(row[x])x++;\n return x;\n}\nfunction $f14a7b0c234065ea$var$transposeInPlace(matrix, maxSize) {\n for(let i = 0; i < maxSize; i++){\n const rowI = $f14a7b0c234065ea$var$getRow(matrix, i);\n for(let j = 0; j < i; j++){\n const rowJ = $f14a7b0c234065ea$var$getRow(matrix, j);\n if (rowI[j] || rowJ[i]) {\n const temp = rowI[j];\n rowI[j] = rowJ[i];\n rowJ[i] = temp;\n }\n }\n }\n}\nfunction $f14a7b0c234065ea$var$putCellIntoLayout(cell, layout, baseRow, baseCol) {\n for(let r = 0; r < cell.rowspan; r++){\n const layoutRow = $f14a7b0c234065ea$var$getRow(layout, baseRow + r);\n for(let c = 0; c < cell.colspan; c++)layoutRow[baseCol + c] = cell;\n }\n}\nfunction $f14a7b0c234065ea$var$getOrInitOffset(offsets, index) {\n if (offsets[index] === undefined) offsets[index] = index === 0 ? 0 : 1 + $f14a7b0c234065ea$var$getOrInitOffset(offsets, index - 1);\n return offsets[index];\n}\nfunction $f14a7b0c234065ea$var$updateOffset(offsets, base, span, value) {\n offsets[base + span] = Math.max($f14a7b0c234065ea$var$getOrInitOffset(offsets, base + span), $f14a7b0c234065ea$var$getOrInitOffset(offsets, base) + value);\n}\n/**\n * Render a table into a string.\n * Cells can contain multiline text and span across multiple rows and columns.\n *\n * Modifies cells to add lines array.\n *\n * @param { TablePrinterCell[][] } tableRows Table to render.\n * @param { number } rowSpacing Number of spaces between columns.\n * @param { number } colSpacing Number of empty lines between rows.\n * @returns { string }\n */ function $f14a7b0c234065ea$var$tableToString(tableRows, rowSpacing, colSpacing) {\n const layout = [];\n let colNumber = 0;\n const rowNumber = tableRows.length;\n const rowOffsets = [\n 0\n ];\n // Fill the layout table and row offsets row-by-row.\n for(let j = 0; j < rowNumber; j++){\n const layoutRow = $f14a7b0c234065ea$var$getRow(layout, j);\n const cells = tableRows[j];\n let x = 0;\n for(let i = 0; i < cells.length; i++){\n const cell = cells[i];\n x = $f14a7b0c234065ea$var$findFirstVacantIndex(layoutRow, x);\n $f14a7b0c234065ea$var$putCellIntoLayout(cell, layout, j, x);\n x += cell.colspan;\n cell.lines = cell.text.split(\"\\n\");\n const cellHeight = cell.lines.length;\n $f14a7b0c234065ea$var$updateOffset(rowOffsets, j, cell.rowspan, cellHeight + rowSpacing);\n }\n colNumber = layoutRow.length > colNumber ? layoutRow.length : colNumber;\n }\n $f14a7b0c234065ea$var$transposeInPlace(layout, rowNumber > colNumber ? rowNumber : colNumber);\n const outputLines = [];\n const colOffsets = [\n 0\n ];\n // Fill column offsets and output lines column-by-column.\n for(let x = 0; x < colNumber; x++){\n let y = 0;\n let cell;\n const rowsInThisColumn = Math.min(rowNumber, layout[x].length);\n while(y < rowsInThisColumn){\n cell = layout[x][y];\n if (cell) {\n if (!cell.rendered) {\n let cellWidth = 0;\n for(let j = 0; j < cell.lines.length; j++){\n const line = cell.lines[j];\n const lineOffset = rowOffsets[y] + j;\n outputLines[lineOffset] = (outputLines[lineOffset] || \"\").padEnd(colOffsets[x]) + line;\n cellWidth = line.length > cellWidth ? line.length : cellWidth;\n }\n $f14a7b0c234065ea$var$updateOffset(colOffsets, x, cell.colspan, cellWidth + colSpacing);\n cell.rendered = true;\n }\n y += cell.rowspan;\n } else {\n const lineOffset = rowOffsets[y];\n outputLines[lineOffset] = outputLines[lineOffset] || \"\";\n y++;\n }\n }\n }\n return outputLines.join(\"\\n\");\n}\n/**\n * Process a line-break.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatLineBreak(elem, walk, builder, formatOptions) {\n builder.addLineBreak();\n}\n/**\n * Process a `wbr` tag (word break opportunity).\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatWbr(elem, walk, builder, formatOptions) {\n builder.addWordBreakOpportunity();\n}\n/**\n * Process a horizontal line.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatHorizontalLine(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n builder.addInline(\"-\".repeat(formatOptions.length || builder.options.wordwrap || 40));\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process a paragraph.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatParagraph(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process a preformatted content.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatPre(elem, walk, builder, formatOptions) {\n builder.openBlock({\n isPre: true,\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process a heading.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatHeading(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n if (formatOptions.uppercase !== false) {\n builder.pushWordTransform((str)=>str.toUpperCase());\n walk(elem.children, builder);\n builder.popWordTransform();\n } else walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process a blockquote.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatBlockquote(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2,\n reservedLineLength: 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2,\n blockTransform: (str)=>(formatOptions.trimEmptyLines !== false ? $f14a7b0c234065ea$var$trimCharacter(str, \"\\n\") : str).split(\"\\n\").map((line)=>\"> \" + line).join(\"\\n\")\n });\n}\nfunction $f14a7b0c234065ea$var$withBrackets(str, brackets) {\n if (!brackets) return str;\n const lbr = typeof brackets[0] === \"string\" ? brackets[0] : \"[\";\n const rbr = typeof brackets[1] === \"string\" ? brackets[1] : \"]\";\n return lbr + str + rbr;\n}\nfunction $f14a7b0c234065ea$var$pathRewrite(path, rewriter, baseUrl, metadata, elem) {\n const modifiedPath = typeof rewriter === \"function\" ? rewriter(path, metadata, elem) : path;\n return modifiedPath[0] === \"/\" && baseUrl ? $f14a7b0c234065ea$var$trimCharacterEnd(baseUrl, \"/\") + modifiedPath : modifiedPath;\n}\n/**\n * Process an image.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatImage(elem, walk, builder, formatOptions) {\n const attribs = elem.attribs || {};\n const alt = attribs.alt ? attribs.alt : \"\";\n const src = !attribs.src ? \"\" : $f14a7b0c234065ea$var$pathRewrite(attribs.src, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n const text = !src ? alt : !alt ? $f14a7b0c234065ea$var$withBrackets(src, formatOptions.linkBrackets) : alt + \" \" + $f14a7b0c234065ea$var$withBrackets(src, formatOptions.linkBrackets);\n builder.addInline(text, {\n noWordTransform: true\n });\n}\n// a img baseUrl\n// a img pathRewrite\n// a img linkBrackets\n// a ignoreHref: false\n// ignoreText ?\n// a noAnchorUrl: true\n// can be replaced with selector\n// a hideLinkHrefIfSameAsText: false\n// how to compare, what to show (text, href, normalized) ?\n// a mailto protocol removed without options\n// a protocols: mailto, tel, ...\n// can be matched with selector?\n// anchors, protocols - only if no pathRewrite fn is provided\n// normalize-url ?\n// a\n// a[href^=\"#\"] - format:skip by default\n// a[href^=\"mailto:\"] - ?\n/**\n * Process an anchor.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatAnchor(elem, walk, builder, formatOptions) {\n function getHref() {\n if (formatOptions.ignoreHref) return \"\";\n if (!elem.attribs || !elem.attribs.href) return \"\";\n let href = elem.attribs.href.replace(/^mailto:/, \"\");\n if (formatOptions.noAnchorUrl && href[0] === \"#\") return \"\";\n href = $f14a7b0c234065ea$var$pathRewrite(href, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n return href;\n }\n const href = getHref();\n if (!href) walk(elem.children, builder);\n else {\n let text = \"\";\n builder.pushWordTransform((str)=>{\n if (str) text += str;\n return str;\n });\n walk(elem.children, builder);\n builder.popWordTransform();\n const hideSameLink = formatOptions.hideLinkHrefIfSameAsText && href === text;\n if (!hideSameLink) builder.addInline(!text ? href : \" \" + $f14a7b0c234065ea$var$withBrackets(href, formatOptions.linkBrackets), {\n noWordTransform: true\n });\n }\n}\n/**\n * @param { DomNode } elem List items with their prefixes.\n * @param { RecursiveCallback } walk Recursive callback to process child nodes.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @param { FormatOptions } formatOptions Options specific to a formatter.\n * @param { () => string } nextPrefixCallback Function that returns increasing index each time it is called.\n */ function $f14a7b0c234065ea$var$formatList(elem, walk, builder, formatOptions, nextPrefixCallback) {\n const isNestedList = $f14a7b0c234065ea$var$get(elem, [\n \"parent\",\n \"name\"\n ]) === \"li\";\n // With Roman numbers, index length is not as straightforward as with Arabic numbers or letters,\n // so the dumb length comparison is the most robust way to get the correct value.\n let maxPrefixLength = 0;\n const listItems = (elem.children || [])// it might be more accurate to check only for html spaces here, but no significant benefit\n .filter((child)=>child.type !== \"text\" || !/^\\s*$/.test(child.data)).map(function(child) {\n if (child.name !== \"li\") return {\n node: child,\n prefix: \"\"\n };\n const prefix = isNestedList ? nextPrefixCallback().trimStart() : nextPrefixCallback();\n if (prefix.length > maxPrefixLength) maxPrefixLength = prefix.length;\n return {\n node: child,\n prefix: prefix\n };\n });\n if (!listItems.length) return;\n builder.openList({\n interRowLineBreaks: 1,\n leadingLineBreaks: isNestedList ? 1 : formatOptions.leadingLineBreaks || 2,\n maxPrefixLength: maxPrefixLength,\n prefixAlign: \"left\"\n });\n for (const { node: node, prefix: prefix } of listItems){\n builder.openListItem({\n prefix: prefix\n });\n walk([\n node\n ], builder);\n builder.closeListItem();\n }\n builder.closeList({\n trailingLineBreaks: isNestedList ? 1 : formatOptions.trailingLineBreaks || 2\n });\n}\n/**\n * Process an unordered list.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatUnorderedList(elem, walk, builder, formatOptions) {\n const prefix = formatOptions.itemPrefix || \" * \";\n return $f14a7b0c234065ea$var$formatList(elem, walk, builder, formatOptions, ()=>prefix);\n}\n/**\n * Process an ordered list.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatOrderedList(elem, walk, builder, formatOptions) {\n let nextIndex = Number(elem.attribs.start || \"1\");\n const indexFunction = $f14a7b0c234065ea$var$getOrderedListIndexFunction(elem.attribs.type);\n const nextPrefixCallback = ()=>\" \" + indexFunction(nextIndex++) + \". \";\n return $f14a7b0c234065ea$var$formatList(elem, walk, builder, formatOptions, nextPrefixCallback);\n}\n/**\n * Return a function that can be used to generate index markers of a specified format.\n *\n * @param { string } [olType='1'] Marker type.\n * @returns { (i: number) => string }\n */ function $f14a7b0c234065ea$var$getOrderedListIndexFunction(olType = \"1\") {\n switch(olType){\n case \"a\":\n return (i)=>$f14a7b0c234065ea$var$numberToLetterSequence(i, \"a\");\n case \"A\":\n return (i)=>$f14a7b0c234065ea$var$numberToLetterSequence(i, \"A\");\n case \"i\":\n return (i)=>$f14a7b0c234065ea$var$numberToRoman(i).toLowerCase();\n case \"I\":\n return (i)=>$f14a7b0c234065ea$var$numberToRoman(i);\n case \"1\":\n default:\n return (i)=>i.toString();\n }\n}\n/**\n * Given a list of class and ID selectors (prefixed with '.' and '#'),\n * return them as separate lists of names without prefixes.\n *\n * @param { string[] } selectors Class and ID selectors (`[\".class\", \"#id\"]` etc).\n * @returns { { classes: string[], ids: string[] } }\n */ function $f14a7b0c234065ea$var$splitClassesAndIds(selectors) {\n const classes = [];\n const ids = [];\n for (const selector of selectors){\n if (selector.startsWith(\".\")) classes.push(selector.substring(1));\n else if (selector.startsWith(\"#\")) ids.push(selector.substring(1));\n }\n return {\n classes: classes,\n ids: ids\n };\n}\nfunction $f14a7b0c234065ea$var$isDataTable(attr, tables) {\n if (tables === true) return true;\n if (!attr) return false;\n const { classes: classes, ids: ids } = $f14a7b0c234065ea$var$splitClassesAndIds(tables);\n const attrClasses = (attr[\"class\"] || \"\").split(\" \");\n const attrIds = (attr[\"id\"] || \"\").split(\" \");\n return attrClasses.some((x)=>classes.includes(x)) || attrIds.some((x)=>ids.includes(x));\n}\n/**\n * Process a table (either as a container or as a data table, depending on options).\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatTable(elem, walk, builder, formatOptions) {\n return $f14a7b0c234065ea$var$isDataTable(elem.attribs, builder.options.tables) ? $f14a7b0c234065ea$var$formatDataTable(elem, walk, builder, formatOptions) : $f14a7b0c234065ea$var$formatBlock(elem, walk, builder, formatOptions);\n}\nfunction $f14a7b0c234065ea$var$formatBlock(elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks\n });\n}\n/**\n * Process a data table.\n *\n * @type { FormatCallback }\n */ function $f14a7b0c234065ea$var$formatDataTable(elem, walk, builder, formatOptions) {\n builder.openTable();\n elem.children.forEach(walkTable);\n builder.closeTable({\n tableToString: (rows)=>$f14a7b0c234065ea$var$tableToString(rows, formatOptions.rowSpacing ?? 0, formatOptions.colSpacing ?? 3),\n leadingLineBreaks: formatOptions.leadingLineBreaks,\n trailingLineBreaks: formatOptions.trailingLineBreaks\n });\n function formatCell(cellNode) {\n const colspan = +$f14a7b0c234065ea$var$get(cellNode, [\n \"attribs\",\n \"colspan\"\n ]) || 1;\n const rowspan = +$f14a7b0c234065ea$var$get(cellNode, [\n \"attribs\",\n \"rowspan\"\n ]) || 1;\n builder.openTableCell({\n maxColumnWidth: formatOptions.maxColumnWidth\n });\n walk(cellNode.children, builder);\n builder.closeTableCell({\n colspan: colspan,\n rowspan: rowspan\n });\n }\n function walkTable(elem) {\n if (elem.type !== \"tag\") return;\n const formatHeaderCell = formatOptions.uppercaseHeaderCells !== false ? (cellNode)=>{\n builder.pushWordTransform((str)=>str.toUpperCase());\n formatCell(cellNode);\n builder.popWordTransform();\n } : formatCell;\n switch(elem.name){\n case \"thead\":\n case \"tbody\":\n case \"tfoot\":\n case \"center\":\n elem.children.forEach(walkTable);\n return;\n case \"tr\":\n builder.openTableRow();\n for (const childOfTr of elem.children){\n if (childOfTr.type !== \"tag\") continue;\n switch(childOfTr.name){\n case \"th\":\n formatHeaderCell(childOfTr);\n break;\n case \"td\":\n formatCell(childOfTr);\n break;\n }\n }\n builder.closeTableRow();\n break;\n }\n }\n}\nvar $f14a7b0c234065ea$var$textFormatters = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n anchor: $f14a7b0c234065ea$var$formatAnchor,\n blockquote: $f14a7b0c234065ea$var$formatBlockquote,\n dataTable: $f14a7b0c234065ea$var$formatDataTable,\n heading: $f14a7b0c234065ea$var$formatHeading,\n horizontalLine: $f14a7b0c234065ea$var$formatHorizontalLine,\n image: $f14a7b0c234065ea$var$formatImage,\n lineBreak: $f14a7b0c234065ea$var$formatLineBreak,\n orderedList: $f14a7b0c234065ea$var$formatOrderedList,\n paragraph: $f14a7b0c234065ea$var$formatParagraph,\n pre: $f14a7b0c234065ea$var$formatPre,\n table: $f14a7b0c234065ea$var$formatTable,\n unorderedList: $f14a7b0c234065ea$var$formatUnorderedList,\n wbr: $f14a7b0c234065ea$var$formatWbr\n});\n/**\n * Default options.\n *\n * @constant\n * @type { Options }\n * @default\n * @private\n */ const $f14a7b0c234065ea$var$DEFAULT_OPTIONS = {\n baseElements: {\n selectors: [\n \"body\"\n ],\n orderBy: \"selectors\",\n returnDomByDefault: true\n },\n decodeEntities: true,\n encodeCharacters: {},\n formatters: {},\n limits: {\n ellipsis: \"...\",\n maxBaseElements: undefined,\n maxChildNodes: undefined,\n maxDepth: undefined,\n maxInputLength: 16777216 // 16_777_216\n },\n longWordSplit: {\n forceWrapOnLimit: false,\n wrapCharacters: []\n },\n preserveNewlines: false,\n selectors: [\n {\n selector: \"*\",\n format: \"inline\"\n },\n {\n selector: \"a\",\n format: \"anchor\",\n options: {\n baseUrl: null,\n hideLinkHrefIfSameAsText: false,\n ignoreHref: false,\n linkBrackets: [\n \"[\",\n \"]\"\n ],\n noAnchorUrl: true\n }\n },\n {\n selector: \"article\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"aside\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"blockquote\",\n format: \"blockquote\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2,\n trimEmptyLines: true\n }\n },\n {\n selector: \"br\",\n format: \"lineBreak\"\n },\n {\n selector: \"div\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"footer\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"form\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"h1\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 3,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"h2\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 3,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"h3\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 3,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"h4\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"h5\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"h6\",\n format: \"heading\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2,\n uppercase: true\n }\n },\n {\n selector: \"header\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"hr\",\n format: \"horizontalLine\",\n options: {\n leadingLineBreaks: 2,\n length: undefined,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"img\",\n format: \"image\",\n options: {\n baseUrl: null,\n linkBrackets: [\n \"[\",\n \"]\"\n ]\n }\n },\n {\n selector: \"main\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"nav\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"ol\",\n format: \"orderedList\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"p\",\n format: \"paragraph\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"pre\",\n format: \"pre\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"section\",\n format: \"block\",\n options: {\n leadingLineBreaks: 1,\n trailingLineBreaks: 1\n }\n },\n {\n selector: \"table\",\n format: \"table\",\n options: {\n colSpacing: 3,\n leadingLineBreaks: 2,\n maxColumnWidth: 60,\n rowSpacing: 0,\n trailingLineBreaks: 2,\n uppercaseHeaderCells: true\n }\n },\n {\n selector: \"ul\",\n format: \"unorderedList\",\n options: {\n itemPrefix: \" * \",\n leadingLineBreaks: 2,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"wbr\",\n format: \"wbr\"\n }\n ],\n tables: [],\n whitespaceCharacters: \" \t\\r\\n\\f\\u200B\",\n wordwrap: 80\n};\nconst $f14a7b0c234065ea$var$concatMerge = (acc, src, options)=>[\n ...acc,\n ...src\n ];\nconst $f14a7b0c234065ea$var$overwriteMerge = (acc, src, options)=>[\n ...src\n ];\nconst $f14a7b0c234065ea$var$selectorsMerge = (acc, src, options)=>acc.some((s)=>typeof s === \"object\") ? $f14a7b0c234065ea$var$concatMerge(acc, src) // selectors\n : $f14a7b0c234065ea$var$overwriteMerge(acc, src) // baseElements.selectors\n;\n/**\n * Preprocess options, compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options.\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */ function $f14a7b0c234065ea$export$ef7acd7185315e22(options = {}) {\n options = (0, (/*@__PURE__*/$parcel$interopDefault($35d8a34091988186$exports)))($f14a7b0c234065ea$var$DEFAULT_OPTIONS, options, {\n arrayMerge: $f14a7b0c234065ea$var$overwriteMerge,\n customMerge: (key)=>key === \"selectors\" ? $f14a7b0c234065ea$var$selectorsMerge : undefined\n });\n options.formatters = Object.assign({}, $f14a7b0c234065ea$var$genericFormatters, $f14a7b0c234065ea$var$textFormatters, options.formatters);\n options.selectors = $f14a7b0c234065ea$var$mergeDuplicatesPreferLast(options.selectors, (s)=>s.selector);\n $f14a7b0c234065ea$var$handleDeprecatedOptions(options);\n return $f14a7b0c234065ea$var$compile$1(options);\n}\n/**\n * Convert given HTML content to plain text string.\n *\n * @param { string } html HTML content to convert.\n * @param { Options } [options = {}] HtmlToText options.\n * @param { any } [metadata] Optional metadata for HTML document, for use in formatters.\n * @returns { string } Plain text string.\n * @static\n *\n * @example\n * const { convert } = require('html-to-text');\n * const text = convert('Hello World ', {\n * wordwrap: 130\n * });\n * console.log(text); // HELLO WORLD\n */ function $f14a7b0c234065ea$export$9c68d69a4c5bbcf9(html, options = {}, metadata) {\n return $f14a7b0c234065ea$export$ef7acd7185315e22(options)(html, metadata);\n}\n/**\n * Map previously existing and now deprecated options to the new options layout.\n * This is a subject for cleanup in major releases.\n *\n * @param { Options } options HtmlToText options.\n */ function $f14a7b0c234065ea$var$handleDeprecatedOptions(options) {\n if (options.tags) {\n const tagDefinitions = Object.entries(options.tags).map(([selector, definition])=>({\n ...definition,\n selector: selector || \"*\"\n }));\n options.selectors.push(...tagDefinitions);\n options.selectors = $f14a7b0c234065ea$var$mergeDuplicatesPreferLast(options.selectors, (s)=>s.selector);\n }\n function set(obj, path, value) {\n const valueKey = path.pop();\n for (const key of path){\n let nested = obj[key];\n if (!nested) {\n nested = {};\n obj[key] = nested;\n }\n obj = nested;\n }\n obj[valueKey] = value;\n }\n if (options[\"baseElement\"]) {\n const baseElement = options[\"baseElement\"];\n set(options, [\n \"baseElements\",\n \"selectors\"\n ], Array.isArray(baseElement) ? baseElement : [\n baseElement\n ]);\n }\n if (options[\"returnDomByDefault\"] !== undefined) set(options, [\n \"baseElements\",\n \"returnDomByDefault\"\n ], options[\"returnDomByDefault\"]);\n for (const definition of options.selectors)if (definition.format === \"anchor\" && $f14a7b0c234065ea$var$get(definition, [\n \"options\",\n \"noLinkBrackets\"\n ])) set(definition, [\n \"options\",\n \"linkBrackets\"\n ], false);\n}\n\n\n\nvar $gx5Hu = parcelRequire(\"gx5Hu\");\nfunction $03f4340efc174132$var$sanitiseRawContent(htmlPollutedRawContent) {\n let sanitisedRawContent = (0, $f14a7b0c234065ea$export$9c68d69a4c5bbcf9)(htmlPollutedRawContent, {\n wordwrap: false,\n selectors: [\n {\n selector: \"*\",\n options: {\n leadingLineBreaks: 2,\n trailingLineBreaks: 2\n }\n },\n {\n selector: \"img\",\n format: \"skip\"\n },\n {\n selector: \"hr\",\n format: \"skip\"\n },\n {\n selector: \"blockquote\",\n format: \"block\"\n },\n {\n selector: \"a\",\n options: {\n ignoreHref: true\n }\n }\n ]\n });\n // sanitisedRawContent = sanitisedRawContent.replace(/\\s/g, ' ');\n // sanitisedRawContent = sanitisedRawContent.replace(/\\s{2,}/g, '\\n');\n sanitisedRawContent = sanitisedRawContent.replace(/\\n{2,}/g, \"\\n\");\n return sanitisedRawContent;\n}\nclass $03f4340efc174132$export$2e2bcd8739ae039 {\n static{\n this.index = [];\n }\n static get targets() {\n const targets = [];\n this.index.forEach((entry)=>targets.push({\n path: entry.path,\n title: (0, (/*@__PURE__*/$parcel$interopDefault($gx5Hu))).prepare(entry.title),\n content: (0, (/*@__PURE__*/$parcel$interopDefault($gx5Hu))).prepare(entry.content.replace(\"\", \"\").replace(\" \", \"\"))\n }));\n this._targets = targets;\n return this._targets;\n }\n static addEntry(path, title, pageData) {\n this.index.push({\n path: path,\n title: title,\n content: $03f4340efc174132$var$sanitiseRawContent(pageData.htmlPollutedRawContent ?? (()=>{\n throw new Error(`htmlPollutedRawContent not found for ${path}!`);\n })())\n });\n }\n}\n\n\n\nvar $df1N6 = parcelRequire(\"df1N6\");\n\nvar $kyWZn = parcelRequire(\"kyWZn\");\n(async ()=>{\n const searchbarElement = document.getElementById(\"searchbar\") ?? (()=>{\n throw new Error(\"Searchbar not found\");\n })();\n const headerSearchFieldElement = document.getElementById(\"header-search-field\") ?? (()=>{\n throw new Error(\"Search field not found\");\n })();\n const mainSearchFieldElement = document.getElementById(\"main-search-field\") ?? (()=>{\n throw new Error(\"Search field not found\");\n })();\n const searchDialogElement = document.getElementById(\"search-dialog\") ?? (()=>{\n throw new Error(\"Search dialog not found\");\n })();\n const searchResultsElement = document.getElementById(\"search-results\") ?? (()=>{\n throw new Error(\"Search results not found\");\n })();\n const searchResultTemplate = (()=>{\n const searchResultTemplateElement = document.getElementById(\"search-result-template\") ?? (()=>{\n throw new Error(\"Search result template not found\");\n })();\n return searchResultTemplateElement.content.cloneNode(true);\n })();\n const searchResultsEndTemplate = (()=>{\n const searchResultsEndTemplateElement = document.getElementById(\"search-results-end-template\") ?? (()=>{\n throw new Error(\"Search results end template not found\");\n })();\n return searchResultsEndTemplateElement.content.cloneNode(true);\n })();\n //\n const BASE_URL = document.head.querySelector(\"meta[base-url]\")?.getAttribute(\"base-url\") ?? \".\";\n (0, $03f4340efc174132$export$2e2bcd8739ae039).index = await (await fetch(`/${BASE_URL}/search-index.json`)).json();\n const searchTargets = (0, $03f4340efc174132$export$2e2bcd8739ae039).targets;\n // console.log({ index: Searchable.index, targets: Searchable.targets });\n /* -------------------------------------------------------------------------- */ headerSearchFieldElement.addEventListener(\"focusin\", ()=>{\n mainSearchFieldElement.focus();\n });\n /* -------------------------------------------------------------------------- */ let oldSearchFieldQuery;\n mainSearchFieldElement.addEventListener(\"keydown\", onSearchFieldKeyDown);\n function onSearchFieldKeyDown() {\n //? the query is inexplicably one character behind if we don't use requestAnimationFrame\n //? + slight throttling\n requestAnimationFrame(updateSearch);\n }\n function updateSearch() {\n headerSearchFieldElement.value = mainSearchFieldElement.value;\n const query = mainSearchFieldElement.value.trim();\n if (query === oldSearchFieldQuery) return;\n oldSearchFieldQuery = query;\n if (query === \"\") searchResultsElement.innerHTML = \"\";\n else redrawSearchResults(query);\n }\n /* -------------------------------------------------------------------------- */ searchbarElement.addEventListener(\"keydown\", (event)=>{\n // allow non-typing keys pass through\n const nonTypingKeys = [\n \"Shift\",\n \"Control\",\n \"Alt\",\n \"Meta\",\n \"Enter\",\n \"Tab\",\n \"CapsLock\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\"\n ];\n if (nonTypingKeys.includes(event.key)) return;\n // allow arrow up down navigation\n if ([\n \"ArrowUp\",\n \"ArrowDown\"\n ].includes(event.key)) {\n event.preventDefault();\n const isDown = event.key === \"ArrowDown\";\n // focus on the next or previous search result\n const searchResults = searchResultsElement.children;\n const focusedElement = document.activeElement;\n const focusedIndex = Array.from(searchResults).indexOf(focusedElement);\n if (focusedIndex === -1 && !isDown) return;\n const nextIndex = Math.min(focusedIndex + (isDown ? 1 : -1), searchResults.length - 1);\n const elementToFocus = searchResults[nextIndex] || mainSearchFieldElement;\n elementToFocus.focus();\n elementToFocus.scrollIntoView({\n block: \"start\",\n behavior: \"instant\"\n });\n return;\n }\n // allow escape to close the search dialog when the search field is empty\n if (event.key === \"Escape\" && mainSearchFieldElement.value === \"\") {\n mainSearchFieldElement.focus();\n mainSearchFieldElement.blur();\n return;\n }\n // regular typing\n mainSearchFieldElement.focus();\n searchResultsElement.scrollTo(0, 0);\n requestAnimationFrame(()=>{\n headerSearchFieldElement.value = mainSearchFieldElement.value;\n updateSearch();\n });\n });\n searchbarElement.addEventListener(\"focusin\", ()=>{\n searchDialogElement.toggleAttribute(\"open\", true);\n });\n searchbarElement.addEventListener(\"focusout\", ()=>{\n searchDialogElement.toggleAttribute(\"open\", false);\n });\n //\n window.addEventListener(\"keydown\", (event)=>{\n if (event.ctrlKey && event.shiftKey && event.key === \"F\") {\n event.preventDefault();\n mainSearchFieldElement.focus();\n }\n });\n //\n async function redrawSearchResults(query) {\n //! PERFORMANCE\n const startTime = performance.now();\n //! -----------\n const [searchResults, usedCache] = await (0, $kyWZn.default).search(query, searchTargets);\n //! PERFORMANCE\n const endTime = performance.now();\n console.log(`Querying for \"${query}\" took`, endTime - startTime, \"ms\", usedCache ? \"(from cache)\" : \"\");\n //! -----------\n console.log(searchResults);\n //\n searchResultsElement.innerHTML = \"\";\n for (const searchResult of searchResults.sort((a, b)=>b.score - a.score)){\n const newSearchResultElement = searchResultTemplate.cloneNode(true);\n //\n const baselessResultPageHref = `/${searchResult.path}${window.location.pathname.endsWith(\".html\") ? \".html\" : \"\"}`;\n const resultPageHref = `/${BASE_URL}${baselessResultPageHref}`;\n newSearchResultElement.querySelector(\"#result-title\").innerHTML = searchResult.highlightedTitleChunks.join(\" \").trim() || searchResult.title;\n newSearchResultElement.querySelector(\"#result-path\").textContent = searchResult.path;\n //\n const contentElement = newSearchResultElement.querySelector(\"#result-content\");\n for (const contentChunk of searchResult.highlightedContentChunks){\n const contentChunkElement = document.createElement(\"a\");\n contentChunkElement.innerHTML = contentChunk;\n //\n const safeText = (0, $df1N6.safeURIEncode)((contentChunkElement.textContent || (()=>{\n throw new Error(\"Empty content chunk\");\n })()).trim());\n const resultTextHref = `${resultPageHref}#:~:text=${safeText}`;\n contentChunkElement.href = resultTextHref;\n if (window.location.href.endsWith(baselessResultPageHref)) // same page search\n contentChunkElement.addEventListener(\"click\", ()=>{\n searchDialogElement.toggleAttribute(\"open\", false);\n const oParent = searchDialogElement.parentNode;\n document.body.appendChild(searchDialogElement);\n window.location.href = resultTextHref;\n requestAnimationFrame(()=>{\n oParent?.appendChild(searchDialogElement);\n });\n });\n //\n contentElement.appendChild(contentChunkElement);\n }\n //\n searchResultsElement.appendChild(newSearchResultElement);\n // I have no idea why this jank is necessary\n searchResultsElement.lastElementChild.href = resultPageHref;\n }\n searchResultsElement.appendChild(searchResultsEndTemplate.cloneNode(true));\n }\n})();\n\n})();\n//# sourceMappingURL=searchbar.js.map\n","\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-html.js.map",null,"\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-xml.js.map",null,"\"use strict\";\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replaceCodePoint = exports.fromCodePoint = void 0;\nvar decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexports.fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nfunction replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nexports.replaceCodePoint = replaceCodePoint;\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nfunction decodeCodePoint(codePoint) {\n return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));\n}\nexports.default = decodeCodePoint;\n//# sourceMappingURL=decode_codepoint.js.map",null,"// https://github.com/farzher/fuzzysort v3.0.2\r\n\r\n// UMD (Universal Module Definition) for fuzzysort\r\n;((root, UMD) => {\r\n if(typeof define === 'function' && define.amd) define([], UMD)\r\n else if(typeof module === 'object' && module.exports) module.exports = UMD()\r\n else root['fuzzysort'] = UMD()\r\n})(this, _ => {\r\n 'use strict'\r\n\r\n var single = (search, target) => {\r\n if(!search || !target) return NULL\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n var searchBitflags = preparedSearch.bitflags\r\n if((searchBitflags & target._bitflags) !== searchBitflags) return NULL\r\n\r\n return algorithm(preparedSearch, target)\r\n }\r\n\r\n var go = (search, targets, options) => {\r\n if(!search) return options?.all ? all(targets, options) : noResults\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n var searchBitflags = preparedSearch.bitflags\r\n var containsSpace = preparedSearch.containsSpace\r\n\r\n var threshold = denormalizeScore( options?.threshold || 0 )\r\n var limit = options?.limit || INFINITY\r\n\r\n var resultsLen = 0; var limitedCount = 0\r\n var targetsLen = targets.length\r\n\r\n function push_result(result) {\r\n if(resultsLen < limit) { q.add(result); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(result._score > q.peek()._score) q.replaceTop(result)\r\n }\r\n }\r\n\r\n // This code is copy/pasted 3 times for performance reasons [options.key, options.keys, no keys]\r\n\r\n // options.key\r\n if(options?.key) {\r\n var key = options.key\r\n for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n var target = getValue(obj, key)\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n result.obj = obj\r\n push_result(result)\r\n }\r\n\r\n // options.keys\r\n } else if(options?.keys) {\r\n var keys = options.keys\r\n var keysLen = keys.length\r\n\r\n outer: for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n\r\n { // early out based on bitflags\r\n var keysBitflags = 0\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n var key = keys[keyI]\r\n var target = getValue(obj, key)\r\n if(!target) { tmpTargets[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n tmpTargets[keyI] = target\r\n\r\n keysBitflags |= target._bitflags\r\n }\r\n\r\n if((searchBitflags & keysBitflags) !== searchBitflags) continue\r\n }\r\n\r\n if(containsSpace) for(let i=0; i -1000) {\r\n if(keysSpacesBestScores[i] > NEGATIVE_INFINITY) {\r\n var tmp = (keysSpacesBestScores[i] + allowPartialMatchScores[i]) / 4/*bonus score for having multiple matches*/\r\n if(tmp > keysSpacesBestScores[i]) keysSpacesBestScores[i] = tmp\r\n }\r\n }\r\n if(allowPartialMatchScores[i] > keysSpacesBestScores[i]) keysSpacesBestScores[i] = allowPartialMatchScores[i]\r\n }\r\n }\r\n\r\n if(containsSpace) {\r\n for(let i=0; i -1000) {\r\n if(score > NEGATIVE_INFINITY) {\r\n var tmp = (score + result._score) / 4/*bonus score for having multiple matches*/\r\n if(tmp > score) score = tmp\r\n }\r\n }\r\n if(result._score > score) score = result._score\r\n }\r\n }\r\n\r\n objResults.obj = obj\r\n objResults._score = score\r\n if(options?.scoreFn) {\r\n score = options.scoreFn(objResults)\r\n if(!score) continue\r\n score = denormalizeScore(score)\r\n objResults._score = score\r\n }\r\n\r\n if(score < threshold) continue\r\n push_result(objResults)\r\n }\r\n\r\n // no keys\r\n } else {\r\n for(var i = 0; i < targetsLen; ++i) { var target = targets[i]\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n push_result(result)\r\n }\r\n }\r\n\r\n if(resultsLen === 0) return noResults\r\n var results = new Array(resultsLen)\r\n for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()\r\n results.total = resultsLen + limitedCount\r\n return results\r\n }\r\n\r\n\r\n // this is written as 1 function instead of 2 for minification. perf seems fine ...\r\n // except when minified. the perf is very slow\r\n var highlight = (result, open='', close=' ') => {\r\n var callback = typeof open === 'function' ? open : undefined\r\n\r\n var target = result.target\r\n var targetLen = target.length\r\n var indexes = result.indexes\r\n var highlighted = ''\r\n var matchI = 0\r\n var indexesI = 0\r\n var opened = false\r\n var parts = []\r\n\r\n for(var i = 0; i < targetLen; ++i) { var char = target[i]\r\n if(indexes[indexesI] === i) {\r\n ++indexesI\r\n if(!opened) { opened = true\r\n if(callback) {\r\n parts.push(highlighted); highlighted = ''\r\n } else {\r\n highlighted += open\r\n }\r\n }\r\n\r\n if(indexesI === indexes.length) {\r\n if(callback) {\r\n highlighted += char\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n parts.push(target.substr(i+1))\r\n } else {\r\n highlighted += char + close + target.substr(i+1)\r\n }\r\n break\r\n }\r\n } else {\r\n if(opened) { opened = false\r\n if(callback) {\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n } else {\r\n highlighted += close\r\n }\r\n }\r\n }\r\n highlighted += char\r\n }\r\n\r\n return callback ? parts : highlighted\r\n }\r\n\r\n\r\n var prepare = (target) => {\r\n if(typeof target === 'number') target = ''+target\r\n else if(typeof target !== 'string') target = ''\r\n var info = prepareLowerInfo(target)\r\n return new_result(target, {_targetLower:info._lower, _targetLowerCodes:info.lowerCodes, _bitflags:info.bitflags})\r\n }\r\n\r\n var cleanup = () => { preparedCache.clear(); preparedSearchCache.clear() }\r\n\r\n\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n\r\n\r\n class Result {\r\n get ['indexes']() { return this._indexes.slice(0, this._indexes.len).sort((a,b)=>a-b) }\r\n set ['indexes'](indexes) { return this._indexes = indexes }\r\n ['highlight'](open, close) { return highlight(this, open, close) }\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n class KeysResult extends Array {\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n var new_result = (target, options) => {\r\n const result = new Result()\r\n result['target'] = target\r\n result['obj'] = options.obj ?? NULL\r\n result._score = options._score ?? NEGATIVE_INFINITY\r\n result._indexes = options._indexes ?? []\r\n result._targetLower = options._targetLower ?? ''\r\n result._targetLowerCodes = options._targetLowerCodes ?? NULL\r\n result._nextBeginningIndexes = options._nextBeginningIndexes ?? NULL\r\n result._bitflags = options._bitflags ?? 0\r\n return result\r\n }\r\n\r\n\r\n var normalizeScore = score => {\r\n if(score === NEGATIVE_INFINITY) return 0\r\n if(score > 1) return score\r\n return Math.E ** ( ((-score + 1)**.04307 - 1) * -2)\r\n }\r\n var denormalizeScore = normalizedScore => {\r\n if(normalizedScore === 0) return NEGATIVE_INFINITY\r\n if(normalizedScore > 1) return normalizedScore\r\n return 1 - Math.pow((Math.log(normalizedScore) / -2 + 1), 1 / 0.04307)\r\n }\r\n\r\n\r\n var prepareSearch = (search) => {\r\n if(typeof search === 'number') search = ''+search\r\n else if(typeof search !== 'string') search = ''\r\n search = search.trim()\r\n var info = prepareLowerInfo(search)\r\n\r\n var spaceSearches = []\r\n if(info.containsSpace) {\r\n var searches = search.split(/\\s+/)\r\n searches = [...new Set(searches)] // distinct\r\n for(var i=0; i {\r\n if(target.length > 999) return prepare(target) // don't cache huge targets\r\n var targetPrepared = preparedCache.get(target)\r\n if(targetPrepared !== undefined) return targetPrepared\r\n targetPrepared = prepare(target)\r\n preparedCache.set(target, targetPrepared)\r\n return targetPrepared\r\n }\r\n var getPreparedSearch = (search) => {\r\n if(search.length > 999) return prepareSearch(search) // don't cache huge searches\r\n var searchPrepared = preparedSearchCache.get(search)\r\n if(searchPrepared !== undefined) return searchPrepared\r\n searchPrepared = prepareSearch(search)\r\n preparedSearchCache.set(search, searchPrepared)\r\n return searchPrepared\r\n }\r\n\r\n\r\n var all = (targets, options) => {\r\n var results = []; results.total = targets.length // this total can be wrong if some targets are skipped\r\n\r\n var limit = options?.limit || INFINITY\r\n\r\n if(options?.key) {\r\n for(var i=0;i= limit) return results\r\n }\r\n } else if(options?.keys) {\r\n for(var i=0;i= 0; --keyI) {\r\n var target = getValue(obj, options.keys[keyI])\r\n if(!target) { objResults[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n target._score = NEGATIVE_INFINITY\r\n target._indexes.len = 0\r\n objResults[keyI] = target\r\n }\r\n objResults.obj = obj\r\n objResults._score = NEGATIVE_INFINITY\r\n results.push(objResults); if(results.length >= limit) return results\r\n }\r\n } else {\r\n for(var i=0;i= limit) return results\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n\r\n var algorithm = (preparedSearch, prepared, allowSpaces=false, allowPartialMatch=false) => {\r\n if(allowSpaces===false && preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared, allowPartialMatch)\r\n\r\n var searchLower = preparedSearch._lower\r\n var searchLowerCodes = preparedSearch.lowerCodes\r\n var searchLowerCode = searchLowerCodes[0]\r\n var targetLowerCodes = prepared._targetLowerCodes\r\n var searchLen = searchLowerCodes.length\r\n var targetLen = targetLowerCodes.length\r\n var searchI = 0 // where we at\r\n var targetI = 0 // where you at\r\n var matchesSimpleLen = 0\r\n\r\n // very basic fuzzy match; to remove non-matching targets ASAP!\r\n // walk through target. find sequential matches.\r\n // if all chars aren't found then exit\r\n for(;;) {\r\n var isMatch = searchLowerCode === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesSimple[matchesSimpleLen++] = targetI\r\n ++searchI; if(searchI === searchLen) break\r\n searchLowerCode = searchLowerCodes[searchI]\r\n }\r\n ++targetI; if(targetI >= targetLen) return NULL // Failed to find searchI\r\n }\r\n\r\n var searchI = 0\r\n var successStrict = false\r\n var matchesStrictLen = 0\r\n\r\n var nextBeginningIndexes = prepared._nextBeginningIndexes\r\n if(nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target)\r\n targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]\r\n\r\n // Our target string successfully matched all characters in sequence!\r\n // Let's try a more advanced and strict test to improve the score\r\n // only count it as a match if it's consecutive or a beginning character!\r\n var backtrackCount = 0\r\n if(targetI !== targetLen) for(;;) {\r\n if(targetI >= targetLen) {\r\n // We failed to find a good spot for this search char, go back to the previous search char and force it forward\r\n if(searchI <= 0) break // We failed to push chars forward for a better match\r\n\r\n ++backtrackCount; if(backtrackCount > 200) break // exponential backtracking is taking too long, just give up and return a bad match\r\n\r\n --searchI\r\n var lastMatch = matchesStrict[--matchesStrictLen]\r\n targetI = nextBeginningIndexes[lastMatch]\r\n\r\n } else {\r\n var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesStrict[matchesStrictLen++] = targetI\r\n ++searchI; if(searchI === searchLen) { successStrict = true; break }\r\n ++targetI\r\n } else {\r\n targetI = nextBeginningIndexes[targetI]\r\n }\r\n }\r\n }\r\n\r\n // check if it's a substring match\r\n var substringIndex = searchLen <= 1 ? -1 : prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow\r\n var isSubstring = !!~substringIndex\r\n var isSubstringBeginning = !isSubstring ? false : substringIndex===0 || prepared._nextBeginningIndexes[substringIndex-1] === substringIndex\r\n\r\n // if it's a substring match but not at a beginning index, let's try to find a substring starting at a beginning index for a better score\r\n if(isSubstring && !isSubstringBeginning) {\r\n for(var i=0; i {\r\n var score = 0\r\n\r\n var extraMatchGroupCount = 0\r\n for(var i = 1; i < searchLen; ++i) {\r\n if(matches[i] - matches[i-1] !== 1) {score -= matches[i]; ++extraMatchGroupCount}\r\n }\r\n var unmatchedDistance = matches[searchLen-1] - matches[0] - (searchLen-1)\r\n\r\n score -= (12+unmatchedDistance) * extraMatchGroupCount // penality for more groups\r\n\r\n if(matches[0] !== 0) score -= matches[0]*matches[0]*.2 // penality for not starting near the beginning\r\n\r\n if(!successStrict) {\r\n score *= 1000\r\n } else {\r\n // successStrict on a target with too many beginning indexes loses points for being a bad target\r\n var uniqueBeginningIndexes = 1\r\n for(var i = nextBeginningIndexes[0]; i < targetLen; i=nextBeginningIndexes[i]) ++uniqueBeginningIndexes\r\n\r\n if(uniqueBeginningIndexes > 24) score *= (uniqueBeginningIndexes-24)*10 // quite arbitrary numbers here ...\r\n }\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n if(isSubstring) score /= 1+searchLen*searchLen*1 // bonus for being a full substring\r\n if(isSubstringBeginning) score /= 1+searchLen*searchLen*1 // bonus for substring starting on a beginningIndex\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n return score\r\n }\r\n\r\n if(!successStrict) {\r\n if(isSubstring) for(var i=0; i {\r\n var seen_indexes = new Set()\r\n var score = 0\r\n var result = NULL\r\n\r\n var first_seen_index_last_search = 0\r\n var searches = preparedSearch.spaceSearches\r\n var searchesLen = searches.length\r\n var changeslen = 0\r\n\r\n // Return _nextBeginningIndexes back to its normal state\r\n var resetNextBeginningIndexes = () => {\r\n for(let i=changeslen-1; i>=0; i--) target._nextBeginningIndexes[nextBeginningIndexesChanges[i*2 + 0]] = nextBeginningIndexesChanges[i*2 + 1]\r\n }\r\n\r\n var hasAtLeast1Match = false\r\n for(var i=0; i=0; i--) {\r\n if(toReplace !== target._nextBeginningIndexes[i]) break\r\n target._nextBeginningIndexes[i] = newBeginningIndex\r\n nextBeginningIndexesChanges[changeslen*2 + 0] = i\r\n nextBeginningIndexesChanges[changeslen*2 + 1] = toReplace\r\n changeslen++\r\n }\r\n }\r\n }\r\n\r\n score += result._score / searchesLen\r\n allowPartialMatchScores[i] = result._score / searchesLen\r\n\r\n // dock points based on order otherwise \"c man\" returns Manifest.cpp instead of CheatManager.h\r\n if(result._indexes[0] < first_seen_index_last_search) {\r\n score -= (first_seen_index_last_search - result._indexes[0]) * 2\r\n }\r\n first_seen_index_last_search = result._indexes[0]\r\n\r\n for(var j=0; j score) {\r\n if(allowPartialMatch) {\r\n for(var i=0; i {\r\n var strLen = str.length\r\n var lower = str.toLowerCase()\r\n var lowerCodes = [] // new Array(strLen) sparse array is too slow\r\n var bitflags = 0\r\n var containsSpace = false // space isn't stored in bitflags because of how searching with a space works\r\n\r\n for(var i = 0; i < strLen; ++i) {\r\n var lowerCode = lowerCodes[i] = lower.charCodeAt(i)\r\n\r\n if(lowerCode === 32) {\r\n containsSpace = true\r\n continue // it's important that we don't set any bitflags for space\r\n }\r\n\r\n var bit = lowerCode>=97&&lowerCode<=122 ? lowerCode-97 // alphabet\r\n : lowerCode>=48&&lowerCode<=57 ? 26 // numbers\r\n // 3 bits available\r\n : lowerCode<=127 ? 30 // other ascii\r\n : 31 // other utf8\r\n bitflags |= 1< {\r\n var targetLen = target.length\r\n var beginningIndexes = []; var beginningIndexesLen = 0\r\n var wasUpper = false\r\n var wasAlphanum = false\r\n for(var i = 0; i < targetLen; ++i) {\r\n var targetCode = target.charCodeAt(i)\r\n var isUpper = targetCode>=65&&targetCode<=90\r\n var isAlphanum = isUpper || targetCode>=97&&targetCode<=122 || targetCode>=48&&targetCode<=57\r\n var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum\r\n wasUpper = isUpper\r\n wasAlphanum = isAlphanum\r\n if(isBeginning) beginningIndexes[beginningIndexesLen++] = i\r\n }\r\n return beginningIndexes\r\n }\r\n var prepareNextBeginningIndexes = (target) => {\r\n var targetLen = target.length\r\n var beginningIndexes = prepareBeginningIndexes(target)\r\n var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow\r\n var lastIsBeginning = beginningIndexes[0]\r\n var lastIsBeginningI = 0\r\n for(var i = 0; i < targetLen; ++i) {\r\n if(lastIsBeginning > i) {\r\n nextBeginningIndexes[i] = lastIsBeginning\r\n } else {\r\n lastIsBeginning = beginningIndexes[++lastIsBeginningI]\r\n nextBeginningIndexes[i] = lastIsBeginning===undefined ? targetLen : lastIsBeginning\r\n }\r\n }\r\n return nextBeginningIndexes\r\n }\r\n\r\n var preparedCache = new Map()\r\n var preparedSearchCache = new Map()\r\n\r\n // the theory behind these being globals is to reduce garbage collection by not making new arrays\r\n var matchesSimple = []; var matchesStrict = []\r\n var nextBeginningIndexesChanges = [] // allows straw berry to match strawberry well, by modifying the end of a substring to be considered a beginning index for the rest of the search\r\n var keysSpacesBestScores = []; var allowPartialMatchScores = []\r\n var tmpTargets = []; var tmpResults = []\r\n\r\n // prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]\r\n // prop = 'key1.key2' 10ms\r\n // prop = ['key1', 'key2'] 27ms\r\n // prop = obj => obj.tags.join() ??ms\r\n var getValue = (obj, prop) => {\r\n var tmp = obj[prop]; if(tmp !== undefined) return tmp\r\n if(typeof prop === 'function') return prop(obj) // this should run first. but that makes string props slower\r\n var segs = prop\r\n if(!Array.isArray(prop)) segs = prop.split('.')\r\n var len = segs.length\r\n var i = -1\r\n while (obj && (++i < len)) obj = obj[segs[i]]\r\n return obj\r\n }\r\n\r\n var isPrepared = (x) => { return typeof x === 'object' && typeof x._bitflags === 'number' }\r\n var INFINITY = Infinity; var NEGATIVE_INFINITY = -INFINITY\r\n var noResults = []; noResults.total = 0\r\n var NULL = null\r\n\r\n var noTarget = prepare('')\r\n\r\n // Hacked version of https://github.com/lemire/FastPriorityQueue.js\r\n var fastpriorityqueue=r=>{var e=[],o=0,a={},v=r=>{for(var a=0,v=e[a],c=1;c>1]=e[a],c=1+(a<<1)}for(var f=a-1>>1;a>0&&v._score>1)e[a]=e[f];e[a]=v};return a.add=(r=>{var a=o;e[o++]=r;for(var v=a-1>>1;a>0&&r._score>1)e[a]=e[v];e[a]=r}),a.poll=(r=>{if(0!==o){var a=e[0];return e[0]=e[--o],v(),a}}),a.peek=(r=>{if(0!==o)return e[0]}),a.replaceTop=(r=>{e[0]=r,v()}),a}\r\n var q = fastpriorityqueue() // reuse this\r\n\r\n // fuzzysort is written this way for minification. all names are mangeled unless quoted\r\n return {'single':single, 'go':go, 'prepare':prepare, 'cleanup':cleanup}\r\n}) // UMD\r\n","window.setTimeout(() => {\n document.body.classList.add('post-buffered');\n}, 100);\n\nwindow.addEventListener('DOMContentLoaded', stripUrlTextFragment);\nfunction stripUrlTextFragment() {\n const rawURL = performance.getEntriesByType(\"navigation\")[0].name;\n if (rawURL.includes('#:~:text=')) {\n window.history.replaceState(null, '', rawURL.split('#')[0]);\n }\n}\n\nfunction safeURIEncode(string: string): string {\n return encodeURIComponent(string)\n .replace(/[-]/g, '%2D')\n .replace(/[.]/g, '%2E')\n .replace(/[_]/g, '%5F')\n .replace(/[~]/g, '%7E')\n .replace(/[*]/g, '%2A')\n .replace(/['']/g, '%27')\n .replace(/[(]/g, '%28')\n .replace(/[)]/g, '%29')\n .replace(/[,]/g, '%2C');\n}\n\nfunction convertToPixels(element: Element | HTMLElement, value: string): number {\n const tempElement = document.createElement('div');\n tempElement.style.position = 'absolute';\n tempElement.style.visibility = 'hidden';\n tempElement.style.height = value;\n element.appendChild(tempElement);\n const pixels = window.getComputedStyle(tempElement).height;\n element.removeChild(tempElement);\n return parseFloat(pixels);\n}\n\nexport { convertToPixels, safeURIEncode };","import fuzzysort from 'fuzzysort';\nimport { SearchTarget } from '../lib/types/Searchable';\n\nconst SEARCH_RESULTS_HIGHLIGHT_CLASS = 'highlight';\n\ntype CompiledSearchResult = {\n path: string;\n score: number;\n title: string;\n highlightedTitleChunks: string[];\n highlightedContentChunks: string[];\n};\n\nconst searchResultsCache: Map = new Map();\nasync function search(query: string, searchTargets: SearchTarget[]): Promise<[CompiledSearchResult[], boolean]> {\n const cacheResult = searchResultsCache.get(query);\n return [\n cacheResult\n ?? await (async () => {\n const compiledResults: CompiledSearchResult[] = await compileSearchResults(query, searchTargets);\n searchResultsCache.set(query, compiledResults);\n return compiledResults;\n })(),\n cacheResult !== undefined\n ];\n //\n async function compileSearchResults(query: string, searchTargets: SearchTarget[]): Promise {\n const compiledResults: CompiledSearchResult[] = [];\n\n //! PERFORMANCE\n const fuzzysortStartTime = performance.now();\n //! -----------\n const results = fuzzysort.go(query, searchTargets, {\n keys: ['title', 'content'],\n all: true,\n });\n //! PERFORMANCE\n const fuzzysortEndTime = performance.now();\n //! -----------\n\n //! PERFORMANCE\n const compilationStartTime = performance.now();\n //! -----------\n results.forEach(result => {\n compiledResults.push({\n path: result.obj.path,\n score: result.score,\n title: result.obj.title.target,\n highlightedTitleChunks: getHighlighted(query, result[0]),\n highlightedContentChunks: getHighlighted(query, result[1]),\n });\n });\n //! PERFORMANCE\n const compilationEndTime = performance.now();\n console.log('Fuzzysort took', fuzzysortEndTime - fuzzysortStartTime, 'ms');\n console.log('Compilation took', compilationEndTime - compilationStartTime, 'ms');\n //! -----------\n return compiledResults;\n //\n function getHighlighted(query: string, result: Fuzzysort.Result): string[] {\n const OPEN_TAG = ``;\n const CLOSE_TAG = ' ';\n\n // preliminary highlight using fuzzysort highlight function\n // this only cares about the first match and ignores the rest\n const preHighlightedTokens = result.highlight((highlightText: string) => `${OPEN_TAG}${highlightText}${CLOSE_TAG}`);\n if (preHighlightedTokens.length === 0) { return []; }\n\n // highlight the rest, atomise them, and push them into the same array\n const TAGGED_REGEX = new RegExp(String.raw`^${OPEN_TAG}.*${CLOSE_TAG}$`, 'g');\n const comprehensiveTokens: string[] = getComprehensiveTokens(preHighlightedTokens);\n const [atomicTokens, tagTokenIndices]: [string[], number[]] = atomiseTokens(comprehensiveTokens);\n\n // condense the tokens\n const condensedTokens: string[] = condenseTokens(atomicTokens, tagTokenIndices);\n\n return condensedTokens;\n //\n function getComprehensiveTokens(inputTokens: string[]): string[] {\n const compTokens: string[] = [];\n inputTokens.forEach(token => {\n if (token.match(TAGGED_REGEX)) {\n // is tag\n compTokens.push(token);\n } else {\n // is sentences\n const taggedSentences = highlightMore(token);\n const tokenisedHighlightedSentences = tokeniseTaggedSentences(taggedSentences);\n compTokens.push(...tokenisedHighlightedSentences);\n }\n });\n return compTokens;\n //\n function highlightMore(text: string): string {\n const queries = query.split(' ').filter(word => word.length > 0);\n const comprehensiveQueryRegex = new RegExp(\n String.raw`(${queries.join('|')})`,\n 'gi'\n );\n return text.replace(comprehensiveQueryRegex, `${OPEN_TAG}$1${CLOSE_TAG}`);\n }\n function tokeniseTaggedSentences(taggedSentences: string): string[] {\n const tagSplitRegex = new RegExp(String.raw`(?=${OPEN_TAG})|(?<=${CLOSE_TAG})`, 'g');\n return taggedSentences.split(tagSplitRegex);\n }\n }\n function atomiseTokens(inputTokens: string[]): [string[], number[]] {\n const tokens: string[] = [];\n const tokenIndices: number[] = [];\n inputTokens.forEach(token => {\n if (token.match(TAGGED_REGEX)) {\n // is tag\n tokenIndices.push(tokens.length);\n tokens.push(token);\n } else {\n // is sentences\n tokens.push(...tokeniseSentences(token));\n }\n });\n return [tokens, tokenIndices];\n //\n function tokeniseSentences(sentences: string): string[] {\n const tokens = sentences.split(/(?<=\\n|\\.\\s|\\?\\s|!\\s)/g).filter(sentence => sentence.length > 0);\n const paddedTokens = replaceNewlinesWithEmptyElements(tokens);\n return paddedTokens;\n //\n function replaceNewlinesWithEmptyElements(tokens: string[]): string[] {\n for (let i = 0; i < tokens.length; i++) {\n const splitTokens = tokens[i].split('\\n');\n if (splitTokens.length > 1) {\n const withEmptyElements: string[] = interweaveEmptyElements(splitTokens);\n tokens.splice(i, 1, ...withEmptyElements);\n i += withEmptyElements.length - 1;\n }\n }\n return tokens;\n }\n function interweaveEmptyElements(splitTokens: string[]) {\n const interweaved: string[] = [];\n for (let j = 0; j < splitTokens.length; j++) {\n interweaved.push(splitTokens[j]);\n if (j < splitTokens.length - 1) { interweaved.push(''); }\n }\n return interweaved;\n }\n }\n }\n function condenseTokens(inputTokens: string[], tagIndices: number[]): string[] {\n const condensedTokens: string[] = [];\n let condensedTokenIndex = 0;\n while (condensedTokenIndex < inputTokens.length) {\n let currentCondensedToken = '';\n let position: PositionBooleans;\n while (isTruthy(position = tokenIsTagOrAdjacentToTag(condensedTokenIndex))) {\n const token = inputTokens[condensedTokenIndex];\n if (token === undefined) { break; }\n condensedTokenIndex++;\n //\n currentCondensedToken += token;\n if (!position.isBefore && position.isAfter) { break; }\n }\n if (currentCondensedToken.length > 0) {\n condensedTokens.push(currentCondensedToken.trim());\n } else {\n condensedTokenIndex++;\n }\n }\n return condensedTokens;\n //\n type PositionBooleans = { isBefore: boolean, isTag: boolean, isAfter: boolean };\n function tokenIsTagOrAdjacentToTag(index: number): PositionBooleans {\n return {\n isBefore: tagIndices.includes(index + 1),\n isTag: tagIndices.includes(index),\n isAfter: tagIndices.includes(index - 1),\n };\n }\n function isTruthy(position: PositionBooleans): boolean {\n return position.isBefore || position.isTag || position.isAfter;\n }\n }\n }\n }\n}\n\nexport default class SearchResults {\n static search = search;\n}","import Searchable, { SearchTarget } from './../lib/types/Searchable';\nimport { safeURIEncode } from './globalLibrary';\nimport SearchResults from './SearchResults';\n\n(async () => {\n const searchbarElement = (document.getElementById('searchbar')\n ?? (() => { throw new Error('Searchbar not found') })()\n ) as HTMLElement;\n const headerSearchFieldElement = (document.getElementById('header-search-field')\n ?? (() => { throw new Error('Search field not found') })()\n ) as HTMLInputElement;\n const mainSearchFieldElement = (document.getElementById('main-search-field')\n ?? (() => { throw new Error('Search field not found') })()\n ) as HTMLInputElement;\n const searchDialogElement = (document.getElementById('search-dialog')\n ?? (() => { throw new Error('Search dialog not found') })()\n ) as HTMLDialogElement;\n const searchResultsElement = (document.getElementById('search-results')\n ?? (() => { throw new Error('Search results not found') })()\n ) as HTMLDivElement;\n const searchResultTemplate = (() => {\n const searchResultTemplateElement = (document.getElementById('search-result-template')\n ?? (() => { throw new Error('Search result template not found') })()\n ) as HTMLTemplateElement;\n return searchResultTemplateElement.content.cloneNode(true) as HTMLDivElement;\n })();\n const searchResultsEndTemplate = (() => {\n const searchResultsEndTemplateElement = (document.getElementById('search-results-end-template')\n ?? (() => { throw new Error('Search results end template not found') })()\n ) as HTMLTemplateElement;\n return searchResultsEndTemplateElement.content.cloneNode(true) as HTMLDivElement;\n })();\n //\n const BASE_URL = document.head.querySelector('meta[base-url]')?.getAttribute('base-url') ?? '.';\n Searchable.index = await (await fetch(`/${BASE_URL}/search-index.json`)).json();\n const searchTargets: SearchTarget[] = Searchable.targets;\n // console.log({ index: Searchable.index, targets: Searchable.targets });\n /* -------------------------------------------------------------------------- */\n headerSearchFieldElement.addEventListener('focusin', () => { mainSearchFieldElement.focus(); });\n /* -------------------------------------------------------------------------- */\n let oldSearchFieldQuery: string;\n mainSearchFieldElement.addEventListener('keydown', onSearchFieldKeyDown);\n function onSearchFieldKeyDown() {\n //? the query is inexplicably one character behind if we don't use requestAnimationFrame\n //? + slight throttling\n requestAnimationFrame(updateSearch);\n }\n function updateSearch() {\n headerSearchFieldElement.value = mainSearchFieldElement.value;\n const query = mainSearchFieldElement.value.trim();\n if (query === oldSearchFieldQuery) { return; }\n oldSearchFieldQuery = query;\n if (query === '') {\n searchResultsElement.innerHTML = '';\n } else {\n redrawSearchResults(query)\n }\n }\n /* -------------------------------------------------------------------------- */\n searchbarElement.addEventListener('keydown', (event: KeyboardEvent) => {\n // allow non-typing keys pass through\n const nonTypingKeys = [\n 'Shift', 'Control', 'Alt', 'Meta',\n 'Enter', 'Tab', 'CapsLock', 'Home', 'End', 'PageUp', 'PageDown'\n ];\n if (nonTypingKeys.includes(event.key)) { return; }\n\n // allow arrow up down navigation\n if (['ArrowUp', 'ArrowDown'].includes(event.key)) {\n event.preventDefault();\n const isDown = event.key === 'ArrowDown';\n\n // focus on the next or previous search result\n const searchResults = searchResultsElement.children;\n const focusedElement = document.activeElement;\n const focusedIndex = Array.from(searchResults).indexOf(focusedElement as HTMLElement);\n if (focusedIndex === -1 && !isDown) { return; }\n const nextIndex = Math.min(focusedIndex + (isDown ? 1 : -1), searchResults.length - 1);\n const elementToFocus = (searchResults[nextIndex] || mainSearchFieldElement) as HTMLElement;\n elementToFocus.focus();\n elementToFocus.scrollIntoView({ block: 'start', behavior: 'instant' });\n return;\n }\n\n // allow escape to close the search dialog when the search field is empty\n if (event.key === 'Escape' && mainSearchFieldElement.value === '') {\n mainSearchFieldElement.focus();\n mainSearchFieldElement.blur();\n return;\n }\n\n // regular typing\n mainSearchFieldElement.focus();\n searchResultsElement.scrollTo(0, 0);\n requestAnimationFrame(() => {\n headerSearchFieldElement.value = mainSearchFieldElement.value;\n updateSearch();\n });\n });\n searchbarElement.addEventListener('focusin', () => { searchDialogElement.toggleAttribute('open', true); });\n searchbarElement.addEventListener('focusout', () => { searchDialogElement.toggleAttribute('open', false); });\n //\n window.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.key === 'F') {\n event.preventDefault();\n mainSearchFieldElement.focus();\n }\n });\n //\n async function redrawSearchResults(query: string) {\n //! PERFORMANCE\n const startTime = performance.now();\n //! -----------\n const [searchResults, usedCache] = await SearchResults.search(query, searchTargets);\n //! PERFORMANCE\n const endTime = performance.now();\n console.log(`Querying for \"${query}\" took`, endTime - startTime, 'ms', usedCache ? '(from cache)' : '');\n //! -----------\n console.log(searchResults);\n //\n searchResultsElement.innerHTML = '';\n for (const searchResult of searchResults.sort((a, b) => b.score - a.score)) {\n const newSearchResultElement = searchResultTemplate.cloneNode(true) as DocumentFragment;\n //\n const baselessResultPageHref = `/${searchResult.path}${window.location.pathname.endsWith('.html') ? '.html' : ''}`;\n const resultPageHref = `/${BASE_URL}${baselessResultPageHref}`;\n (newSearchResultElement.querySelector('#result-title') as HTMLDivElement).innerHTML = searchResult.highlightedTitleChunks.join(' ').trim() || searchResult.title;\n (newSearchResultElement.querySelector('#result-path') as HTMLDivElement).textContent = searchResult.path;\n //\n const contentElement = newSearchResultElement.querySelector('#result-content') as HTMLDivElement;\n for (const contentChunk of searchResult.highlightedContentChunks) {\n const contentChunkElement = document.createElement('a');\n contentChunkElement.innerHTML = contentChunk;\n //\n const safeText = safeURIEncode((\n contentChunkElement.textContent\n || (() => { throw new Error('Empty content chunk') })()\n ).trim());\n const resultTextHref = `${resultPageHref}#:~:text=${safeText}`;\n contentChunkElement.href = resultTextHref;\n if (window.location.href.endsWith(baselessResultPageHref)) {\n // same page search\n contentChunkElement.addEventListener('click', () => {\n searchDialogElement.toggleAttribute('open', false);\n const oParent = searchDialogElement.parentNode;\n document.body.appendChild(searchDialogElement);\n window.location.href = resultTextHref;\n requestAnimationFrame(() => { oParent?.appendChild(searchDialogElement); });\n });\n }\n //\n contentElement.appendChild(contentChunkElement);\n }\n //\n searchResultsElement.appendChild(newSearchResultElement);\n // I have no idea why this jank is necessary\n (searchResultsElement.lastElementChild as HTMLAnchorElement).href = resultPageHref;\n }\n searchResultsElement.appendChild(searchResultsEndTemplate.cloneNode(true));\n }\n})();","import { PageData } from './PageData';\nimport { htmlToText } from 'html-to-text';\nimport fuzzysort from 'fuzzysort';\n\ntype SearchIndex = SearchIndexEntry[];\ntype SearchIndexEntry = {\n path: string;\n title: string;\n content: string;\n}\nexport type SearchTarget = { path: string, title: Fuzzysort.Prepared, content: Fuzzysort.Prepared };\n\nfunction sanitiseRawContent(htmlPollutedRawContent: string): string {\n let sanitisedRawContent = htmlToText(htmlPollutedRawContent,\n {\n wordwrap: false,\n selectors: [\n { selector: '*', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'img', format: 'skip' },\n { selector: 'hr', format: 'skip' },\n { selector: 'blockquote', format: 'block' },\n { selector: 'a', options: { ignoreHref: true } },\n ],\n }\n );\n // sanitisedRawContent = sanitisedRawContent.replace(/\\s/g, ' ');\n // sanitisedRawContent = sanitisedRawContent.replace(/\\s{2,}/g, '\\n');\n sanitisedRawContent = sanitisedRawContent.replace(/\\n{2,}/g, '\\n');\n return sanitisedRawContent;\n}\n\nexport default class Searchable {\n static index: SearchIndex = [];\n private static _targets: SearchTarget[];\n\n static get targets(): SearchTarget[] {\n const targets: SearchTarget[] = [];\n this.index.forEach(entry => targets.push({\n path: entry.path,\n title: fuzzysort.prepare(entry.title),\n content: fuzzysort.prepare(entry.content.replace('', '').replace(' ', ''))\n }));\n this._targets = targets;\n return this._targets;\n }\n\n static addEntry(path: string, title: string, pageData: PageData) {\n this.index.push({\n path, title, content: sanitiseRawContent(\n pageData.htmlPollutedRawContent\n ?? (() => { throw new Error(`htmlPollutedRawContent not found for ${path}!`) })()\n )\n });\n }\n}","import { hp2Builder } from '@selderee/plugin-htmlparser2';\nimport { parseDocument } from 'htmlparser2';\nimport { DecisionTree } from 'selderee';\nimport merge from 'deepmerge';\nimport { render } from 'dom-serializer';\n\n/**\n * Make a recursive function that will only run to a given depth\n * and switches to an alternative function at that depth. \\\n * No limitation if `n` is `undefined` (Just wraps `f` in that case).\n *\n * @param { number | undefined } n Allowed depth of recursion. `undefined` for no limitation.\n * @param { Function } f Function that accepts recursive callback as the first argument.\n * @param { Function } [g] Function to run instead, when maximum depth was reached. Do nothing by default.\n * @returns { Function }\n */\nfunction limitedDepthRecursive (n, f, g = () => undefined) {\n if (n === undefined) {\n const f1 = function (...args) { return f(f1, ...args); };\n return f1;\n }\n if (n >= 0) {\n return function (...args) { return f(limitedDepthRecursive(n - 1, f, g), ...args); };\n }\n return g;\n}\n\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from each side.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */\nfunction trimCharacter (str, char) {\n let start = 0;\n let end = str.length;\n while (start < end && str[start] === char) { ++start; }\n while (end > start && str[end - 1] === char) { --end; }\n return (start > 0 || end < str.length)\n ? str.substring(start, end)\n : str;\n}\n\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from the end only.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */\nfunction trimCharacterEnd (str, char) {\n let end = str.length;\n while (end > 0 && str[end - 1] === char) { --end; }\n return (end < str.length)\n ? str.substring(0, end)\n : str;\n}\n\n/**\n * Return a new string will all characters replaced with unicode escape sequences.\n * This extreme kind of escaping can used to be safely compose regular expressions.\n *\n * @param { string } str A string to escape.\n * @returns { string } A string of unicode escape sequences.\n */\nfunction unicodeEscape (str) {\n return str.replace(/[\\s\\S]/g, c => '\\\\u' + c.charCodeAt().toString(16).padStart(4, '0'));\n}\n\n/**\n * Deduplicate an array by a given key callback.\n * Item properties are merged recursively and with the preference for last defined values.\n * Of items with the same key, merged item takes the place of the last item,\n * others are omitted.\n *\n * @param { any[] } items An array to deduplicate.\n * @param { (x: any) => string } getKey Callback to get a value that distinguishes unique items.\n * @returns { any[] }\n */\nfunction mergeDuplicatesPreferLast (items, getKey) {\n const map = new Map();\n for (let i = items.length; i-- > 0;) {\n const item = items[i];\n const key = getKey(item);\n map.set(\n key,\n (map.has(key))\n ? merge(item, map.get(key), { arrayMerge: overwriteMerge$1 })\n : item\n );\n }\n return [...map.values()].reverse();\n}\n\nconst overwriteMerge$1 = (acc, src, options) => [...src];\n\n/**\n * Get a nested property from an object.\n *\n * @param { object } obj The object to query for the value.\n * @param { string[] } path The path to the property.\n * @returns { any }\n */\nfunction get (obj, path) {\n for (const key of path) {\n if (!obj) { return undefined; }\n obj = obj[key];\n }\n return obj;\n}\n\n/**\n * Convert a number into alphabetic sequence representation (Sequence without zeroes).\n *\n * For example: `a, ..., z, aa, ..., zz, aaa, ...`.\n *\n * @param { number } num Number to convert. Must be >= 1.\n * @param { string } [baseChar = 'a'] Character for 1 in the sequence.\n * @param { number } [base = 26] Number of characters in the sequence.\n * @returns { string }\n */\nfunction numberToLetterSequence (num, baseChar = 'a', base = 26) {\n const digits = [];\n do {\n num -= 1;\n digits.push(num % base);\n num = (num / base) >> 0; // quick `floor`\n } while (num > 0);\n const baseCode = baseChar.charCodeAt(0);\n return digits\n .reverse()\n .map(n => String.fromCharCode(baseCode + n))\n .join('');\n}\n\nconst I = ['I', 'X', 'C', 'M'];\nconst V = ['V', 'L', 'D'];\n\n/**\n * Convert a number to it's Roman representation. No large numbers extension.\n *\n * @param { number } num Number to convert. `0 < num <= 3999`.\n * @returns { string }\n */\nfunction numberToRoman (num) {\n return [...(num) + '']\n .map(n => +n)\n .reverse()\n .map((v, i) => ((v % 5 < 4)\n ? (v < 5 ? '' : V[i]) + I[i].repeat(v % 5)\n : I[i] + (v < 5 ? V[i] : I[i + 1])))\n .reverse()\n .join('');\n}\n\n/**\n * Helps to build text from words.\n */\nclass InlineTextBuilder {\n /**\n * Creates an instance of InlineTextBuilder.\n *\n * If `maxLineLength` is not provided then it is either `options.wordwrap` or unlimited.\n *\n * @param { Options } options HtmlToText options.\n * @param { number } [ maxLineLength ] This builder will try to wrap text to fit this line length.\n */\n constructor (options, maxLineLength = undefined) {\n /** @type { string[][] } */\n this.lines = [];\n /** @type { string[] } */\n this.nextLineWords = [];\n this.maxLineLength = maxLineLength || options.wordwrap || Number.MAX_VALUE;\n this.nextLineAvailableChars = this.maxLineLength;\n this.wrapCharacters = get(options, ['longWordSplit', 'wrapCharacters']) || [];\n this.forceWrapOnLimit = get(options, ['longWordSplit', 'forceWrapOnLimit']) || false;\n\n this.stashedSpace = false;\n this.wordBreakOpportunity = false;\n }\n\n /**\n * Add a new word.\n *\n * @param { string } word A word to add.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n pushWord (word, noWrap = false) {\n if (this.nextLineAvailableChars <= 0 && !noWrap) {\n this.startNewLine();\n }\n const isLineStart = this.nextLineWords.length === 0;\n const cost = word.length + (isLineStart ? 0 : 1);\n if ((cost <= this.nextLineAvailableChars) || noWrap) { // Fits into available budget\n\n this.nextLineWords.push(word);\n this.nextLineAvailableChars -= cost;\n\n } else { // Does not fit - try to split the word\n\n // The word is moved to a new line - prefer to wrap between words.\n const [first, ...rest] = this.splitLongWord(word);\n if (!isLineStart) { this.startNewLine(); }\n this.nextLineWords.push(first);\n this.nextLineAvailableChars -= first.length;\n for (const part of rest) {\n this.startNewLine();\n this.nextLineWords.push(part);\n this.nextLineAvailableChars -= part.length;\n }\n\n }\n }\n\n /**\n * Pop a word from the currently built line.\n * This doesn't affect completed lines.\n *\n * @returns { string }\n */\n popWord () {\n const lastWord = this.nextLineWords.pop();\n if (lastWord !== undefined) {\n const isLineStart = this.nextLineWords.length === 0;\n const cost = lastWord.length + (isLineStart ? 0 : 1);\n this.nextLineAvailableChars += cost;\n }\n return lastWord;\n }\n\n /**\n * Concat a word to the last word already in the builder.\n * Adds a new word in case there are no words yet in the last line.\n *\n * @param { string } word A word to be concatenated.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n concatWord (word, noWrap = false) {\n if (this.wordBreakOpportunity && word.length > this.nextLineAvailableChars) {\n this.pushWord(word, noWrap);\n this.wordBreakOpportunity = false;\n } else {\n const lastWord = this.popWord();\n this.pushWord((lastWord) ? lastWord.concat(word) : word, noWrap);\n }\n }\n\n /**\n * Add current line (and more empty lines if provided argument > 1) to the list of complete lines and start a new one.\n *\n * @param { number } n Number of line breaks that will be added to the resulting string.\n */\n startNewLine (n = 1) {\n this.lines.push(this.nextLineWords);\n if (n > 1) {\n this.lines.push(...Array.from({ length: n - 1 }, () => []));\n }\n this.nextLineWords = [];\n this.nextLineAvailableChars = this.maxLineLength;\n }\n\n /**\n * No words in this builder.\n *\n * @returns { boolean }\n */\n isEmpty () {\n return this.lines.length === 0\n && this.nextLineWords.length === 0;\n }\n\n clear () {\n this.lines.length = 0;\n this.nextLineWords.length = 0;\n this.nextLineAvailableChars = this.maxLineLength;\n }\n\n /**\n * Join all lines of words inside the InlineTextBuilder into a complete string.\n *\n * @returns { string }\n */\n toString () {\n return [...this.lines, this.nextLineWords]\n .map(words => words.join(' '))\n .join('\\n');\n }\n\n /**\n * Split a long word up to fit within the word wrap limit.\n * Use either a character to split looking back from the word wrap limit,\n * or truncate to the word wrap limit.\n *\n * @param { string } word Input word.\n * @returns { string[] } Parts of the word.\n */\n splitLongWord (word) {\n const parts = [];\n let idx = 0;\n while (word.length > this.maxLineLength) {\n\n const firstLine = word.substring(0, this.maxLineLength);\n const remainingChars = word.substring(this.maxLineLength);\n\n const splitIndex = firstLine.lastIndexOf(this.wrapCharacters[idx]);\n\n if (splitIndex > -1) { // Found a character to split on\n\n word = firstLine.substring(splitIndex + 1) + remainingChars;\n parts.push(firstLine.substring(0, splitIndex + 1));\n\n } else { // Not found a character to split on\n\n idx++;\n if (idx < this.wrapCharacters.length) { // There is next character to try\n\n word = firstLine + remainingChars;\n\n } else { // No more characters to try\n\n if (this.forceWrapOnLimit) {\n parts.push(firstLine);\n word = remainingChars;\n if (word.length > this.maxLineLength) {\n continue;\n }\n } else {\n word = firstLine + remainingChars;\n }\n break;\n\n }\n\n }\n\n }\n parts.push(word); // Add remaining part to array\n return parts;\n }\n}\n\n/* eslint-disable max-classes-per-file */\n\n\nclass StackItem {\n constructor (next = null) { this.next = next; }\n\n getRoot () { return (this.next) ? this.next : this; }\n}\n\nclass BlockStackItem extends StackItem {\n constructor (options, next = null, leadingLineBreaks = 1, maxLineLength = undefined) {\n super(next);\n this.leadingLineBreaks = leadingLineBreaks;\n this.inlineTextBuilder = new InlineTextBuilder(options, maxLineLength);\n this.rawText = '';\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass ListStackItem extends BlockStackItem {\n constructor (\n options,\n next = null,\n {\n interRowLineBreaks = 1,\n leadingLineBreaks = 2,\n maxLineLength = undefined,\n maxPrefixLength = 0,\n prefixAlign = 'left',\n } = {}\n ) {\n super(options, next, leadingLineBreaks, maxLineLength);\n this.maxPrefixLength = maxPrefixLength;\n this.prefixAlign = prefixAlign;\n this.interRowLineBreaks = interRowLineBreaks;\n }\n}\n\nclass ListItemStackItem extends BlockStackItem {\n constructor (\n options,\n next = null,\n {\n leadingLineBreaks = 1,\n maxLineLength = undefined,\n prefix = '',\n } = {}\n ) {\n super(options, next, leadingLineBreaks, maxLineLength);\n this.prefix = prefix;\n }\n}\n\nclass TableStackItem extends StackItem {\n constructor (next = null) {\n super(next);\n this.rows = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TableRowStackItem extends StackItem {\n constructor (next = null) {\n super(next);\n this.cells = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TableCellStackItem extends StackItem {\n constructor (options, next = null, maxColumnWidth = undefined) {\n super(next);\n this.inlineTextBuilder = new InlineTextBuilder(options, maxColumnWidth);\n this.rawText = '';\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TransformerStackItem extends StackItem {\n constructor (next = null, transform) {\n super(next);\n this.transform = transform;\n }\n}\n\nfunction charactersToCodes (str) {\n return [...str]\n .map(c => '\\\\u' + c.charCodeAt(0).toString(16).padStart(4, '0'))\n .join('');\n}\n\n/**\n * Helps to handle HTML whitespaces.\n *\n * @class WhitespaceProcessor\n */\nclass WhitespaceProcessor {\n\n /**\n * Creates an instance of WhitespaceProcessor.\n *\n * @param { Options } options HtmlToText options.\n * @memberof WhitespaceProcessor\n */\n constructor (options) {\n this.whitespaceChars = (options.preserveNewlines)\n ? options.whitespaceCharacters.replace(/\\n/g, '')\n : options.whitespaceCharacters;\n const whitespaceCodes = charactersToCodes(this.whitespaceChars);\n this.leadingWhitespaceRe = new RegExp(`^[${whitespaceCodes}]`);\n this.trailingWhitespaceRe = new RegExp(`[${whitespaceCodes}]$`);\n this.allWhitespaceOrEmptyRe = new RegExp(`^[${whitespaceCodes}]*$`);\n this.newlineOrNonWhitespaceRe = new RegExp(`(\\\\n|[^\\\\n${whitespaceCodes}])`, 'g');\n this.newlineOrNonNewlineStringRe = new RegExp(`(\\\\n|[^\\\\n]+)`, 'g');\n\n if (options.preserveNewlines) {\n\n const wordOrNewlineRe = new RegExp(`\\\\n|[^\\\\n${whitespaceCodes}]+`, 'gm');\n\n /**\n * Shrink whitespaces and wrap text, add to the builder.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { (str: string) => string } [ transform ] A transform to be applied to words.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n this.shrinkWrapAdd = function (text, inlineTextBuilder, transform = (str => str), noWrap = false) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordOrNewlineRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else if (previouslyStashedSpace || this.testLeadingWhitespace(text)) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n } else {\n inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n }\n while ((m = wordOrNewlineRe.exec(text)) !== null) {\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch) || (this.testTrailingWhitespace(text));\n // No need to stash a space in case last added item was a new line,\n // but that won't affect anything later anyway.\n };\n\n } else {\n\n const wordRe = new RegExp(`[^${whitespaceCodes}]+`, 'g');\n\n this.shrinkWrapAdd = function (text, inlineTextBuilder, transform = (str => str), noWrap = false) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordRe.exec(text);\n if (m) {\n anyMatch = true;\n if (previouslyStashedSpace || this.testLeadingWhitespace(text)) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n } else {\n inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n }\n while ((m = wordRe.exec(text)) !== null) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch) || this.testTrailingWhitespace(text);\n };\n\n }\n }\n\n /**\n * Add text with only minimal processing.\n * Everything between newlines considered a single word.\n * No whitespace is trimmed.\n * Not affected by preserveNewlines option - `\\n` always starts a new line.\n *\n * `noWrap` argument is `true` by default - this won't start a new line\n * even if there is not enough space left in the current line.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n addLiteral (text, inlineTextBuilder, noWrap = true) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = this.newlineOrNonNewlineStringRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else if (previouslyStashedSpace) {\n inlineTextBuilder.pushWord(m[0], noWrap);\n } else {\n inlineTextBuilder.concatWord(m[0], noWrap);\n }\n while ((m = this.newlineOrNonNewlineStringRe.exec(text)) !== null) {\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else {\n inlineTextBuilder.pushWord(m[0], noWrap);\n }\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch);\n }\n\n /**\n * Test whether the given text starts with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testLeadingWhitespace (text) {\n return this.leadingWhitespaceRe.test(text);\n }\n\n /**\n * Test whether the given text ends with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testTrailingWhitespace (text) {\n return this.trailingWhitespaceRe.test(text);\n }\n\n /**\n * Test whether the given text contains any non-whitespace characters.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testContainsWords (text) {\n return !this.allWhitespaceOrEmptyRe.test(text);\n }\n\n /**\n * Return the number of newlines if there are no words.\n *\n * If any word is found then return zero regardless of the actual number of newlines.\n *\n * @param { string } text Input string.\n * @returns { number }\n */\n countNewlinesNoWords (text) {\n this.newlineOrNonWhitespaceRe.lastIndex = 0;\n let counter = 0;\n let match;\n while ((match = this.newlineOrNonWhitespaceRe.exec(text)) !== null) {\n if (match[0] === '\\n') {\n counter++;\n } else {\n return 0;\n }\n }\n return counter;\n }\n\n}\n\n/**\n * Helps to build text from inline and block elements.\n *\n * @class BlockTextBuilder\n */\nclass BlockTextBuilder {\n\n /**\n * Creates an instance of BlockTextBuilder.\n *\n * @param { Options } options HtmlToText options.\n * @param { import('selderee').Picker } picker Selectors decision tree picker.\n * @param { any} [metadata] Optional metadata for HTML document, for use in formatters.\n */\n constructor (options, picker, metadata = undefined) {\n this.options = options;\n this.picker = picker;\n this.metadata = metadata;\n this.whitespaceProcessor = new WhitespaceProcessor(options);\n /** @type { StackItem } */\n this._stackItem = new BlockStackItem(options);\n /** @type { TransformerStackItem } */\n this._wordTransformer = undefined;\n }\n\n /**\n * Put a word-by-word transform function onto the transformations stack.\n *\n * Mainly used for uppercasing. Can be bypassed to add unformatted text such as URLs.\n *\n * Word transformations applied before wrapping.\n *\n * @param { (str: string) => string } wordTransform Word transformation function.\n */\n pushWordTransform (wordTransform) {\n this._wordTransformer = new TransformerStackItem(this._wordTransformer, wordTransform);\n }\n\n /**\n * Remove a function from the word transformations stack.\n *\n * @returns { (str: string) => string } A function that was removed.\n */\n popWordTransform () {\n if (!this._wordTransformer) { return undefined; }\n const transform = this._wordTransformer.transform;\n this._wordTransformer = this._wordTransformer.next;\n return transform;\n }\n\n /**\n * Ignore wordwrap option in followup inline additions and disable automatic wrapping.\n */\n startNoWrap () {\n this._stackItem.isNoWrap = true;\n }\n\n /**\n * Return automatic wrapping to behavior defined by options.\n */\n stopNoWrap () {\n this._stackItem.isNoWrap = false;\n }\n\n /** @returns { (str: string) => string } */\n _getCombinedWordTransformer () {\n const wt = (this._wordTransformer)\n ? ((str) => applyTransformer(str, this._wordTransformer))\n : undefined;\n const ce = this.options.encodeCharacters;\n return (wt)\n ? ((ce) ? (str) => ce(wt(str)) : wt)\n : ce;\n }\n\n _popStackItem () {\n const item = this._stackItem;\n this._stackItem = item.next;\n return item;\n }\n\n /**\n * Add a line break into currently built block.\n */\n addLineBreak () {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n if (this._stackItem.isPre) {\n this._stackItem.rawText += '\\n';\n } else {\n this._stackItem.inlineTextBuilder.startNewLine();\n }\n }\n\n /**\n * Allow to break line in case directly following text will not fit.\n */\n addWordBreakOpportunity () {\n if (\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n ) {\n this._stackItem.inlineTextBuilder.wordBreakOpportunity = true;\n }\n }\n\n /**\n * Add a node inline into the currently built block.\n *\n * @param { string } str\n * Text content of a node to add.\n *\n * @param { object } [param1]\n * Object holding the parameters of the operation.\n *\n * @param { boolean } [param1.noWordTransform]\n * Ignore word transformers if there are any.\n * Don't encode characters as well.\n * (Use this for things like URL addresses).\n */\n addInline (str, { noWordTransform = false } = {}) {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n\n if (\n str.length === 0 || // empty string\n (\n this._stackItem.stashedLineBreaks && // stashed linebreaks make whitespace irrelevant\n !this.whitespaceProcessor.testContainsWords(str) // no words to add\n )\n ) { return; }\n\n if (this.options.preserveNewlines) {\n const newlinesNumber = this.whitespaceProcessor.countNewlinesNoWords(str);\n if (newlinesNumber > 0) {\n this._stackItem.inlineTextBuilder.startNewLine(newlinesNumber);\n // keep stashedLineBreaks unchanged\n return;\n }\n }\n\n if (this._stackItem.stashedLineBreaks) {\n this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n }\n this.whitespaceProcessor.shrinkWrapAdd(\n str,\n this._stackItem.inlineTextBuilder,\n (noWordTransform) ? undefined : this._getCombinedWordTransformer(),\n this._stackItem.isNoWrap\n );\n this._stackItem.stashedLineBreaks = 0; // inline text doesn't introduce line breaks\n }\n\n /**\n * Add a string inline into the currently built block.\n *\n * Use this for markup elements that don't have to adhere\n * to text layout rules.\n *\n * @param { string } str Text to add.\n */\n addLiteral (str) {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n\n if (str.length === 0) { return; }\n\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n\n if (this._stackItem.stashedLineBreaks) {\n this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n }\n this.whitespaceProcessor.addLiteral(\n str,\n this._stackItem.inlineTextBuilder,\n this._stackItem.isNoWrap\n );\n this._stackItem.stashedLineBreaks = 0;\n }\n\n /**\n * Start building a new block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any preceding block.\n *\n * @param { number } [param0.reservedLineLength]\n * Reserve this number of characters on each line for block markup.\n *\n * @param { boolean } [param0.isPre]\n * Should HTML whitespace be preserved inside this block.\n */\n openBlock ({ leadingLineBreaks = 1, reservedLineLength = 0, isPre = false } = {}) {\n const maxLineLength = Math.max(20, this._stackItem.inlineTextBuilder.maxLineLength - reservedLineLength);\n this._stackItem = new BlockStackItem(\n this.options,\n this._stackItem,\n leadingLineBreaks,\n maxLineLength\n );\n if (isPre) { this._stackItem.isPre = true; }\n }\n\n /**\n * Finalize currently built block, add it's content to the parent block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any following block.\n *\n * @param { (str: string) => string } [param0.blockTransform]\n * A function to transform the block text before adding to the parent block.\n * This happens after word wrap and should be used in combination with reserved line length\n * in order to keep line lengths correct.\n * Used for whole block markup.\n */\n closeBlock ({ trailingLineBreaks = 1, blockTransform = undefined } = {}) {\n const block = this._popStackItem();\n const blockText = (blockTransform) ? blockTransform(getText(block)) : getText(block);\n addText(this._stackItem, blockText, block.leadingLineBreaks, Math.max(block.stashedLineBreaks, trailingLineBreaks));\n }\n\n /**\n * Start building a new list.\n *\n * @param { object } [param0]\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.maxPrefixLength]\n * Length of the longest list item prefix.\n * If not supplied or too small then list items won't be aligned properly.\n *\n * @param { 'left' | 'right' } [param0.prefixAlign]\n * Specify how prefixes of different lengths have to be aligned\n * within a column.\n *\n * @param { number } [param0.interRowLineBreaks]\n * Minimum number of line breaks between list items.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any preceding block.\n */\n openList ({ maxPrefixLength = 0, prefixAlign = 'left', interRowLineBreaks = 1, leadingLineBreaks = 2 } = {}) {\n this._stackItem = new ListStackItem(this.options, this._stackItem, {\n interRowLineBreaks: interRowLineBreaks,\n leadingLineBreaks: leadingLineBreaks,\n maxLineLength: this._stackItem.inlineTextBuilder.maxLineLength,\n maxPrefixLength: maxPrefixLength,\n prefixAlign: prefixAlign\n });\n }\n\n /**\n * Start building a new list item.\n *\n * @param {object} param0\n * Object holding the parameters of the list item.\n *\n * @param { string } [param0.prefix]\n * Prefix for this list item (item number, bullet point, etc).\n */\n openListItem ({ prefix = '' } = {}) {\n if (!(this._stackItem instanceof ListStackItem)) {\n throw new Error('Can\\'t add a list item to something that is not a list! Check the formatter.');\n }\n const list = this._stackItem;\n const prefixLength = Math.max(prefix.length, list.maxPrefixLength);\n const maxLineLength = Math.max(20, list.inlineTextBuilder.maxLineLength - prefixLength);\n this._stackItem = new ListItemStackItem(this.options, list, {\n prefix: prefix,\n maxLineLength: maxLineLength,\n leadingLineBreaks: list.interRowLineBreaks\n });\n }\n\n /**\n * Finalize currently built list item, add it's content to the parent list.\n */\n closeListItem () {\n const listItem = this._popStackItem();\n const list = listItem.next;\n\n const prefixLength = Math.max(listItem.prefix.length, list.maxPrefixLength);\n const spacing = '\\n' + ' '.repeat(prefixLength);\n const prefix = (list.prefixAlign === 'right')\n ? listItem.prefix.padStart(prefixLength)\n : listItem.prefix.padEnd(prefixLength);\n const text = prefix + getText(listItem).replace(/\\n/g, spacing);\n\n addText(\n list,\n text,\n listItem.leadingLineBreaks,\n Math.max(listItem.stashedLineBreaks, list.interRowLineBreaks)\n );\n }\n\n /**\n * Finalize currently built list, add it's content to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any following block.\n */\n closeList ({ trailingLineBreaks = 2 } = {}) {\n const list = this._popStackItem();\n const text = getText(list);\n if (text) {\n addText(this._stackItem, text, list.leadingLineBreaks, trailingLineBreaks);\n }\n }\n\n /**\n * Start building a table.\n */\n openTable () {\n this._stackItem = new TableStackItem(this._stackItem);\n }\n\n /**\n * Start building a table row.\n */\n openTableRow () {\n if (!(this._stackItem instanceof TableStackItem)) {\n throw new Error('Can\\'t add a table row to something that is not a table! Check the formatter.');\n }\n this._stackItem = new TableRowStackItem(this._stackItem);\n }\n\n /**\n * Start building a table cell.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.maxColumnWidth]\n * Wrap cell content to this width. Fall back to global wordwrap value if undefined.\n */\n openTableCell ({ maxColumnWidth = undefined } = {}) {\n if (!(this._stackItem instanceof TableRowStackItem)) {\n throw new Error('Can\\'t add a table cell to something that is not a table row! Check the formatter.');\n }\n this._stackItem = new TableCellStackItem(this.options, this._stackItem, maxColumnWidth);\n }\n\n /**\n * Finalize currently built table cell and add it to parent table row's cells.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.colspan] How many columns this cell should occupy.\n * @param { number } [param0.rowspan] How many rows this cell should occupy.\n */\n closeTableCell ({ colspan = 1, rowspan = 1 } = {}) {\n const cell = this._popStackItem();\n const text = trimCharacter(getText(cell), '\\n');\n cell.next.cells.push({ colspan: colspan, rowspan: rowspan, text: text });\n }\n\n /**\n * Finalize currently built table row and add it to parent table's rows.\n */\n closeTableRow () {\n const row = this._popStackItem();\n row.next.rows.push(row.cells);\n }\n\n /**\n * Finalize currently built table and add the rendered text to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the table.\n *\n * @param { TablePrinter } param0.tableToString\n * A function to convert a table of stringified cells into a complete table.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This table should have at least this number of line breaks to separate if from any preceding block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This table should have at least this number of line breaks to separate it from any following block.\n */\n closeTable ({ tableToString, leadingLineBreaks = 2, trailingLineBreaks = 2 }) {\n const table = this._popStackItem();\n const output = tableToString(table.rows);\n if (output) {\n addText(this._stackItem, output, leadingLineBreaks, trailingLineBreaks);\n }\n }\n\n /**\n * Return the rendered text content of this builder.\n *\n * @returns { string }\n */\n toString () {\n return getText(this._stackItem.getRoot());\n // There should only be the root item if everything is closed properly.\n }\n\n}\n\nfunction getText (stackItem) {\n if (!(\n stackItem instanceof BlockStackItem\n || stackItem instanceof ListItemStackItem\n || stackItem instanceof TableCellStackItem\n )) {\n throw new Error('Only blocks, list items and table cells can be requested for text contents.');\n }\n return (stackItem.inlineTextBuilder.isEmpty())\n ? stackItem.rawText\n : stackItem.rawText + stackItem.inlineTextBuilder.toString();\n}\n\nfunction addText (stackItem, text, leadingLineBreaks, trailingLineBreaks) {\n if (!(\n stackItem instanceof BlockStackItem\n || stackItem instanceof ListItemStackItem\n || stackItem instanceof TableCellStackItem\n )) {\n throw new Error('Only blocks, list items and table cells can contain text.');\n }\n const parentText = getText(stackItem);\n const lineBreaks = Math.max(stackItem.stashedLineBreaks, leadingLineBreaks);\n stackItem.inlineTextBuilder.clear();\n if (parentText) {\n stackItem.rawText = parentText + '\\n'.repeat(lineBreaks) + text;\n } else {\n stackItem.rawText = text;\n stackItem.leadingLineBreaks = lineBreaks;\n }\n stackItem.stashedLineBreaks = trailingLineBreaks;\n}\n\n/**\n * @param { string } str A string to transform.\n * @param { TransformerStackItem } transformer A transformer item (with possible continuation).\n * @returns { string }\n */\nfunction applyTransformer (str, transformer) {\n return ((transformer) ? applyTransformer(transformer.transform(str), transformer.next) : str);\n}\n\n/**\n * Compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options (defaults, formatters, user options merged, deduplicated).\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */\nfunction compile$1 (options = {}) {\n const selectorsWithoutFormat = options.selectors.filter(s => !s.format);\n if (selectorsWithoutFormat.length) {\n throw new Error(\n 'Following selectors have no specified format: ' +\n selectorsWithoutFormat.map(s => `\\`${s.selector}\\``).join(', ')\n );\n }\n const picker = new DecisionTree(\n options.selectors.map(s => [s.selector, s])\n ).build(hp2Builder);\n\n if (typeof options.encodeCharacters !== 'function') {\n options.encodeCharacters = makeReplacerFromDict(options.encodeCharacters);\n }\n\n const baseSelectorsPicker = new DecisionTree(\n options.baseElements.selectors.map((s, i) => [s, i + 1])\n ).build(hp2Builder);\n function findBaseElements (dom) {\n return findBases(dom, options, baseSelectorsPicker);\n }\n\n const limitedWalk = limitedDepthRecursive(\n options.limits.maxDepth,\n recursiveWalk,\n function (dom, builder) {\n builder.addInline(options.limits.ellipsis || '');\n }\n );\n\n return function (html, metadata = undefined) {\n return process(html, metadata, options, picker, findBaseElements, limitedWalk);\n };\n}\n\n\n/**\n * Convert given HTML according to preprocessed options.\n *\n * @param { string } html HTML content to convert.\n * @param { any } metadata Optional metadata for HTML document, for use in formatters.\n * @param { Options } options HtmlToText options (preprocessed).\n * @param { import('selderee').Picker } picker\n * Tag definition picker for DOM nodes processing.\n * @param { (dom: DomNode[]) => DomNode[] } findBaseElements\n * Function to extract elements from HTML DOM\n * that will only be present in the output text.\n * @param { RecursiveCallback } walk Recursive callback.\n * @returns { string }\n */\nfunction process (html, metadata, options, picker, findBaseElements, walk) {\n const maxInputLength = options.limits.maxInputLength;\n if (maxInputLength && html && html.length > maxInputLength) {\n console.warn(\n `Input length ${html.length} is above allowed limit of ${maxInputLength}. Truncating without ellipsis.`\n );\n html = html.substring(0, maxInputLength);\n }\n\n const document = parseDocument(html, { decodeEntities: options.decodeEntities });\n const bases = findBaseElements(document.children);\n const builder = new BlockTextBuilder(options, picker, metadata);\n walk(bases, builder);\n return builder.toString();\n}\n\n\nfunction findBases (dom, options, baseSelectorsPicker) {\n const results = [];\n\n function recursiveWalk (walk, /** @type { DomNode[] } */ dom) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n for (const elem of dom) {\n if (elem.type !== 'tag') {\n continue;\n }\n const pickedSelectorIndex = baseSelectorsPicker.pick1(elem);\n if (pickedSelectorIndex > 0) {\n results.push({ selectorIndex: pickedSelectorIndex, element: elem });\n } else if (elem.children) {\n walk(elem.children);\n }\n if (results.length >= options.limits.maxBaseElements) {\n return;\n }\n }\n }\n\n const limitedWalk = limitedDepthRecursive(\n options.limits.maxDepth,\n recursiveWalk\n );\n limitedWalk(dom);\n\n if (options.baseElements.orderBy !== 'occurrence') { // 'selectors'\n results.sort((a, b) => a.selectorIndex - b.selectorIndex);\n }\n return (options.baseElements.returnDomByDefault && results.length === 0)\n ? dom\n : results.map(x => x.element);\n}\n\n/**\n * Function to walk through DOM nodes and accumulate their string representations.\n *\n * @param { RecursiveCallback } walk Recursive callback.\n * @param { DomNode[] } [dom] Nodes array to process.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @private\n */\nfunction recursiveWalk (walk, dom, builder) {\n if (!dom) { return; }\n\n const options = builder.options;\n\n const tooManyChildNodes = dom.length > options.limits.maxChildNodes;\n if (tooManyChildNodes) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n dom.push({\n data: options.limits.ellipsis,\n type: 'text'\n });\n }\n\n for (const elem of dom) {\n switch (elem.type) {\n case 'text': {\n builder.addInline(elem.data);\n break;\n }\n case 'tag': {\n const tagDefinition = builder.picker.pick1(elem);\n const format = options.formatters[tagDefinition.format];\n format(elem, walk, builder, tagDefinition.options || {});\n break;\n }\n }\n }\n\n return;\n}\n\n/**\n * @param { Object } dict\n * A dictionary where keys are characters to replace\n * and values are replacement strings.\n *\n * First code point from dict keys is used.\n * Compound emojis with ZWJ are not supported (not until Node 16).\n *\n * @returns { ((str: string) => string) | undefined }\n */\nfunction makeReplacerFromDict (dict) {\n if (!dict || Object.keys(dict).length === 0) {\n return undefined;\n }\n /** @type { [string, string][] } */\n const entries = Object.entries(dict).filter(([, v]) => v !== false);\n const regex = new RegExp(\n entries\n .map(([c]) => `(${unicodeEscape([...c][0])})`)\n .join('|'),\n 'g'\n );\n const values = entries.map(([, v]) => v);\n const replacer = (m, ...cgs) => values[cgs.findIndex(cg => cg)];\n return (str) => str.replace(regex, replacer);\n}\n\n/**\n * Dummy formatter that discards the input and does nothing.\n *\n * @type { FormatCallback }\n */\nfunction formatSkip (elem, walk, builder, formatOptions) {\n /* do nothing */\n}\n\n/**\n * Insert the given string literal inline instead of a tag.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineString (elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.string || '');\n}\n\n/**\n * Insert a block with the given string literal instead of a tag.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockString (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.addLiteral(formatOptions.string || '');\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process an inline-level element.\n *\n * @type { FormatCallback }\n */\nfunction formatInline (elem, walk, builder, formatOptions) {\n walk(elem.children, builder);\n}\n\n/**\n * Process a block-level container.\n *\n * @type { FormatCallback }\n */\nfunction formatBlock$1 (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\nfunction renderOpenTag (elem) {\n const attrs = (elem.attribs && elem.attribs.length)\n ? ' ' + Object.entries(elem.attribs)\n .map(([k, v]) => ((v === '') ? k : `${k}=${v.replace(/\"/g, '"')}`))\n .join(' ')\n : '';\n return `<${elem.name}${attrs}>`;\n}\n\nfunction renderCloseTag (elem) {\n return `${elem.name}>`;\n}\n\n/**\n * Render an element as inline HTML tag, walk through it's children.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineTag (elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral(renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral(renderCloseTag(elem));\n builder.stopNoWrap();\n}\n\n/**\n * Render an element as HTML block bag, walk through it's children.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockTag (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.startNoWrap();\n builder.addLiteral(renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral(renderCloseTag(elem));\n builder.stopNoWrap();\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Render an element with all it's children as inline HTML.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineHtml (elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral(\n render(elem, { decodeEntities: builder.options.decodeEntities })\n );\n builder.stopNoWrap();\n}\n\n/**\n * Render an element with all it's children as HTML block.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockHtml (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.startNoWrap();\n builder.addLiteral(\n render(elem, { decodeEntities: builder.options.decodeEntities })\n );\n builder.stopNoWrap();\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Render inline element wrapped with given strings.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineSurround (elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.prefix || '');\n walk(elem.children, builder);\n builder.addLiteral(formatOptions.suffix || '');\n}\n\nvar genericFormatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n block: formatBlock$1,\n blockHtml: formatBlockHtml,\n blockString: formatBlockString,\n blockTag: formatBlockTag,\n inline: formatInline,\n inlineHtml: formatInlineHtml,\n inlineString: formatInlineString,\n inlineSurround: formatInlineSurround,\n inlineTag: formatInlineTag,\n skip: formatSkip\n});\n\nfunction getRow (matrix, j) {\n if (!matrix[j]) { matrix[j] = []; }\n return matrix[j];\n}\n\nfunction findFirstVacantIndex (row, x = 0) {\n while (row[x]) { x++; }\n return x;\n}\n\nfunction transposeInPlace (matrix, maxSize) {\n for (let i = 0; i < maxSize; i++) {\n const rowI = getRow(matrix, i);\n for (let j = 0; j < i; j++) {\n const rowJ = getRow(matrix, j);\n if (rowI[j] || rowJ[i]) {\n const temp = rowI[j];\n rowI[j] = rowJ[i];\n rowJ[i] = temp;\n }\n }\n }\n}\n\nfunction putCellIntoLayout (cell, layout, baseRow, baseCol) {\n for (let r = 0; r < cell.rowspan; r++) {\n const layoutRow = getRow(layout, baseRow + r);\n for (let c = 0; c < cell.colspan; c++) {\n layoutRow[baseCol + c] = cell;\n }\n }\n}\n\nfunction getOrInitOffset (offsets, index) {\n if (offsets[index] === undefined) {\n offsets[index] = (index === 0) ? 0 : 1 + getOrInitOffset(offsets, index - 1);\n }\n return offsets[index];\n}\n\nfunction updateOffset (offsets, base, span, value) {\n offsets[base + span] = Math.max(\n getOrInitOffset(offsets, base + span),\n getOrInitOffset(offsets, base) + value\n );\n}\n\n/**\n * Render a table into a string.\n * Cells can contain multiline text and span across multiple rows and columns.\n *\n * Modifies cells to add lines array.\n *\n * @param { TablePrinterCell[][] } tableRows Table to render.\n * @param { number } rowSpacing Number of spaces between columns.\n * @param { number } colSpacing Number of empty lines between rows.\n * @returns { string }\n */\nfunction tableToString (tableRows, rowSpacing, colSpacing) {\n const layout = [];\n let colNumber = 0;\n const rowNumber = tableRows.length;\n const rowOffsets = [0];\n // Fill the layout table and row offsets row-by-row.\n for (let j = 0; j < rowNumber; j++) {\n const layoutRow = getRow(layout, j);\n const cells = tableRows[j];\n let x = 0;\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i];\n x = findFirstVacantIndex(layoutRow, x);\n putCellIntoLayout(cell, layout, j, x);\n x += cell.colspan;\n cell.lines = cell.text.split('\\n');\n const cellHeight = cell.lines.length;\n updateOffset(rowOffsets, j, cell.rowspan, cellHeight + rowSpacing);\n }\n colNumber = (layoutRow.length > colNumber) ? layoutRow.length : colNumber;\n }\n\n transposeInPlace(layout, (rowNumber > colNumber) ? rowNumber : colNumber);\n\n const outputLines = [];\n const colOffsets = [0];\n // Fill column offsets and output lines column-by-column.\n for (let x = 0; x < colNumber; x++) {\n let y = 0;\n let cell;\n const rowsInThisColumn = Math.min(rowNumber, layout[x].length);\n while (y < rowsInThisColumn) {\n cell = layout[x][y];\n if (cell) {\n if (!cell.rendered) {\n let cellWidth = 0;\n for (let j = 0; j < cell.lines.length; j++) {\n const line = cell.lines[j];\n const lineOffset = rowOffsets[y] + j;\n outputLines[lineOffset] = (outputLines[lineOffset] || '').padEnd(colOffsets[x]) + line;\n cellWidth = (line.length > cellWidth) ? line.length : cellWidth;\n }\n updateOffset(colOffsets, x, cell.colspan, cellWidth + colSpacing);\n cell.rendered = true;\n }\n y += cell.rowspan;\n } else {\n const lineOffset = rowOffsets[y];\n outputLines[lineOffset] = (outputLines[lineOffset] || '');\n y++;\n }\n }\n }\n\n return outputLines.join('\\n');\n}\n\n/**\n * Process a line-break.\n *\n * @type { FormatCallback }\n */\nfunction formatLineBreak (elem, walk, builder, formatOptions) {\n builder.addLineBreak();\n}\n\n/**\n * Process a `wbr` tag (word break opportunity).\n *\n * @type { FormatCallback }\n */\nfunction formatWbr (elem, walk, builder, formatOptions) {\n builder.addWordBreakOpportunity();\n}\n\n/**\n * Process a horizontal line.\n *\n * @type { FormatCallback }\n */\nfunction formatHorizontalLine (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.addInline('-'.repeat(formatOptions.length || builder.options.wordwrap || 40));\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a paragraph.\n *\n * @type { FormatCallback }\n */\nfunction formatParagraph (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a preformatted content.\n *\n * @type { FormatCallback }\n */\nfunction formatPre (elem, walk, builder, formatOptions) {\n builder.openBlock({\n isPre: true,\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a heading.\n *\n * @type { FormatCallback }\n */\nfunction formatHeading (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n if (formatOptions.uppercase !== false) {\n builder.pushWordTransform(str => str.toUpperCase());\n walk(elem.children, builder);\n builder.popWordTransform();\n } else {\n walk(elem.children, builder);\n }\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a blockquote.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockquote (elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2,\n reservedLineLength: 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2,\n blockTransform: str => ((formatOptions.trimEmptyLines !== false) ? trimCharacter(str, '\\n') : str)\n .split('\\n')\n .map(line => '> ' + line)\n .join('\\n')\n });\n}\n\nfunction withBrackets (str, brackets) {\n if (!brackets) { return str; }\n\n const lbr = (typeof brackets[0] === 'string')\n ? brackets[0]\n : '[';\n const rbr = (typeof brackets[1] === 'string')\n ? brackets[1]\n : ']';\n return lbr + str + rbr;\n}\n\nfunction pathRewrite (path, rewriter, baseUrl, metadata, elem) {\n const modifiedPath = (typeof rewriter === 'function')\n ? rewriter(path, metadata, elem)\n : path;\n return (modifiedPath[0] === '/' && baseUrl)\n ? trimCharacterEnd(baseUrl, '/') + modifiedPath\n : modifiedPath;\n}\n\n/**\n * Process an image.\n *\n * @type { FormatCallback }\n */\nfunction formatImage (elem, walk, builder, formatOptions) {\n const attribs = elem.attribs || {};\n const alt = (attribs.alt)\n ? attribs.alt\n : '';\n const src = (!attribs.src)\n ? ''\n : pathRewrite(attribs.src, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n const text = (!src)\n ? alt\n : (!alt)\n ? withBrackets(src, formatOptions.linkBrackets)\n : alt + ' ' + withBrackets(src, formatOptions.linkBrackets);\n\n builder.addInline(text, { noWordTransform: true });\n}\n\n// a img baseUrl\n// a img pathRewrite\n// a img linkBrackets\n\n// a ignoreHref: false\n// ignoreText ?\n// a noAnchorUrl: true\n// can be replaced with selector\n// a hideLinkHrefIfSameAsText: false\n// how to compare, what to show (text, href, normalized) ?\n// a mailto protocol removed without options\n\n// a protocols: mailto, tel, ...\n// can be matched with selector?\n\n// anchors, protocols - only if no pathRewrite fn is provided\n\n// normalize-url ?\n\n// a\n// a[href^=\"#\"] - format:skip by default\n// a[href^=\"mailto:\"] - ?\n\n/**\n * Process an anchor.\n *\n * @type { FormatCallback }\n */\nfunction formatAnchor (elem, walk, builder, formatOptions) {\n function getHref () {\n if (formatOptions.ignoreHref) { return ''; }\n if (!elem.attribs || !elem.attribs.href) { return ''; }\n let href = elem.attribs.href.replace(/^mailto:/, '');\n if (formatOptions.noAnchorUrl && href[0] === '#') { return ''; }\n href = pathRewrite(href, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n return href;\n }\n const href = getHref();\n if (!href) {\n walk(elem.children, builder);\n } else {\n let text = '';\n builder.pushWordTransform(\n str => {\n if (str) { text += str; }\n return str;\n }\n );\n walk(elem.children, builder);\n builder.popWordTransform();\n\n const hideSameLink = formatOptions.hideLinkHrefIfSameAsText && href === text;\n if (!hideSameLink) {\n builder.addInline(\n (!text)\n ? href\n : ' ' + withBrackets(href, formatOptions.linkBrackets),\n { noWordTransform: true }\n );\n }\n }\n}\n\n/**\n * @param { DomNode } elem List items with their prefixes.\n * @param { RecursiveCallback } walk Recursive callback to process child nodes.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @param { FormatOptions } formatOptions Options specific to a formatter.\n * @param { () => string } nextPrefixCallback Function that returns increasing index each time it is called.\n */\nfunction formatList (elem, walk, builder, formatOptions, nextPrefixCallback) {\n const isNestedList = get(elem, ['parent', 'name']) === 'li';\n\n // With Roman numbers, index length is not as straightforward as with Arabic numbers or letters,\n // so the dumb length comparison is the most robust way to get the correct value.\n let maxPrefixLength = 0;\n const listItems = (elem.children || [])\n // it might be more accurate to check only for html spaces here, but no significant benefit\n .filter(child => child.type !== 'text' || !/^\\s*$/.test(child.data))\n .map(function (child) {\n if (child.name !== 'li') {\n return { node: child, prefix: '' };\n }\n const prefix = (isNestedList)\n ? nextPrefixCallback().trimStart()\n : nextPrefixCallback();\n if (prefix.length > maxPrefixLength) { maxPrefixLength = prefix.length; }\n return { node: child, prefix: prefix };\n });\n if (!listItems.length) { return; }\n\n builder.openList({\n interRowLineBreaks: 1,\n leadingLineBreaks: isNestedList ? 1 : (formatOptions.leadingLineBreaks || 2),\n maxPrefixLength: maxPrefixLength,\n prefixAlign: 'left'\n });\n\n for (const { node, prefix } of listItems) {\n builder.openListItem({ prefix: prefix });\n walk([node], builder);\n builder.closeListItem();\n }\n\n builder.closeList({ trailingLineBreaks: isNestedList ? 1 : (formatOptions.trailingLineBreaks || 2) });\n}\n\n/**\n * Process an unordered list.\n *\n * @type { FormatCallback }\n */\nfunction formatUnorderedList (elem, walk, builder, formatOptions) {\n const prefix = formatOptions.itemPrefix || ' * ';\n return formatList(elem, walk, builder, formatOptions, () => prefix);\n}\n\n/**\n * Process an ordered list.\n *\n * @type { FormatCallback }\n */\nfunction formatOrderedList (elem, walk, builder, formatOptions) {\n let nextIndex = Number(elem.attribs.start || '1');\n const indexFunction = getOrderedListIndexFunction(elem.attribs.type);\n const nextPrefixCallback = () => ' ' + indexFunction(nextIndex++) + '. ';\n return formatList(elem, walk, builder, formatOptions, nextPrefixCallback);\n}\n\n/**\n * Return a function that can be used to generate index markers of a specified format.\n *\n * @param { string } [olType='1'] Marker type.\n * @returns { (i: number) => string }\n */\nfunction getOrderedListIndexFunction (olType = '1') {\n switch (olType) {\n case 'a': return (i) => numberToLetterSequence(i, 'a');\n case 'A': return (i) => numberToLetterSequence(i, 'A');\n case 'i': return (i) => numberToRoman(i).toLowerCase();\n case 'I': return (i) => numberToRoman(i);\n case '1':\n default: return (i) => (i).toString();\n }\n}\n\n/**\n * Given a list of class and ID selectors (prefixed with '.' and '#'),\n * return them as separate lists of names without prefixes.\n *\n * @param { string[] } selectors Class and ID selectors (`[\".class\", \"#id\"]` etc).\n * @returns { { classes: string[], ids: string[] } }\n */\nfunction splitClassesAndIds (selectors) {\n const classes = [];\n const ids = [];\n for (const selector of selectors) {\n if (selector.startsWith('.')) {\n classes.push(selector.substring(1));\n } else if (selector.startsWith('#')) {\n ids.push(selector.substring(1));\n }\n }\n return { classes: classes, ids: ids };\n}\n\nfunction isDataTable (attr, tables) {\n if (tables === true) { return true; }\n if (!attr) { return false; }\n\n const { classes, ids } = splitClassesAndIds(tables);\n const attrClasses = (attr['class'] || '').split(' ');\n const attrIds = (attr['id'] || '').split(' ');\n\n return attrClasses.some(x => classes.includes(x)) || attrIds.some(x => ids.includes(x));\n}\n\n/**\n * Process a table (either as a container or as a data table, depending on options).\n *\n * @type { FormatCallback }\n */\nfunction formatTable (elem, walk, builder, formatOptions) {\n return isDataTable(elem.attribs, builder.options.tables)\n ? formatDataTable(elem, walk, builder, formatOptions)\n : formatBlock(elem, walk, builder, formatOptions);\n}\n\nfunction formatBlock (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks });\n}\n\n/**\n * Process a data table.\n *\n * @type { FormatCallback }\n */\nfunction formatDataTable (elem, walk, builder, formatOptions) {\n builder.openTable();\n elem.children.forEach(walkTable);\n builder.closeTable({\n tableToString: (rows) => tableToString(rows, formatOptions.rowSpacing ?? 0, formatOptions.colSpacing ?? 3),\n leadingLineBreaks: formatOptions.leadingLineBreaks,\n trailingLineBreaks: formatOptions.trailingLineBreaks\n });\n\n function formatCell (cellNode) {\n const colspan = +get(cellNode, ['attribs', 'colspan']) || 1;\n const rowspan = +get(cellNode, ['attribs', 'rowspan']) || 1;\n builder.openTableCell({ maxColumnWidth: formatOptions.maxColumnWidth });\n walk(cellNode.children, builder);\n builder.closeTableCell({ colspan: colspan, rowspan: rowspan });\n }\n\n function walkTable (elem) {\n if (elem.type !== 'tag') { return; }\n\n const formatHeaderCell = (formatOptions.uppercaseHeaderCells !== false)\n ? (cellNode) => {\n builder.pushWordTransform(str => str.toUpperCase());\n formatCell(cellNode);\n builder.popWordTransform();\n }\n : formatCell;\n\n switch (elem.name) {\n case 'thead':\n case 'tbody':\n case 'tfoot':\n case 'center':\n elem.children.forEach(walkTable);\n return;\n\n case 'tr': {\n builder.openTableRow();\n for (const childOfTr of elem.children) {\n if (childOfTr.type !== 'tag') { continue; }\n switch (childOfTr.name) {\n case 'th': {\n formatHeaderCell(childOfTr);\n break;\n }\n case 'td': {\n formatCell(childOfTr);\n break;\n }\n // do nothing\n }\n }\n builder.closeTableRow();\n break;\n }\n // do nothing\n }\n }\n}\n\nvar textFormatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n anchor: formatAnchor,\n blockquote: formatBlockquote,\n dataTable: formatDataTable,\n heading: formatHeading,\n horizontalLine: formatHorizontalLine,\n image: formatImage,\n lineBreak: formatLineBreak,\n orderedList: formatOrderedList,\n paragraph: formatParagraph,\n pre: formatPre,\n table: formatTable,\n unorderedList: formatUnorderedList,\n wbr: formatWbr\n});\n\n/**\n * Default options.\n *\n * @constant\n * @type { Options }\n * @default\n * @private\n */\nconst DEFAULT_OPTIONS = {\n baseElements: {\n selectors: [ 'body' ],\n orderBy: 'selectors', // 'selectors' | 'occurrence'\n returnDomByDefault: true\n },\n decodeEntities: true,\n encodeCharacters: {},\n formatters: {},\n limits: {\n ellipsis: '...',\n maxBaseElements: undefined,\n maxChildNodes: undefined,\n maxDepth: undefined,\n maxInputLength: (1 << 24) // 16_777_216\n },\n longWordSplit: {\n forceWrapOnLimit: false,\n wrapCharacters: []\n },\n preserveNewlines: false,\n selectors: [\n { selector: '*', format: 'inline' },\n {\n selector: 'a',\n format: 'anchor',\n options: {\n baseUrl: null,\n hideLinkHrefIfSameAsText: false,\n ignoreHref: false,\n linkBrackets: ['[', ']'],\n noAnchorUrl: true\n }\n },\n { selector: 'article', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'aside', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'blockquote',\n format: 'blockquote',\n options: { leadingLineBreaks: 2, trailingLineBreaks: 2, trimEmptyLines: true }\n },\n { selector: 'br', format: 'lineBreak' },\n { selector: 'div', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'footer', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'form', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'h1', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h2', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h3', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h4', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h5', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h6', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'header', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'hr',\n format: 'horizontalLine',\n options: { leadingLineBreaks: 2, length: undefined, trailingLineBreaks: 2 }\n },\n {\n selector: 'img',\n format: 'image',\n options: { baseUrl: null, linkBrackets: ['[', ']'] }\n },\n { selector: 'main', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'nav', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'ol',\n format: 'orderedList',\n options: { leadingLineBreaks: 2, trailingLineBreaks: 2 }\n },\n { selector: 'p', format: 'paragraph', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'pre', format: 'pre', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'section', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'table',\n format: 'table',\n options: {\n colSpacing: 3,\n leadingLineBreaks: 2,\n maxColumnWidth: 60,\n rowSpacing: 0,\n trailingLineBreaks: 2,\n uppercaseHeaderCells: true\n }\n },\n {\n selector: 'ul',\n format: 'unorderedList',\n options: { itemPrefix: ' * ', leadingLineBreaks: 2, trailingLineBreaks: 2 }\n },\n { selector: 'wbr', format: 'wbr' },\n ],\n tables: [], // deprecated\n whitespaceCharacters: ' \\t\\r\\n\\f\\u200b',\n wordwrap: 80\n};\n\nconst concatMerge = (acc, src, options) => [...acc, ...src];\nconst overwriteMerge = (acc, src, options) => [...src];\nconst selectorsMerge = (acc, src, options) => (\n (acc.some(s => typeof s === 'object'))\n ? concatMerge(acc, src) // selectors\n : overwriteMerge(acc, src) // baseElements.selectors\n);\n\n/**\n * Preprocess options, compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options.\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */\nfunction compile (options = {}) {\n options = merge(\n DEFAULT_OPTIONS,\n options,\n {\n arrayMerge: overwriteMerge,\n customMerge: (key) => ((key === 'selectors') ? selectorsMerge : undefined)\n }\n );\n options.formatters = Object.assign({}, genericFormatters, textFormatters, options.formatters);\n options.selectors = mergeDuplicatesPreferLast(options.selectors, (s => s.selector));\n\n handleDeprecatedOptions(options);\n\n return compile$1(options);\n}\n\n/**\n * Convert given HTML content to plain text string.\n *\n * @param { string } html HTML content to convert.\n * @param { Options } [options = {}] HtmlToText options.\n * @param { any } [metadata] Optional metadata for HTML document, for use in formatters.\n * @returns { string } Plain text string.\n * @static\n *\n * @example\n * const { convert } = require('html-to-text');\n * const text = convert('Hello World ', {\n * wordwrap: 130\n * });\n * console.log(text); // HELLO WORLD\n */\nfunction convert (html, options = {}, metadata = undefined) {\n return compile(options)(html, metadata);\n}\n\n/**\n * Map previously existing and now deprecated options to the new options layout.\n * This is a subject for cleanup in major releases.\n *\n * @param { Options } options HtmlToText options.\n */\nfunction handleDeprecatedOptions (options) {\n if (options.tags) {\n const tagDefinitions = Object.entries(options.tags).map(\n ([selector, definition]) => ({ ...definition, selector: selector || '*' })\n );\n options.selectors.push(...tagDefinitions);\n options.selectors = mergeDuplicatesPreferLast(options.selectors, (s => s.selector));\n }\n\n function set (obj, path, value) {\n const valueKey = path.pop();\n for (const key of path) {\n let nested = obj[key];\n if (!nested) {\n nested = {};\n obj[key] = nested;\n }\n obj = nested;\n }\n obj[valueKey] = value;\n }\n\n if (options['baseElement']) {\n const baseElement = options['baseElement'];\n set(\n options,\n ['baseElements', 'selectors'],\n (Array.isArray(baseElement) ? baseElement : [baseElement])\n );\n }\n if (options['returnDomByDefault'] !== undefined) {\n set(options, ['baseElements', 'returnDomByDefault'], options['returnDomByDefault']);\n }\n\n for (const definition of options.selectors) {\n if (definition.format === 'anchor' && get(definition, ['options', 'noLinkBrackets'])) {\n set(definition, ['options', 'linkBrackets'], false);\n }\n }\n}\n\nexport { compile, convert, convert as htmlToText };\n","import { isTag } from 'domhandler';\nimport { Picker } from 'selderee';\n\nfunction hp2Builder(nodes) {\n return new Picker(handleArray(nodes));\n}\nfunction handleArray(nodes) {\n const matchers = nodes.map(handleNode);\n return (el, ...tail) => matchers.flatMap(m => m(el, ...tail));\n}\nfunction handleNode(node) {\n switch (node.type) {\n case 'terminal': {\n const result = [node.valueContainer];\n return (el, ...tail) => result;\n }\n case 'tagName':\n return handleTagName(node);\n case 'attrValue':\n return handleAttrValueName(node);\n case 'attrPresence':\n return handleAttrPresenceName(node);\n case 'pushElement':\n return handlePushElementNode(node);\n case 'popElement':\n return handlePopElementNode(node);\n }\n}\nfunction handleTagName(node) {\n const variants = {};\n for (const variant of node.variants) {\n variants[variant.value] = handleArray(variant.cont);\n }\n return (el, ...tail) => {\n const continuation = variants[el.name];\n return (continuation) ? continuation(el, ...tail) : [];\n };\n}\nfunction handleAttrPresenceName(node) {\n const attrName = node.name;\n const continuation = handleArray(node.cont);\n return (el, ...tail) => (Object.prototype.hasOwnProperty.call(el.attribs, attrName))\n ? continuation(el, ...tail)\n : [];\n}\nfunction handleAttrValueName(node) {\n const callbacks = [];\n for (const matcher of node.matchers) {\n const predicate = matcher.predicate;\n const continuation = handleArray(matcher.cont);\n callbacks.push((attr, el, ...tail) => (predicate(attr) ? continuation(el, ...tail) : []));\n }\n const attrName = node.name;\n return (el, ...tail) => {\n const attr = el.attribs[attrName];\n return (attr || attr === '')\n ? callbacks.flatMap(cb => cb(attr, el, ...tail))\n : [];\n };\n}\nfunction handlePushElementNode(node) {\n const continuation = handleArray(node.cont);\n const leftElementGetter = (node.combinator === '+')\n ? getPrecedingElement\n : getParentElement;\n return (el, ...tail) => {\n const next = leftElementGetter(el);\n if (next === null) {\n return [];\n }\n return continuation(next, el, ...tail);\n };\n}\nconst getPrecedingElement = (el) => {\n const prev = el.prev;\n if (prev === null) {\n return null;\n }\n return (isTag(prev)) ? prev : getPrecedingElement(prev);\n};\nconst getParentElement = (el) => {\n const parent = el.parent;\n return (parent && isTag(parent)) ? parent : null;\n};\nfunction handlePopElementNode(node) {\n const continuation = handleArray(node.cont);\n return (el, next, ...tail) => continuation(next, ...tail);\n}\n\nexport { hp2Builder };\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for `.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this.state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? State.BeforeSpecialS\n : State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeEntity(c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === CharCodes.Number) {\n this.state = State.BeforeNumericEntity;\n }\n else if (c === CharCodes.Amp) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n }\n stateInNamedEntity(c) {\n this.entityExcess += 1;\n this.trieIndex = determineBranch(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n const masked = this.trieCurrent & BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {\n this.trieIndex += valueLength;\n }\n else {\n // Add 1 as we have already incremented the excess\n const entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) {\n this.emitNamedEntity();\n }\n }\n }\n }\n emitNamedEntity() {\n this.state = this.baseState;\n if (this.entityResult === 0) {\n return;\n }\n const valueLength = (this.entityTrie[this.entityResult] & BinTrieFlags.VALUE_LENGTH) >>\n 14;\n switch (valueLength) {\n case 1: {\n this.emitCodePoint(this.entityTrie[this.entityResult] &\n ~BinTrieFlags.VALUE_LENGTH);\n break;\n }\n case 2: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n }\n case 3: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n }\n stateBeforeNumericEntity(c) {\n if ((c | 0x20) === CharCodes.LowerX) {\n this.entityExcess++;\n this.state = State.InHexEntity;\n }\n else {\n this.state = State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n }\n emitNumericEntity(strict) {\n const entityStart = this.index - this.entityExcess - 1;\n const numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint(replaceCodePoint(this.entityResult));\n }\n this.state = this.baseState;\n }\n stateInNumericEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n stateInHexEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else if (isHexDigit(c)) {\n this.entityResult =\n this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n allowLegacyEntity() {\n return (!this.xmlMode &&\n (this.baseState === State.Text ||\n this.baseState === State.InSpecialTag));\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InNamedEntity: {\n this.stateInNamedEntity(c);\n break;\n }\n case State.BeforeEntity: {\n this.stateBeforeEntity(c);\n break;\n }\n case State.InHexEntity: {\n this.stateInHexEntity(c);\n break;\n }\n case State.InNumericEntity: {\n this.stateInNumericEntity(c);\n break;\n }\n default: {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InNamedEntity) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InNumericEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InHexEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitPartial(start, endIndex) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribdata(start, endIndex);\n }\n else {\n this.cbs.ontext(start, endIndex);\n }\n }\n emitCodePoint(cp) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribentity(cp);\n }\n else {\n this.cbs.ontextentity(cp);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map",null,"\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;\nvar decode_data_html_js_1 = __importDefault(require(\"./generated/decode-data-html.js\"));\nexports.htmlDecodeTree = decode_data_html_js_1.default;\nvar decode_data_xml_js_1 = __importDefault(require(\"./generated/decode-data-xml.js\"));\nexports.xmlDecodeTree = decode_data_xml_js_1.default;\nvar decode_codepoint_js_1 = __importStar(require(\"./decode_codepoint.js\"));\nexports.decodeCodePoint = decode_codepoint_js_1.default;\nvar decode_codepoint_js_2 = require(\"./decode_codepoint.js\");\nObject.defineProperty(exports, \"replaceCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } });\nObject.defineProperty(exports, \"fromCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } });\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nvar TO_LOWER_BIT = 32;\nvar BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nvar DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nvar EntityDecoder = /** @class */ (function () {\n function EntityDecoder(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n EntityDecoder.prototype.startEntity = function (decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n };\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.write = function (str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n };\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericStart = function (str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n };\n EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) {\n if (start !== end) {\n var digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n };\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericHex = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n };\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericDecimal = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n };\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n };\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNamedEntity = function (str, offset) {\n var decodeTree = this.decodeTree;\n var current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n var char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n };\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () {\n var _a;\n var _b = this, result = _b.result, decodeTree = _b.decodeTree;\n var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n };\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) {\n var decodeTree = this.decodeTree;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n };\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.end = function () {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n };\n return EntityDecoder;\n}());\nexports.EntityDecoder = EntityDecoder;\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n var ret = \"\";\n var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); });\n return function decodeWithTrie(str, decodeMode) {\n var lastIndex = 0;\n var offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n var len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n var result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nfunction determineBranch(decodeTree, current, nodeIdx, char) {\n var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n var jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n var value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n var lo = nodeIdx;\n var hi = lo + branchCount - 1;\n while (lo <= hi) {\n var mid = (lo + hi) >>> 1;\n var midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nexports.determineBranch = determineBranch;\nvar htmlDecoder = getDecoder(decode_data_html_js_1.default);\nvar xmlDecoder = getDecoder(decode_data_xml_js_1.default);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nfunction decodeHTML(str, mode) {\n if (mode === void 0) { mode = DecodingMode.Legacy; }\n return htmlDecoder(str, mode);\n}\nexports.decodeHTML = decodeHTML;\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\nexports.decodeHTMLAttribute = decodeHTMLAttribute;\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeHTMLStrict = decodeHTMLStrict;\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeXML = decodeXML;\n//# sourceMappingURL=decode.js.map",null,"import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n",null,"import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for ` ` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `