@readme/markdown 13.7.0 → 13.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -11366,6 +11366,7 @@ __webpack_require__.r(__webpack_exports__);
11366
11366
  __webpack_require__.d(__webpack_exports__, {
11367
11367
  Components: () => (/* reexport */ components_namespaceObject),
11368
11368
  FLOW_TYPES: () => (/* reexport */ FLOW_TYPES),
11369
+ NodeTypes: () => (/* reexport */ NodeTypes),
11369
11370
  Owlmoji: () => (/* reexport */ Owlmoji),
11370
11371
  compile: () => (/* reexport */ lib_compile),
11371
11372
  exports: () => (/* reexport */ lib_exports),
@@ -12308,10 +12309,19 @@ const TailwindStyle = ({ children, darkModeDataAttribute }) => {
12308
12309
  records.forEach(record => {
12309
12310
  if (record.type === 'childList') {
12310
12311
  record.addedNodes.forEach(node => {
12311
- if (!(node instanceof HTMLElement) || !node.classList.contains(tailwindPrefix))
12312
+ if (!(node instanceof HTMLElement))
12312
12313
  return;
12313
- traverse(node, addClasses);
12314
- shouldUpdate = true;
12314
+ // Check the added node itself
12315
+ if (node.classList.contains(tailwindPrefix)) {
12316
+ traverse(node, addClasses);
12317
+ shouldUpdate = true;
12318
+ }
12319
+ // Also check descendants — React may insert a parent node
12320
+ // whose children contain TailwindRoot elements
12321
+ node.querySelectorAll(`.${tailwindPrefix}`).forEach(child => {
12322
+ traverse(child, addClasses);
12323
+ shouldUpdate = true;
12324
+ });
12315
12325
  });
12316
12326
  }
12317
12327
  else if (record.type === 'attributes') {
@@ -43553,7 +43563,6 @@ var CODE_POINTS;
43553
43563
  CODE_POINTS[CODE_POINTS["SPACE"] = 32] = "SPACE";
43554
43564
  CODE_POINTS[CODE_POINTS["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK";
43555
43565
  CODE_POINTS[CODE_POINTS["QUOTATION_MARK"] = 34] = "QUOTATION_MARK";
43556
- CODE_POINTS[CODE_POINTS["NUMBER_SIGN"] = 35] = "NUMBER_SIGN";
43557
43566
  CODE_POINTS[CODE_POINTS["AMPERSAND"] = 38] = "AMPERSAND";
43558
43567
  CODE_POINTS[CODE_POINTS["APOSTROPHE"] = 39] = "APOSTROPHE";
43559
43568
  CODE_POINTS[CODE_POINTS["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS";
@@ -43566,17 +43575,12 @@ var CODE_POINTS;
43566
43575
  CODE_POINTS[CODE_POINTS["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN";
43567
43576
  CODE_POINTS[CODE_POINTS["QUESTION_MARK"] = 63] = "QUESTION_MARK";
43568
43577
  CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A";
43569
- CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_F"] = 70] = "LATIN_CAPITAL_F";
43570
- CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_X"] = 88] = "LATIN_CAPITAL_X";
43571
43578
  CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z";
43572
43579
  CODE_POINTS[CODE_POINTS["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET";
43573
43580
  CODE_POINTS[CODE_POINTS["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT";
43574
43581
  CODE_POINTS[CODE_POINTS["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A";
43575
- CODE_POINTS[CODE_POINTS["LATIN_SMALL_F"] = 102] = "LATIN_SMALL_F";
43576
- CODE_POINTS[CODE_POINTS["LATIN_SMALL_X"] = 120] = "LATIN_SMALL_X";
43577
43582
  CODE_POINTS[CODE_POINTS["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z";
43578
- CODE_POINTS[CODE_POINTS["REPLACEMENT_CHARACTER"] = 65533] = "REPLACEMENT_CHARACTER";
43579
- })(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));
43583
+ })(CODE_POINTS || (CODE_POINTS = {}));
43580
43584
  const SEQUENCES = {
43581
43585
  DASH_DASH: '--',
43582
43586
  CDATA_START: '[CDATA[',
@@ -43603,7 +43607,7 @@ function isControlCodePoint(cp) {
43603
43607
  function isUndefinedCodePoint(cp) {
43604
43608
  return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);
43605
43609
  }
43606
- //# sourceMappingURL=unicode.js.map
43610
+
43607
43611
  ;// ./node_modules/parse5/dist/common/error-codes.js
43608
43612
  var ERR;
43609
43613
  (function (ERR) {
@@ -43667,8 +43671,8 @@ var ERR;
43667
43671
  ERR["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element";
43668
43672
  ERR["nestedNoscriptInHead"] = "nested-noscript-in-head";
43669
43673
  ERR["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text";
43670
- })(ERR = ERR || (ERR = {}));
43671
- //# sourceMappingURL=error-codes.js.map
43674
+ })(ERR || (ERR = {}));
43675
+
43672
43676
  ;// ./node_modules/parse5/dist/tokenizer/preprocessor.js
43673
43677
 
43674
43678
 
@@ -43703,22 +43707,24 @@ class Preprocessor {
43703
43707
  get offset() {
43704
43708
  return this.droppedBufferSize + this.pos;
43705
43709
  }
43706
- getError(code) {
43710
+ getError(code, cpOffset) {
43707
43711
  const { line, col, offset } = this;
43712
+ const startCol = col + cpOffset;
43713
+ const startOffset = offset + cpOffset;
43708
43714
  return {
43709
43715
  code,
43710
43716
  startLine: line,
43711
43717
  endLine: line,
43712
- startCol: col,
43713
- endCol: col,
43714
- startOffset: offset,
43715
- endOffset: offset,
43718
+ startCol,
43719
+ endCol: startCol,
43720
+ startOffset,
43721
+ endOffset: startOffset,
43716
43722
  };
43717
43723
  }
43718
43724
  _err(code) {
43719
43725
  if (this.handler.onParseError && this.lastErrOffset !== this.offset) {
43720
43726
  this.lastErrOffset = this.offset;
43721
- this.handler.onParseError(this.getError(code));
43727
+ this.handler.onParseError(this.getError(code, 0));
43722
43728
  }
43723
43729
  }
43724
43730
  _addGap() {
@@ -43864,7 +43870,7 @@ class Preprocessor {
43864
43870
  this.isEol = false;
43865
43871
  }
43866
43872
  }
43867
- //# sourceMappingURL=preprocessor.js.map
43873
+
43868
43874
  ;// ./node_modules/parse5/dist/common/token.js
43869
43875
  var TokenType;
43870
43876
  (function (TokenType) {
@@ -43877,7 +43883,7 @@ var TokenType;
43877
43883
  TokenType[TokenType["DOCTYPE"] = 6] = "DOCTYPE";
43878
43884
  TokenType[TokenType["EOF"] = 7] = "EOF";
43879
43885
  TokenType[TokenType["HIBERNATION"] = 8] = "HIBERNATION";
43880
- })(TokenType = TokenType || (TokenType = {}));
43886
+ })(TokenType || (TokenType = {}));
43881
43887
  function getTokenAttr(token, attrName) {
43882
43888
  for (let i = token.attrs.length - 1; i >= 0; i--) {
43883
43889
  if (token.attrs[i].name === attrName) {
@@ -43886,24 +43892,24 @@ function getTokenAttr(token, attrName) {
43886
43892
  }
43887
43893
  return null;
43888
43894
  }
43889
- //# sourceMappingURL=token.js.map
43890
- ;// ./node_modules/entities/lib/esm/generated/decode-data-html.js
43895
+
43896
+ ;// ./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js
43891
43897
  // Generated using scripts/write-decode-map.ts
43892
- /* harmony default export */ const decode_data_html = (new Uint16Array(
43898
+ const decode_data_html_htmlDecodeTree = /* #__PURE__ */ new Uint16Array(
43893
43899
  // prettier-ignore
43894
- "\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"
43900
+ /* #__PURE__ */ "\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"
43895
43901
  .split("")
43896
- .map((c) => c.charCodeAt(0))));
43902
+ .map((c) => c.charCodeAt(0)));
43897
43903
  //# sourceMappingURL=decode-data-html.js.map
43898
- ;// ./node_modules/entities/lib/esm/generated/decode-data-xml.js
43904
+ ;// ./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.js
43899
43905
  // Generated using scripts/write-decode-map.ts
43900
- /* harmony default export */ const decode_data_xml = (new Uint16Array(
43906
+ const decode_data_xml_xmlDecodeTree = /* #__PURE__ */ new Uint16Array(
43901
43907
  // prettier-ignore
43902
- "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
43908
+ /* #__PURE__ */ "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
43903
43909
  .split("")
43904
- .map((c) => c.charCodeAt(0))));
43910
+ .map((c) => c.charCodeAt(0)));
43905
43911
  //# sourceMappingURL=decode-data-xml.js.map
43906
- ;// ./node_modules/entities/lib/esm/decode_codepoint.js
43912
+ ;// ./node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js
43907
43913
  // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
43908
43914
  var decode_codepoint_a;
43909
43915
  const decodeMap = new Map([
@@ -43940,14 +43946,14 @@ const decodeMap = new Map([
43940
43946
  /**
43941
43947
  * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
43942
43948
  */
43943
- const fromCodePoint =
43944
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
43949
+ const decode_codepoint_fromCodePoint =
43950
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
43945
43951
  (decode_codepoint_a = String.fromCodePoint) !== null && decode_codepoint_a !== void 0 ? decode_codepoint_a : function (codePoint) {
43946
43952
  let output = "";
43947
- if (codePoint > 0xffff) {
43948
- codePoint -= 0x10000;
43949
- output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
43950
- codePoint = 0xdc00 | (codePoint & 0x3ff);
43953
+ if (codePoint > 65535) {
43954
+ codePoint -= 65536;
43955
+ output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
43956
+ codePoint = 56320 | (codePoint & 1023);
43951
43957
  }
43952
43958
  output += String.fromCharCode(codePoint);
43953
43959
  return output;
@@ -43959,8 +43965,9 @@ const fromCodePoint =
43959
43965
  */
43960
43966
  function replaceCodePoint(codePoint) {
43961
43967
  var _a;
43962
- if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
43963
- return 0xfffd;
43968
+ if ((codePoint >= 55296 && codePoint <= 57343) ||
43969
+ codePoint > 1114111) {
43970
+ return 65533;
43964
43971
  }
43965
43972
  return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
43966
43973
  }
@@ -43972,15 +43979,12 @@ function replaceCodePoint(codePoint) {
43972
43979
  * @returns The decoded code point.
43973
43980
  */
43974
43981
  function decodeCodePoint(codePoint) {
43975
- return fromCodePoint(replaceCodePoint(codePoint));
43982
+ return decode_codepoint_fromCodePoint(replaceCodePoint(codePoint));
43976
43983
  }
43977
- //# sourceMappingURL=decode_codepoint.js.map
43978
- ;// ./node_modules/entities/lib/esm/decode.js
43979
-
43984
+ //# sourceMappingURL=decode-codepoint.js.map
43985
+ ;// ./node_modules/parse5/node_modules/entities/dist/esm/decode.js
43980
43986
 
43981
43987
 
43982
- // Re-export for use by eg. htmlparser2
43983
-
43984
43988
 
43985
43989
  var CharCodes;
43986
43990
  (function (CharCodes) {
@@ -43998,7 +44002,7 @@ var CharCodes;
43998
44002
  CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
43999
44003
  })(CharCodes || (CharCodes = {}));
44000
44004
  /** Bit that needs to be set to convert an upper case ASCII character to lower case */
44001
- const TO_LOWER_BIT = 0b100000;
44005
+ const TO_LOWER_BIT = 32;
44002
44006
  var BinTrieFlags;
44003
44007
  (function (BinTrieFlags) {
44004
44008
  BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
@@ -44099,32 +44103,32 @@ class EntityDecoder {
44099
44103
  * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
44100
44104
  * entity is incomplete, and resume when the next string is written.
44101
44105
  *
44102
- * @param string The string containing the entity (or a continuation of the entity).
44106
+ * @param input The string containing the entity (or a continuation of the entity).
44103
44107
  * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
44104
44108
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
44105
44109
  */
44106
- write(str, offset) {
44110
+ write(input, offset) {
44107
44111
  switch (this.state) {
44108
44112
  case EntityDecoderState.EntityStart: {
44109
- if (str.charCodeAt(offset) === CharCodes.NUM) {
44113
+ if (input.charCodeAt(offset) === CharCodes.NUM) {
44110
44114
  this.state = EntityDecoderState.NumericStart;
44111
44115
  this.consumed += 1;
44112
- return this.stateNumericStart(str, offset + 1);
44116
+ return this.stateNumericStart(input, offset + 1);
44113
44117
  }
44114
44118
  this.state = EntityDecoderState.NamedEntity;
44115
- return this.stateNamedEntity(str, offset);
44119
+ return this.stateNamedEntity(input, offset);
44116
44120
  }
44117
44121
  case EntityDecoderState.NumericStart: {
44118
- return this.stateNumericStart(str, offset);
44122
+ return this.stateNumericStart(input, offset);
44119
44123
  }
44120
44124
  case EntityDecoderState.NumericDecimal: {
44121
- return this.stateNumericDecimal(str, offset);
44125
+ return this.stateNumericDecimal(input, offset);
44122
44126
  }
44123
44127
  case EntityDecoderState.NumericHex: {
44124
- return this.stateNumericHex(str, offset);
44128
+ return this.stateNumericHex(input, offset);
44125
44129
  }
44126
44130
  case EntityDecoderState.NamedEntity: {
44127
- return this.stateNamedEntity(str, offset);
44131
+ return this.stateNamedEntity(input, offset);
44128
44132
  }
44129
44133
  }
44130
44134
  }
@@ -44133,28 +44137,28 @@ class EntityDecoder {
44133
44137
  *
44134
44138
  * Equivalent to the `Numeric character reference state` in the HTML spec.
44135
44139
  *
44136
- * @param str The string containing the entity (or a continuation of the entity).
44140
+ * @param input The string containing the entity (or a continuation of the entity).
44137
44141
  * @param offset The current offset.
44138
44142
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
44139
44143
  */
44140
- stateNumericStart(str, offset) {
44141
- if (offset >= str.length) {
44144
+ stateNumericStart(input, offset) {
44145
+ if (offset >= input.length) {
44142
44146
  return -1;
44143
44147
  }
44144
- if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
44148
+ if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
44145
44149
  this.state = EntityDecoderState.NumericHex;
44146
44150
  this.consumed += 1;
44147
- return this.stateNumericHex(str, offset + 1);
44151
+ return this.stateNumericHex(input, offset + 1);
44148
44152
  }
44149
44153
  this.state = EntityDecoderState.NumericDecimal;
44150
- return this.stateNumericDecimal(str, offset);
44154
+ return this.stateNumericDecimal(input, offset);
44151
44155
  }
44152
- addToNumericResult(str, start, end, base) {
44156
+ addToNumericResult(input, start, end, base) {
44153
44157
  if (start !== end) {
44154
44158
  const digitCount = end - start;
44155
44159
  this.result =
44156
44160
  this.result * Math.pow(base, digitCount) +
44157
- parseInt(str.substr(start, digitCount), base);
44161
+ Number.parseInt(input.substr(start, digitCount), base);
44158
44162
  this.consumed += digitCount;
44159
44163
  }
44160
44164
  }
@@ -44163,23 +44167,23 @@ class EntityDecoder {
44163
44167
  *
44164
44168
  * Equivalent to the `Hexademical character reference state` in the HTML spec.
44165
44169
  *
44166
- * @param str The string containing the entity (or a continuation of the entity).
44170
+ * @param input The string containing the entity (or a continuation of the entity).
44167
44171
  * @param offset The current offset.
44168
44172
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
44169
44173
  */
44170
- stateNumericHex(str, offset) {
44171
- const startIdx = offset;
44172
- while (offset < str.length) {
44173
- const char = str.charCodeAt(offset);
44174
+ stateNumericHex(input, offset) {
44175
+ const startIndex = offset;
44176
+ while (offset < input.length) {
44177
+ const char = input.charCodeAt(offset);
44174
44178
  if (isNumber(char) || isHexadecimalCharacter(char)) {
44175
44179
  offset += 1;
44176
44180
  }
44177
44181
  else {
44178
- this.addToNumericResult(str, startIdx, offset, 16);
44182
+ this.addToNumericResult(input, startIndex, offset, 16);
44179
44183
  return this.emitNumericEntity(char, 3);
44180
44184
  }
44181
44185
  }
44182
- this.addToNumericResult(str, startIdx, offset, 16);
44186
+ this.addToNumericResult(input, startIndex, offset, 16);
44183
44187
  return -1;
44184
44188
  }
44185
44189
  /**
@@ -44187,23 +44191,23 @@ class EntityDecoder {
44187
44191
  *
44188
44192
  * Equivalent to the `Decimal character reference state` in the HTML spec.
44189
44193
  *
44190
- * @param str The string containing the entity (or a continuation of the entity).
44194
+ * @param input The string containing the entity (or a continuation of the entity).
44191
44195
  * @param offset The current offset.
44192
44196
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
44193
44197
  */
44194
- stateNumericDecimal(str, offset) {
44195
- const startIdx = offset;
44196
- while (offset < str.length) {
44197
- const char = str.charCodeAt(offset);
44198
+ stateNumericDecimal(input, offset) {
44199
+ const startIndex = offset;
44200
+ while (offset < input.length) {
44201
+ const char = input.charCodeAt(offset);
44198
44202
  if (isNumber(char)) {
44199
44203
  offset += 1;
44200
44204
  }
44201
44205
  else {
44202
- this.addToNumericResult(str, startIdx, offset, 10);
44206
+ this.addToNumericResult(input, startIndex, offset, 10);
44203
44207
  return this.emitNumericEntity(char, 2);
44204
44208
  }
44205
44209
  }
44206
- this.addToNumericResult(str, startIdx, offset, 10);
44210
+ this.addToNumericResult(input, startIndex, offset, 10);
44207
44211
  return -1;
44208
44212
  }
44209
44213
  /**
@@ -44247,17 +44251,17 @@ class EntityDecoder {
44247
44251
  *
44248
44252
  * Equivalent to the `Named character reference state` in the HTML spec.
44249
44253
  *
44250
- * @param str The string containing the entity (or a continuation of the entity).
44254
+ * @param input The string containing the entity (or a continuation of the entity).
44251
44255
  * @param offset The current offset.
44252
44256
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
44253
44257
  */
44254
- stateNamedEntity(str, offset) {
44258
+ stateNamedEntity(input, offset) {
44255
44259
  const { decodeTree } = this;
44256
44260
  let current = decodeTree[this.treeIndex];
44257
44261
  // The mask is the number of bytes of the value, including the current byte.
44258
44262
  let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
44259
- for (; offset < str.length; offset++, this.excess++) {
44260
- const char = str.charCodeAt(offset);
44263
+ for (; offset < input.length; offset++, this.excess++) {
44264
+ const char = input.charCodeAt(offset);
44261
44265
  this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
44262
44266
  if (this.treeIndex < 0) {
44263
44267
  return this.result === 0 ||
@@ -44364,28 +44368,28 @@ class EntityDecoder {
44364
44368
  * @returns A function that decodes entities in a string.
44365
44369
  */
44366
44370
  function getDecoder(decodeTree) {
44367
- let ret = "";
44368
- const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));
44369
- return function decodeWithTrie(str, decodeMode) {
44371
+ let returnValue = "";
44372
+ const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));
44373
+ return function decodeWithTrie(input, decodeMode) {
44370
44374
  let lastIndex = 0;
44371
44375
  let offset = 0;
44372
- while ((offset = str.indexOf("&", offset)) >= 0) {
44373
- ret += str.slice(lastIndex, offset);
44376
+ while ((offset = input.indexOf("&", offset)) >= 0) {
44377
+ returnValue += input.slice(lastIndex, offset);
44374
44378
  decoder.startEntity(decodeMode);
44375
- const len = decoder.write(str,
44379
+ const length = decoder.write(input,
44376
44380
  // Skip the "&"
44377
44381
  offset + 1);
44378
- if (len < 0) {
44382
+ if (length < 0) {
44379
44383
  lastIndex = offset + decoder.end();
44380
44384
  break;
44381
44385
  }
44382
- lastIndex = offset + len;
44383
- // If `len` is 0, skip the current `&` and continue.
44384
- offset = len === 0 ? lastIndex + 1 : lastIndex;
44386
+ lastIndex = offset + length;
44387
+ // If `length` is 0, skip the current `&` and continue.
44388
+ offset = length === 0 ? lastIndex + 1 : lastIndex;
44385
44389
  }
44386
- const result = ret + str.slice(lastIndex);
44390
+ const result = returnValue + input.slice(lastIndex);
44387
44391
  // Make sure we don't keep a reference to the final string.
44388
- ret = "";
44392
+ returnValue = "";
44389
44393
  return result;
44390
44394
  };
44391
44395
  }
@@ -44399,31 +44403,31 @@ function getDecoder(decodeTree) {
44399
44403
  * @param char The current character.
44400
44404
  * @returns The index of the next node, or -1 if no branch is taken.
44401
44405
  */
44402
- function determineBranch(decodeTree, current, nodeIdx, char) {
44406
+ function determineBranch(decodeTree, current, nodeIndex, char) {
44403
44407
  const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
44404
44408
  const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
44405
44409
  // Case 1: Single branch encoded in jump offset
44406
44410
  if (branchCount === 0) {
44407
- return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
44411
+ return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
44408
44412
  }
44409
44413
  // Case 2: Multiple branches encoded in jump table
44410
44414
  if (jumpOffset) {
44411
44415
  const value = char - jumpOffset;
44412
44416
  return value < 0 || value >= branchCount
44413
44417
  ? -1
44414
- : decodeTree[nodeIdx + value] - 1;
44418
+ : decodeTree[nodeIndex + value] - 1;
44415
44419
  }
44416
44420
  // Case 3: Multiple branches encoded in dictionary
44417
44421
  // Binary search for the character.
44418
- let lo = nodeIdx;
44422
+ let lo = nodeIndex;
44419
44423
  let hi = lo + branchCount - 1;
44420
44424
  while (lo <= hi) {
44421
44425
  const mid = (lo + hi) >>> 1;
44422
- const midVal = decodeTree[mid];
44423
- if (midVal < char) {
44426
+ const midValue = decodeTree[mid];
44427
+ if (midValue < char) {
44424
44428
  lo = mid + 1;
44425
44429
  }
44426
- else if (midVal > char) {
44430
+ else if (midValue > char) {
44427
44431
  hi = mid - 1;
44428
44432
  }
44429
44433
  else {
@@ -44432,45 +44436,49 @@ function determineBranch(decodeTree, current, nodeIdx, char) {
44432
44436
  }
44433
44437
  return -1;
44434
44438
  }
44435
- const htmlDecoder = getDecoder(decode_data_html);
44436
- const xmlDecoder = getDecoder(decode_data_xml);
44439
+ const htmlDecoder = /* #__PURE__ */ (/* unused pure expression or super */ null && (getDecoder(htmlDecodeTree)));
44440
+ const xmlDecoder = /* #__PURE__ */ (/* unused pure expression or super */ null && (getDecoder(xmlDecodeTree)));
44437
44441
  /**
44438
44442
  * Decodes an HTML string.
44439
44443
  *
44440
- * @param str The string to decode.
44444
+ * @param htmlString The string to decode.
44441
44445
  * @param mode The decoding mode.
44442
44446
  * @returns The decoded string.
44443
44447
  */
44444
- function decode_decodeHTML(str, mode = decode_DecodingMode.Legacy) {
44445
- return htmlDecoder(str, mode);
44448
+ function decode_decodeHTML(htmlString, mode = decode_DecodingMode.Legacy) {
44449
+ return htmlDecoder(htmlString, mode);
44446
44450
  }
44447
44451
  /**
44448
44452
  * Decodes an HTML string in an attribute.
44449
44453
  *
44450
- * @param str The string to decode.
44454
+ * @param htmlAttribute The string to decode.
44451
44455
  * @returns The decoded string.
44452
44456
  */
44453
- function decodeHTMLAttribute(str) {
44454
- return htmlDecoder(str, decode_DecodingMode.Attribute);
44457
+ function decodeHTMLAttribute(htmlAttribute) {
44458
+ return htmlDecoder(htmlAttribute, decode_DecodingMode.Attribute);
44455
44459
  }
44456
44460
  /**
44457
44461
  * Decodes an HTML string, requiring all entities to be terminated by a semicolon.
44458
44462
  *
44459
- * @param str The string to decode.
44463
+ * @param htmlString The string to decode.
44460
44464
  * @returns The decoded string.
44461
44465
  */
44462
- function decodeHTMLStrict(str) {
44463
- return htmlDecoder(str, decode_DecodingMode.Strict);
44466
+ function decodeHTMLStrict(htmlString) {
44467
+ return htmlDecoder(htmlString, decode_DecodingMode.Strict);
44464
44468
  }
44465
44469
  /**
44466
44470
  * Decodes an XML string, requiring all entities to be terminated by a semicolon.
44467
44471
  *
44468
- * @param str The string to decode.
44472
+ * @param xmlString The string to decode.
44469
44473
  * @returns The decoded string.
44470
44474
  */
44471
- function decode_decodeXML(str) {
44472
- return xmlDecoder(str, decode_DecodingMode.Strict);
44475
+ function decode_decodeXML(xmlString) {
44476
+ return xmlDecoder(xmlString, decode_DecodingMode.Strict);
44473
44477
  }
44478
+ // Re-export for use by eg. htmlparser2
44479
+
44480
+
44481
+
44474
44482
  //# sourceMappingURL=decode.js.map
44475
44483
  ;// ./node_modules/parse5/dist/common/html.js
44476
44484
  /** All valid namespaces in HTML. */
@@ -44482,7 +44490,7 @@ var html_NS;
44482
44490
  NS["XLINK"] = "http://www.w3.org/1999/xlink";
44483
44491
  NS["XML"] = "http://www.w3.org/XML/1998/namespace";
44484
44492
  NS["XMLNS"] = "http://www.w3.org/2000/xmlns/";
44485
- })(html_NS = html_NS || (html_NS = {}));
44493
+ })(html_NS || (html_NS = {}));
44486
44494
  var ATTRS;
44487
44495
  (function (ATTRS) {
44488
44496
  ATTRS["TYPE"] = "type";
@@ -44493,7 +44501,7 @@ var ATTRS;
44493
44501
  ATTRS["COLOR"] = "color";
44494
44502
  ATTRS["FACE"] = "face";
44495
44503
  ATTRS["SIZE"] = "size";
44496
- })(ATTRS = ATTRS || (ATTRS = {}));
44504
+ })(ATTRS || (ATTRS = {}));
44497
44505
  /**
44498
44506
  * The mode of the document.
44499
44507
  *
@@ -44504,7 +44512,7 @@ var DOCUMENT_MODE;
44504
44512
  DOCUMENT_MODE["NO_QUIRKS"] = "no-quirks";
44505
44513
  DOCUMENT_MODE["QUIRKS"] = "quirks";
44506
44514
  DOCUMENT_MODE["LIMITED_QUIRKS"] = "limited-quirks";
44507
- })(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {}));
44515
+ })(DOCUMENT_MODE || (DOCUMENT_MODE = {}));
44508
44516
  var TAG_NAMES;
44509
44517
  (function (TAG_NAMES) {
44510
44518
  TAG_NAMES["A"] = "a";
@@ -44600,6 +44608,7 @@ var TAG_NAMES;
44600
44608
  TAG_NAMES["RUBY"] = "ruby";
44601
44609
  TAG_NAMES["S"] = "s";
44602
44610
  TAG_NAMES["SCRIPT"] = "script";
44611
+ TAG_NAMES["SEARCH"] = "search";
44603
44612
  TAG_NAMES["SECTION"] = "section";
44604
44613
  TAG_NAMES["SELECT"] = "select";
44605
44614
  TAG_NAMES["SOURCE"] = "source";
@@ -44629,7 +44638,7 @@ var TAG_NAMES;
44629
44638
  TAG_NAMES["VAR"] = "var";
44630
44639
  TAG_NAMES["WBR"] = "wbr";
44631
44640
  TAG_NAMES["XMP"] = "xmp";
44632
- })(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {}));
44641
+ })(TAG_NAMES || (TAG_NAMES = {}));
44633
44642
  /**
44634
44643
  * Tag IDs are numeric IDs for known tag names.
44635
44644
  *
@@ -44731,36 +44740,37 @@ var TAG_ID;
44731
44740
  TAG_ID[TAG_ID["RUBY"] = 91] = "RUBY";
44732
44741
  TAG_ID[TAG_ID["S"] = 92] = "S";
44733
44742
  TAG_ID[TAG_ID["SCRIPT"] = 93] = "SCRIPT";
44734
- TAG_ID[TAG_ID["SECTION"] = 94] = "SECTION";
44735
- TAG_ID[TAG_ID["SELECT"] = 95] = "SELECT";
44736
- TAG_ID[TAG_ID["SOURCE"] = 96] = "SOURCE";
44737
- TAG_ID[TAG_ID["SMALL"] = 97] = "SMALL";
44738
- TAG_ID[TAG_ID["SPAN"] = 98] = "SPAN";
44739
- TAG_ID[TAG_ID["STRIKE"] = 99] = "STRIKE";
44740
- TAG_ID[TAG_ID["STRONG"] = 100] = "STRONG";
44741
- TAG_ID[TAG_ID["STYLE"] = 101] = "STYLE";
44742
- TAG_ID[TAG_ID["SUB"] = 102] = "SUB";
44743
- TAG_ID[TAG_ID["SUMMARY"] = 103] = "SUMMARY";
44744
- TAG_ID[TAG_ID["SUP"] = 104] = "SUP";
44745
- TAG_ID[TAG_ID["TABLE"] = 105] = "TABLE";
44746
- TAG_ID[TAG_ID["TBODY"] = 106] = "TBODY";
44747
- TAG_ID[TAG_ID["TEMPLATE"] = 107] = "TEMPLATE";
44748
- TAG_ID[TAG_ID["TEXTAREA"] = 108] = "TEXTAREA";
44749
- TAG_ID[TAG_ID["TFOOT"] = 109] = "TFOOT";
44750
- TAG_ID[TAG_ID["TD"] = 110] = "TD";
44751
- TAG_ID[TAG_ID["TH"] = 111] = "TH";
44752
- TAG_ID[TAG_ID["THEAD"] = 112] = "THEAD";
44753
- TAG_ID[TAG_ID["TITLE"] = 113] = "TITLE";
44754
- TAG_ID[TAG_ID["TR"] = 114] = "TR";
44755
- TAG_ID[TAG_ID["TRACK"] = 115] = "TRACK";
44756
- TAG_ID[TAG_ID["TT"] = 116] = "TT";
44757
- TAG_ID[TAG_ID["U"] = 117] = "U";
44758
- TAG_ID[TAG_ID["UL"] = 118] = "UL";
44759
- TAG_ID[TAG_ID["SVG"] = 119] = "SVG";
44760
- TAG_ID[TAG_ID["VAR"] = 120] = "VAR";
44761
- TAG_ID[TAG_ID["WBR"] = 121] = "WBR";
44762
- TAG_ID[TAG_ID["XMP"] = 122] = "XMP";
44763
- })(TAG_ID = TAG_ID || (TAG_ID = {}));
44743
+ TAG_ID[TAG_ID["SEARCH"] = 94] = "SEARCH";
44744
+ TAG_ID[TAG_ID["SECTION"] = 95] = "SECTION";
44745
+ TAG_ID[TAG_ID["SELECT"] = 96] = "SELECT";
44746
+ TAG_ID[TAG_ID["SOURCE"] = 97] = "SOURCE";
44747
+ TAG_ID[TAG_ID["SMALL"] = 98] = "SMALL";
44748
+ TAG_ID[TAG_ID["SPAN"] = 99] = "SPAN";
44749
+ TAG_ID[TAG_ID["STRIKE"] = 100] = "STRIKE";
44750
+ TAG_ID[TAG_ID["STRONG"] = 101] = "STRONG";
44751
+ TAG_ID[TAG_ID["STYLE"] = 102] = "STYLE";
44752
+ TAG_ID[TAG_ID["SUB"] = 103] = "SUB";
44753
+ TAG_ID[TAG_ID["SUMMARY"] = 104] = "SUMMARY";
44754
+ TAG_ID[TAG_ID["SUP"] = 105] = "SUP";
44755
+ TAG_ID[TAG_ID["TABLE"] = 106] = "TABLE";
44756
+ TAG_ID[TAG_ID["TBODY"] = 107] = "TBODY";
44757
+ TAG_ID[TAG_ID["TEMPLATE"] = 108] = "TEMPLATE";
44758
+ TAG_ID[TAG_ID["TEXTAREA"] = 109] = "TEXTAREA";
44759
+ TAG_ID[TAG_ID["TFOOT"] = 110] = "TFOOT";
44760
+ TAG_ID[TAG_ID["TD"] = 111] = "TD";
44761
+ TAG_ID[TAG_ID["TH"] = 112] = "TH";
44762
+ TAG_ID[TAG_ID["THEAD"] = 113] = "THEAD";
44763
+ TAG_ID[TAG_ID["TITLE"] = 114] = "TITLE";
44764
+ TAG_ID[TAG_ID["TR"] = 115] = "TR";
44765
+ TAG_ID[TAG_ID["TRACK"] = 116] = "TRACK";
44766
+ TAG_ID[TAG_ID["TT"] = 117] = "TT";
44767
+ TAG_ID[TAG_ID["U"] = 118] = "U";
44768
+ TAG_ID[TAG_ID["UL"] = 119] = "UL";
44769
+ TAG_ID[TAG_ID["SVG"] = 120] = "SVG";
44770
+ TAG_ID[TAG_ID["VAR"] = 121] = "VAR";
44771
+ TAG_ID[TAG_ID["WBR"] = 122] = "WBR";
44772
+ TAG_ID[TAG_ID["XMP"] = 123] = "XMP";
44773
+ })(TAG_ID || (TAG_ID = {}));
44764
44774
  const TAG_NAME_TO_ID = new Map([
44765
44775
  [TAG_NAMES.A, TAG_ID.A],
44766
44776
  [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],
@@ -44855,6 +44865,7 @@ const TAG_NAME_TO_ID = new Map([
44855
44865
  [TAG_NAMES.RUBY, TAG_ID.RUBY],
44856
44866
  [TAG_NAMES.S, TAG_ID.S],
44857
44867
  [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],
44868
+ [TAG_NAMES.SEARCH, TAG_ID.SEARCH],
44858
44869
  [TAG_NAMES.SECTION, TAG_ID.SECTION],
44859
44870
  [TAG_NAMES.SELECT, TAG_ID.SELECT],
44860
44871
  [TAG_NAMES.SOURCE, TAG_ID.SOURCE],
@@ -44980,9 +44991,7 @@ const SPECIAL_ELEMENTS = {
44980
44991
  [html_NS.XML]: new Set(),
44981
44992
  [html_NS.XMLNS]: new Set(),
44982
44993
  };
44983
- function isNumberedHeader(tn) {
44984
- return tn === html_$.H1 || tn === html_$.H2 || tn === html_$.H3 || tn === html_$.H4 || tn === html_$.H5 || tn === html_$.H6;
44985
- }
44994
+ const NUMBERED_HEADERS = new Set([html_$.H1, html_$.H2, html_$.H3, html_$.H4, html_$.H5, html_$.H6]);
44986
44995
  const UNESCAPED_TEXT = new Set([
44987
44996
  TAG_NAMES.STYLE,
44988
44997
  TAG_NAMES.SCRIPT,
@@ -44995,7 +45004,7 @@ const UNESCAPED_TEXT = new Set([
44995
45004
  function html_hasUnescapedText(tn, scriptingEnabled) {
44996
45005
  return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);
44997
45006
  }
44998
- //# sourceMappingURL=html.js.map
45007
+
44999
45008
  ;// ./node_modules/parse5/dist/tokenizer/index.js
45000
45009
 
45001
45010
 
@@ -45003,36 +45012,6 @@ function html_hasUnescapedText(tn, scriptingEnabled) {
45003
45012
 
45004
45013
 
45005
45014
 
45006
- //C1 Unicode control character reference replacements
45007
- const C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([
45008
- [0x80, 8364],
45009
- [0x82, 8218],
45010
- [0x83, 402],
45011
- [0x84, 8222],
45012
- [0x85, 8230],
45013
- [0x86, 8224],
45014
- [0x87, 8225],
45015
- [0x88, 710],
45016
- [0x89, 8240],
45017
- [0x8a, 352],
45018
- [0x8b, 8249],
45019
- [0x8c, 338],
45020
- [0x8e, 381],
45021
- [0x91, 8216],
45022
- [0x92, 8217],
45023
- [0x93, 8220],
45024
- [0x94, 8221],
45025
- [0x95, 8226],
45026
- [0x96, 8211],
45027
- [0x97, 8212],
45028
- [0x98, 732],
45029
- [0x99, 8482],
45030
- [0x9a, 353],
45031
- [0x9b, 8250],
45032
- [0x9c, 339],
45033
- [0x9e, 382],
45034
- [0x9f, 376],
45035
- ]);
45036
45015
  //States
45037
45016
  var State;
45038
45017
  (function (State) {
@@ -45108,13 +45087,7 @@ var State;
45108
45087
  State[State["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET";
45109
45088
  State[State["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END";
45110
45089
  State[State["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE";
45111
- State[State["NAMED_CHARACTER_REFERENCE"] = 72] = "NAMED_CHARACTER_REFERENCE";
45112
- State[State["AMBIGUOUS_AMPERSAND"] = 73] = "AMBIGUOUS_AMPERSAND";
45113
- State[State["NUMERIC_CHARACTER_REFERENCE"] = 74] = "NUMERIC_CHARACTER_REFERENCE";
45114
- State[State["HEXADEMICAL_CHARACTER_REFERENCE_START"] = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START";
45115
- State[State["HEXADEMICAL_CHARACTER_REFERENCE"] = 76] = "HEXADEMICAL_CHARACTER_REFERENCE";
45116
- State[State["DECIMAL_CHARACTER_REFERENCE"] = 77] = "DECIMAL_CHARACTER_REFERENCE";
45117
- State[State["NUMERIC_CHARACTER_REFERENCE_END"] = 78] = "NUMERIC_CHARACTER_REFERENCE_END";
45090
+ State[State["AMBIGUOUS_AMPERSAND"] = 72] = "AMBIGUOUS_AMPERSAND";
45118
45091
  })(State || (State = {}));
45119
45092
  //Tokenizer initial states for different modes
45120
45093
  const TokenizerMode = {
@@ -45144,27 +45117,33 @@ function isAsciiLetter(cp) {
45144
45117
  function tokenizer_isAsciiAlphaNumeric(cp) {
45145
45118
  return isAsciiLetter(cp) || isAsciiDigit(cp);
45146
45119
  }
45147
- function isAsciiUpperHexDigit(cp) {
45148
- return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_F;
45149
- }
45150
- function isAsciiLowerHexDigit(cp) {
45151
- return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_F;
45152
- }
45153
- function isAsciiHexDigit(cp) {
45154
- return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);
45155
- }
45156
45120
  function toAsciiLower(cp) {
45157
45121
  return cp + 32;
45158
45122
  }
45159
45123
  function isWhitespace(cp) {
45160
45124
  return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED;
45161
45125
  }
45162
- function tokenizer_isEntityInAttributeInvalidEnd(nextCp) {
45163
- return nextCp === CODE_POINTS.EQUALS_SIGN || tokenizer_isAsciiAlphaNumeric(nextCp);
45164
- }
45165
45126
  function isScriptDataDoubleEscapeSequenceEnd(cp) {
45166
45127
  return isWhitespace(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN;
45167
45128
  }
45129
+ function getErrorForNumericCharacterReference(code) {
45130
+ if (code === CODE_POINTS.NULL) {
45131
+ return ERR.nullCharacterReference;
45132
+ }
45133
+ else if (code > 1114111) {
45134
+ return ERR.characterReferenceOutsideUnicodeRange;
45135
+ }
45136
+ else if (isSurrogate(code)) {
45137
+ return ERR.surrogateCharacterReference;
45138
+ }
45139
+ else if (isUndefinedCodePoint(code)) {
45140
+ return ERR.noncharacterCharacterReference;
45141
+ }
45142
+ else if (isControlCodePoint(code) || code === CODE_POINTS.CARRIAGE_RETURN) {
45143
+ return ERR.controlCharacterReference;
45144
+ }
45145
+ return null;
45146
+ }
45168
45147
  //Tokenizer
45169
45148
  class Tokenizer {
45170
45149
  constructor(options, handler) {
@@ -45184,18 +45163,38 @@ class Tokenizer {
45184
45163
  this.active = false;
45185
45164
  this.state = State.DATA;
45186
45165
  this.returnState = State.DATA;
45187
- this.charRefCode = -1;
45166
+ this.entityStartPos = 0;
45188
45167
  this.consumedAfterSnapshot = -1;
45189
45168
  this.currentCharacterToken = null;
45190
45169
  this.currentToken = null;
45191
45170
  this.currentAttr = { name: '', value: '' };
45192
45171
  this.preprocessor = new Preprocessor(handler);
45193
45172
  this.currentLocation = this.getCurrentLocation(-1);
45173
+ this.entityDecoder = new EntityDecoder(decode_data_html_htmlDecodeTree, (cp, consumed) => {
45174
+ // Note: Set `pos` _before_ flushing, as flushing might drop
45175
+ // the current chunk and invalidate `entityStartPos`.
45176
+ this.preprocessor.pos = this.entityStartPos + consumed - 1;
45177
+ this._flushCodePointConsumedAsCharacterReference(cp);
45178
+ }, handler.onParseError
45179
+ ? {
45180
+ missingSemicolonAfterCharacterReference: () => {
45181
+ this._err(ERR.missingSemicolonAfterCharacterReference, 1);
45182
+ },
45183
+ absenceOfDigitsInNumericCharacterReference: (consumed) => {
45184
+ this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);
45185
+ },
45186
+ validateNumericCharacterReference: (code) => {
45187
+ const error = getErrorForNumericCharacterReference(code);
45188
+ if (error)
45189
+ this._err(error, 1);
45190
+ },
45191
+ }
45192
+ : undefined);
45194
45193
  }
45195
45194
  //Errors
45196
- _err(code) {
45195
+ _err(code, cpOffset = 0) {
45197
45196
  var _a, _b;
45198
- (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));
45197
+ (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));
45199
45198
  }
45200
45199
  // NOTE: `offset` may never run across line boundaries.
45201
45200
  getCurrentLocation(offset) {
@@ -45257,7 +45256,8 @@ class Tokenizer {
45257
45256
  //Hibernation
45258
45257
  _ensureHibernation() {
45259
45258
  if (this.preprocessor.endOfChunkHit) {
45260
- this._unconsume(this.consumedAfterSnapshot);
45259
+ this.preprocessor.retreat(this.consumedAfterSnapshot);
45260
+ this.consumedAfterSnapshot = 0;
45261
45261
  this.active = false;
45262
45262
  return true;
45263
45263
  }
@@ -45268,14 +45268,6 @@ class Tokenizer {
45268
45268
  this.consumedAfterSnapshot++;
45269
45269
  return this.preprocessor.advance();
45270
45270
  }
45271
- _unconsume(count) {
45272
- this.consumedAfterSnapshot -= count;
45273
- this.preprocessor.retreat(count);
45274
- }
45275
- _reconsumeInState(state, cp) {
45276
- this.state = state;
45277
- this._callState(cp);
45278
- }
45279
45271
  _advanceBy(count) {
45280
45272
  this.consumedAfterSnapshot += count;
45281
45273
  for (let i = 0; i < count; i++) {
@@ -45447,7 +45439,7 @@ class Tokenizer {
45447
45439
  this.active = false;
45448
45440
  }
45449
45441
  //Characters emission
45450
- //OPTIMIZATION: specification uses only one type of character tokens (one token per character).
45442
+ //OPTIMIZATION: The specification uses only one type of character token (one token per character).
45451
45443
  //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.
45452
45444
  //If we have a sequence of characters that belong to the same group, the parser can process it
45453
45445
  //as a single solid character token.
@@ -45457,15 +45449,15 @@ class Tokenizer {
45457
45449
  //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')
45458
45450
  _appendCharToCurrentCharacterToken(type, ch) {
45459
45451
  if (this.currentCharacterToken) {
45460
- if (this.currentCharacterToken.type !== type) {
45452
+ if (this.currentCharacterToken.type === type) {
45453
+ this.currentCharacterToken.chars += ch;
45454
+ return;
45455
+ }
45456
+ else {
45461
45457
  this.currentLocation = this.getCurrentLocation(0);
45462
45458
  this._emitCurrentCharacterToken(this.currentLocation);
45463
45459
  this.preprocessor.dropParsedChunk();
45464
45460
  }
45465
- else {
45466
- this.currentCharacterToken.chars += ch;
45467
- return;
45468
- }
45469
45461
  }
45470
45462
  this._createCharacterToken(type, ch);
45471
45463
  }
@@ -45483,59 +45475,11 @@ class Tokenizer {
45483
45475
  this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);
45484
45476
  }
45485
45477
  // Character reference helpers
45486
- _matchNamedCharacterReference(cp) {
45487
- let result = null;
45488
- let excess = 0;
45489
- let withoutSemicolon = false;
45490
- for (let i = 0, current = decode_data_html[0]; i >= 0; cp = this._consume()) {
45491
- i = determineBranch(decode_data_html, current, i + 1, cp);
45492
- if (i < 0)
45493
- break;
45494
- excess += 1;
45495
- current = decode_data_html[i];
45496
- const masked = current & BinTrieFlags.VALUE_LENGTH;
45497
- // If the branch is a value, store it and continue
45498
- if (masked) {
45499
- // The mask is the number of bytes of the value, including the current byte.
45500
- const valueLength = (masked >> 14) - 1;
45501
- // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
45502
- // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
45503
- if (cp !== CODE_POINTS.SEMICOLON &&
45504
- this._isCharacterReferenceInAttribute() &&
45505
- tokenizer_isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {
45506
- //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after
45507
- //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.
45508
- result = [CODE_POINTS.AMPERSAND];
45509
- // Skip over the value.
45510
- i += valueLength;
45511
- }
45512
- else {
45513
- // If this is a surrogate pair, consume the next two bytes.
45514
- result =
45515
- valueLength === 0
45516
- ? [decode_data_html[i] & ~BinTrieFlags.VALUE_LENGTH]
45517
- : valueLength === 1
45518
- ? [decode_data_html[++i]]
45519
- : [decode_data_html[++i], decode_data_html[++i]];
45520
- excess = 0;
45521
- withoutSemicolon = cp !== CODE_POINTS.SEMICOLON;
45522
- }
45523
- if (valueLength === 0) {
45524
- // If the value is zero-length, we're done.
45525
- this._consume();
45526
- break;
45527
- }
45528
- }
45529
- }
45530
- this._unconsume(excess);
45531
- if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {
45532
- this._err(ERR.missingSemicolonAfterCharacterReference);
45533
- }
45534
- // We want to emit the error above on the code point after the entity.
45535
- // We always consume one code point too many in the loop, and we wait to
45536
- // unconsume it until after the error is emitted.
45537
- this._unconsume(1);
45538
- return result;
45478
+ _startCharacterReference() {
45479
+ this.returnState = this.state;
45480
+ this.state = State.CHARACTER_REFERENCE;
45481
+ this.entityStartPos = this.preprocessor.pos;
45482
+ this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? decode_DecodingMode.Attribute : decode_DecodingMode.Legacy);
45539
45483
  }
45540
45484
  _isCharacterReferenceInAttribute() {
45541
45485
  return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||
@@ -45838,37 +45782,13 @@ class Tokenizer {
45838
45782
  break;
45839
45783
  }
45840
45784
  case State.CHARACTER_REFERENCE: {
45841
- this._stateCharacterReference(cp);
45842
- break;
45843
- }
45844
- case State.NAMED_CHARACTER_REFERENCE: {
45845
- this._stateNamedCharacterReference(cp);
45785
+ this._stateCharacterReference();
45846
45786
  break;
45847
45787
  }
45848
45788
  case State.AMBIGUOUS_AMPERSAND: {
45849
45789
  this._stateAmbiguousAmpersand(cp);
45850
45790
  break;
45851
45791
  }
45852
- case State.NUMERIC_CHARACTER_REFERENCE: {
45853
- this._stateNumericCharacterReference(cp);
45854
- break;
45855
- }
45856
- case State.HEXADEMICAL_CHARACTER_REFERENCE_START: {
45857
- this._stateHexademicalCharacterReferenceStart(cp);
45858
- break;
45859
- }
45860
- case State.HEXADEMICAL_CHARACTER_REFERENCE: {
45861
- this._stateHexademicalCharacterReference(cp);
45862
- break;
45863
- }
45864
- case State.DECIMAL_CHARACTER_REFERENCE: {
45865
- this._stateDecimalCharacterReference(cp);
45866
- break;
45867
- }
45868
- case State.NUMERIC_CHARACTER_REFERENCE_END: {
45869
- this._stateNumericCharacterReferenceEnd(cp);
45870
- break;
45871
- }
45872
45792
  default: {
45873
45793
  throw new Error('Unknown state');
45874
45794
  }
@@ -45884,8 +45804,7 @@ class Tokenizer {
45884
45804
  break;
45885
45805
  }
45886
45806
  case CODE_POINTS.AMPERSAND: {
45887
- this.returnState = State.DATA;
45888
- this.state = State.CHARACTER_REFERENCE;
45807
+ this._startCharacterReference();
45889
45808
  break;
45890
45809
  }
45891
45810
  case CODE_POINTS.NULL: {
@@ -45907,8 +45826,7 @@ class Tokenizer {
45907
45826
  _stateRcdata(cp) {
45908
45827
  switch (cp) {
45909
45828
  case CODE_POINTS.AMPERSAND: {
45910
- this.returnState = State.RCDATA;
45911
- this.state = State.CHARACTER_REFERENCE;
45829
+ this._startCharacterReference();
45912
45830
  break;
45913
45831
  }
45914
45832
  case CODE_POINTS.LESS_THAN_SIGN: {
@@ -46677,8 +46595,7 @@ class Tokenizer {
46677
46595
  break;
46678
46596
  }
46679
46597
  case CODE_POINTS.AMPERSAND: {
46680
- this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;
46681
- this.state = State.CHARACTER_REFERENCE;
46598
+ this._startCharacterReference();
46682
46599
  break;
46683
46600
  }
46684
46601
  case CODE_POINTS.NULL: {
@@ -46705,8 +46622,7 @@ class Tokenizer {
46705
46622
  break;
46706
46623
  }
46707
46624
  case CODE_POINTS.AMPERSAND: {
46708
- this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;
46709
- this.state = State.CHARACTER_REFERENCE;
46625
+ this._startCharacterReference();
46710
46626
  break;
46711
46627
  }
46712
46628
  case CODE_POINTS.NULL: {
@@ -46737,8 +46653,7 @@ class Tokenizer {
46737
46653
  break;
46738
46654
  }
46739
46655
  case CODE_POINTS.AMPERSAND: {
46740
- this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED;
46741
- this.state = State.CHARACTER_REFERENCE;
46656
+ this._startCharacterReference();
46742
46657
  break;
46743
46658
  }
46744
46659
  case CODE_POINTS.GREATER_THAN_SIGN: {
@@ -47755,37 +47670,35 @@ class Tokenizer {
47755
47670
  }
47756
47671
  // Character reference state
47757
47672
  //------------------------------------------------------------------
47758
- _stateCharacterReference(cp) {
47759
- if (cp === CODE_POINTS.NUMBER_SIGN) {
47760
- this.state = State.NUMERIC_CHARACTER_REFERENCE;
47761
- }
47762
- else if (tokenizer_isAsciiAlphaNumeric(cp)) {
47763
- this.state = State.NAMED_CHARACTER_REFERENCE;
47764
- this._stateNamedCharacterReference(cp);
47673
+ _stateCharacterReference() {
47674
+ let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);
47675
+ if (length < 0) {
47676
+ if (this.preprocessor.lastChunkWritten) {
47677
+ length = this.entityDecoder.end();
47678
+ }
47679
+ else {
47680
+ // Wait for the rest of the entity.
47681
+ this.active = false;
47682
+ // Mark the entire buffer as read.
47683
+ this.preprocessor.pos = this.preprocessor.html.length - 1;
47684
+ this.consumedAfterSnapshot = 0;
47685
+ this.preprocessor.endOfChunkHit = true;
47686
+ return;
47687
+ }
47765
47688
  }
47766
- else {
47689
+ if (length === 0) {
47690
+ // This was not a valid entity. Go back to the beginning, and
47691
+ // figure out what to do.
47692
+ this.preprocessor.pos = this.entityStartPos;
47767
47693
  this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
47768
- this._reconsumeInState(this.returnState, cp);
47769
- }
47770
- }
47771
- // Named character reference state
47772
- //------------------------------------------------------------------
47773
- _stateNamedCharacterReference(cp) {
47774
- const matchResult = this._matchNamedCharacterReference(cp);
47775
- //NOTE: Matching can be abrupted by hibernation. In that case, match
47776
- //results are no longer valid and we will need to start over.
47777
- if (this._ensureHibernation()) {
47778
- // Stay in the state, try again.
47779
- }
47780
- else if (matchResult) {
47781
- for (let i = 0; i < matchResult.length; i++) {
47782
- this._flushCodePointConsumedAsCharacterReference(matchResult[i]);
47783
- }
47784
- this.state = this.returnState;
47694
+ this.state =
47695
+ !this._isCharacterReferenceInAttribute() && tokenizer_isAsciiAlphaNumeric(this.preprocessor.peek(1))
47696
+ ? State.AMBIGUOUS_AMPERSAND
47697
+ : this.returnState;
47785
47698
  }
47786
47699
  else {
47787
- this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
47788
- this.state = State.AMBIGUOUS_AMPERSAND;
47700
+ // We successfully parsed an entity. Switch to the return state.
47701
+ this.state = this.returnState;
47789
47702
  }
47790
47703
  }
47791
47704
  // Ambiguos ampersand state
@@ -47798,109 +47711,12 @@ class Tokenizer {
47798
47711
  if (cp === CODE_POINTS.SEMICOLON) {
47799
47712
  this._err(ERR.unknownNamedCharacterReference);
47800
47713
  }
47801
- this._reconsumeInState(this.returnState, cp);
47802
- }
47803
- }
47804
- // Numeric character reference state
47805
- //------------------------------------------------------------------
47806
- _stateNumericCharacterReference(cp) {
47807
- this.charRefCode = 0;
47808
- if (cp === CODE_POINTS.LATIN_SMALL_X || cp === CODE_POINTS.LATIN_CAPITAL_X) {
47809
- this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;
47810
- }
47811
- // Inlined decimal character reference start state
47812
- else if (isAsciiDigit(cp)) {
47813
- this.state = State.DECIMAL_CHARACTER_REFERENCE;
47814
- this._stateDecimalCharacterReference(cp);
47815
- }
47816
- else {
47817
- this._err(ERR.absenceOfDigitsInNumericCharacterReference);
47818
- this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
47819
- this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN);
47820
- this._reconsumeInState(this.returnState, cp);
47821
- }
47822
- }
47823
- // Hexademical character reference start state
47824
- //------------------------------------------------------------------
47825
- _stateHexademicalCharacterReferenceStart(cp) {
47826
- if (isAsciiHexDigit(cp)) {
47827
- this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;
47828
- this._stateHexademicalCharacterReference(cp);
47829
- }
47830
- else {
47831
- this._err(ERR.absenceOfDigitsInNumericCharacterReference);
47832
- this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
47833
- this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN);
47834
- this._unconsume(2);
47835
47714
  this.state = this.returnState;
47715
+ this._callState(cp);
47836
47716
  }
47837
47717
  }
47838
- // Hexademical character reference state
47839
- //------------------------------------------------------------------
47840
- _stateHexademicalCharacterReference(cp) {
47841
- if (isAsciiUpperHexDigit(cp)) {
47842
- this.charRefCode = this.charRefCode * 16 + cp - 0x37;
47843
- }
47844
- else if (isAsciiLowerHexDigit(cp)) {
47845
- this.charRefCode = this.charRefCode * 16 + cp - 0x57;
47846
- }
47847
- else if (isAsciiDigit(cp)) {
47848
- this.charRefCode = this.charRefCode * 16 + cp - 0x30;
47849
- }
47850
- else if (cp === CODE_POINTS.SEMICOLON) {
47851
- this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
47852
- }
47853
- else {
47854
- this._err(ERR.missingSemicolonAfterCharacterReference);
47855
- this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
47856
- this._stateNumericCharacterReferenceEnd(cp);
47857
- }
47858
- }
47859
- // Decimal character reference state
47860
- //------------------------------------------------------------------
47861
- _stateDecimalCharacterReference(cp) {
47862
- if (isAsciiDigit(cp)) {
47863
- this.charRefCode = this.charRefCode * 10 + cp - 0x30;
47864
- }
47865
- else if (cp === CODE_POINTS.SEMICOLON) {
47866
- this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
47867
- }
47868
- else {
47869
- this._err(ERR.missingSemicolonAfterCharacterReference);
47870
- this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
47871
- this._stateNumericCharacterReferenceEnd(cp);
47872
- }
47873
- }
47874
- // Numeric character reference end state
47875
- //------------------------------------------------------------------
47876
- _stateNumericCharacterReferenceEnd(cp) {
47877
- if (this.charRefCode === CODE_POINTS.NULL) {
47878
- this._err(ERR.nullCharacterReference);
47879
- this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
47880
- }
47881
- else if (this.charRefCode > 1114111) {
47882
- this._err(ERR.characterReferenceOutsideUnicodeRange);
47883
- this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
47884
- }
47885
- else if (isSurrogate(this.charRefCode)) {
47886
- this._err(ERR.surrogateCharacterReference);
47887
- this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
47888
- }
47889
- else if (isUndefinedCodePoint(this.charRefCode)) {
47890
- this._err(ERR.noncharacterCharacterReference);
47891
- }
47892
- else if (isControlCodePoint(this.charRefCode) || this.charRefCode === CODE_POINTS.CARRIAGE_RETURN) {
47893
- this._err(ERR.controlCharacterReference);
47894
- const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);
47895
- if (replacement !== undefined) {
47896
- this.charRefCode = replacement;
47897
- }
47898
- }
47899
- this._flushCodePointConsumedAsCharacterReference(this.charRefCode);
47900
- this._reconsumeInState(this.returnState, cp);
47901
- }
47902
47718
  }
47903
- //# sourceMappingURL=index.js.map
47719
+
47904
47720
  ;// ./node_modules/parse5/dist/parser/open-element-stack.js
47905
47721
 
47906
47722
  //Element utils
@@ -47916,31 +47732,25 @@ const IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([
47916
47732
  TAG_ID.THEAD,
47917
47733
  TAG_ID.TR,
47918
47734
  ]);
47919
- const SCOPING_ELEMENT_NS = new Map([
47920
- [TAG_ID.APPLET, html_NS.HTML],
47921
- [TAG_ID.CAPTION, html_NS.HTML],
47922
- [TAG_ID.HTML, html_NS.HTML],
47923
- [TAG_ID.MARQUEE, html_NS.HTML],
47924
- [TAG_ID.OBJECT, html_NS.HTML],
47925
- [TAG_ID.TABLE, html_NS.HTML],
47926
- [TAG_ID.TD, html_NS.HTML],
47927
- [TAG_ID.TEMPLATE, html_NS.HTML],
47928
- [TAG_ID.TH, html_NS.HTML],
47929
- [TAG_ID.ANNOTATION_XML, html_NS.MATHML],
47930
- [TAG_ID.MI, html_NS.MATHML],
47931
- [TAG_ID.MN, html_NS.MATHML],
47932
- [TAG_ID.MO, html_NS.MATHML],
47933
- [TAG_ID.MS, html_NS.MATHML],
47934
- [TAG_ID.MTEXT, html_NS.MATHML],
47935
- [TAG_ID.DESC, html_NS.SVG],
47936
- [TAG_ID.FOREIGN_OBJECT, html_NS.SVG],
47937
- [TAG_ID.TITLE, html_NS.SVG],
47735
+ const SCOPING_ELEMENTS_HTML = new Set([
47736
+ TAG_ID.APPLET,
47737
+ TAG_ID.CAPTION,
47738
+ TAG_ID.HTML,
47739
+ TAG_ID.MARQUEE,
47740
+ TAG_ID.OBJECT,
47741
+ TAG_ID.TABLE,
47742
+ TAG_ID.TD,
47743
+ TAG_ID.TEMPLATE,
47744
+ TAG_ID.TH,
47938
47745
  ]);
47939
- const NAMED_HEADERS = [TAG_ID.H1, TAG_ID.H2, TAG_ID.H3, TAG_ID.H4, TAG_ID.H5, TAG_ID.H6];
47940
- const TABLE_ROW_CONTEXT = [TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML];
47941
- const TABLE_BODY_CONTEXT = [TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML];
47942
- const TABLE_CONTEXT = [TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML];
47943
- const TABLE_CELLS = [TAG_ID.TD, TAG_ID.TH];
47746
+ const SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.OL, TAG_ID.UL]);
47747
+ const SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.BUTTON]);
47748
+ const SCOPING_ELEMENTS_MATHML = new Set([TAG_ID.ANNOTATION_XML, TAG_ID.MI, TAG_ID.MN, TAG_ID.MO, TAG_ID.MS, TAG_ID.MTEXT]);
47749
+ const SCOPING_ELEMENTS_SVG = new Set([TAG_ID.DESC, TAG_ID.FOREIGN_OBJECT, TAG_ID.TITLE]);
47750
+ const TABLE_ROW_CONTEXT = new Set([TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML]);
47751
+ const TABLE_BODY_CONTEXT = new Set([TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML]);
47752
+ const TABLE_CONTEXT = new Set([TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML]);
47753
+ const TABLE_CELLS = new Set([TAG_ID.TD, TAG_ID.TH]);
47944
47754
  //Stack of open elements
47945
47755
  class OpenElementStack {
47946
47756
  get currentTmplContentOrNode() {
@@ -48004,14 +47814,16 @@ class OpenElementStack {
48004
47814
  if (insertionIdx === this.stackTop) {
48005
47815
  this._updateCurrentElement();
48006
47816
  }
48007
- this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);
47817
+ if (this.current && this.currentTagId !== undefined) {
47818
+ this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);
47819
+ }
48008
47820
  }
48009
47821
  popUntilTagNamePopped(tagName) {
48010
47822
  let targetIdx = this.stackTop + 1;
48011
47823
  do {
48012
47824
  targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);
48013
47825
  } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== html_NS.HTML);
48014
- this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);
47826
+ this.shortenToLength(Math.max(targetIdx, 0));
48015
47827
  }
48016
47828
  shortenToLength(idx) {
48017
47829
  while (this.stackTop >= idx) {
@@ -48026,14 +47838,14 @@ class OpenElementStack {
48026
47838
  }
48027
47839
  popUntilElementPopped(element) {
48028
47840
  const idx = this._indexOf(element);
48029
- this.shortenToLength(idx < 0 ? 0 : idx);
47841
+ this.shortenToLength(Math.max(idx, 0));
48030
47842
  }
48031
47843
  popUntilPopped(tagNames, targetNS) {
48032
47844
  const idx = this._indexOfTagNames(tagNames, targetNS);
48033
- this.shortenToLength(idx < 0 ? 0 : idx);
47845
+ this.shortenToLength(Math.max(idx, 0));
48034
47846
  }
48035
47847
  popUntilNumberedHeaderPopped() {
48036
- this.popUntilPopped(NAMED_HEADERS, html_NS.HTML);
47848
+ this.popUntilPopped(NUMBERED_HEADERS, html_NS.HTML);
48037
47849
  }
48038
47850
  popUntilTableCellPopped() {
48039
47851
  this.popUntilPopped(TABLE_CELLS, html_NS.HTML);
@@ -48046,7 +47858,7 @@ class OpenElementStack {
48046
47858
  }
48047
47859
  _indexOfTagNames(tagNames, namespace) {
48048
47860
  for (let i = this.stackTop; i >= 0; i--) {
48049
- if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {
47861
+ if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {
48050
47862
  return i;
48051
47863
  }
48052
47864
  }
@@ -48096,124 +47908,141 @@ class OpenElementStack {
48096
47908
  return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML;
48097
47909
  }
48098
47910
  //Element in scope
48099
- hasInScope(tagName) {
47911
+ hasInDynamicScope(tagName, htmlScope) {
48100
47912
  for (let i = this.stackTop; i >= 0; i--) {
48101
47913
  const tn = this.tagIDs[i];
48102
- const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
48103
- if (tn === tagName && ns === html_NS.HTML) {
48104
- return true;
48105
- }
48106
- if (SCOPING_ELEMENT_NS.get(tn) === ns) {
48107
- return false;
47914
+ switch (this.treeAdapter.getNamespaceURI(this.items[i])) {
47915
+ case html_NS.HTML: {
47916
+ if (tn === tagName)
47917
+ return true;
47918
+ if (htmlScope.has(tn))
47919
+ return false;
47920
+ break;
47921
+ }
47922
+ case html_NS.SVG: {
47923
+ if (SCOPING_ELEMENTS_SVG.has(tn))
47924
+ return false;
47925
+ break;
47926
+ }
47927
+ case html_NS.MATHML: {
47928
+ if (SCOPING_ELEMENTS_MATHML.has(tn))
47929
+ return false;
47930
+ break;
47931
+ }
48108
47932
  }
48109
47933
  }
48110
47934
  return true;
48111
47935
  }
48112
- hasNumberedHeaderInScope() {
48113
- for (let i = this.stackTop; i >= 0; i--) {
48114
- const tn = this.tagIDs[i];
48115
- const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
48116
- if (isNumberedHeader(tn) && ns === html_NS.HTML) {
48117
- return true;
48118
- }
48119
- if (SCOPING_ELEMENT_NS.get(tn) === ns) {
48120
- return false;
48121
- }
48122
- }
48123
- return true;
47936
+ hasInScope(tagName) {
47937
+ return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);
48124
47938
  }
48125
47939
  hasInListItemScope(tagName) {
48126
- for (let i = this.stackTop; i >= 0; i--) {
48127
- const tn = this.tagIDs[i];
48128
- const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
48129
- if (tn === tagName && ns === html_NS.HTML) {
48130
- return true;
48131
- }
48132
- if (((tn === TAG_ID.UL || tn === TAG_ID.OL) && ns === html_NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {
48133
- return false;
48134
- }
48135
- }
48136
- return true;
47940
+ return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);
48137
47941
  }
48138
47942
  hasInButtonScope(tagName) {
47943
+ return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);
47944
+ }
47945
+ hasNumberedHeaderInScope() {
48139
47946
  for (let i = this.stackTop; i >= 0; i--) {
48140
47947
  const tn = this.tagIDs[i];
48141
- const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
48142
- if (tn === tagName && ns === html_NS.HTML) {
48143
- return true;
48144
- }
48145
- if ((tn === TAG_ID.BUTTON && ns === html_NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {
48146
- return false;
47948
+ switch (this.treeAdapter.getNamespaceURI(this.items[i])) {
47949
+ case html_NS.HTML: {
47950
+ if (NUMBERED_HEADERS.has(tn))
47951
+ return true;
47952
+ if (SCOPING_ELEMENTS_HTML.has(tn))
47953
+ return false;
47954
+ break;
47955
+ }
47956
+ case html_NS.SVG: {
47957
+ if (SCOPING_ELEMENTS_SVG.has(tn))
47958
+ return false;
47959
+ break;
47960
+ }
47961
+ case html_NS.MATHML: {
47962
+ if (SCOPING_ELEMENTS_MATHML.has(tn))
47963
+ return false;
47964
+ break;
47965
+ }
48147
47966
  }
48148
47967
  }
48149
47968
  return true;
48150
47969
  }
48151
47970
  hasInTableScope(tagName) {
48152
47971
  for (let i = this.stackTop; i >= 0; i--) {
48153
- const tn = this.tagIDs[i];
48154
- const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
48155
- if (ns !== html_NS.HTML) {
47972
+ if (this.treeAdapter.getNamespaceURI(this.items[i]) !== html_NS.HTML) {
48156
47973
  continue;
48157
47974
  }
48158
- if (tn === tagName) {
48159
- return true;
48160
- }
48161
- if (tn === TAG_ID.TABLE || tn === TAG_ID.TEMPLATE || tn === TAG_ID.HTML) {
48162
- return false;
47975
+ switch (this.tagIDs[i]) {
47976
+ case tagName: {
47977
+ return true;
47978
+ }
47979
+ case TAG_ID.TABLE:
47980
+ case TAG_ID.HTML: {
47981
+ return false;
47982
+ }
48163
47983
  }
48164
47984
  }
48165
47985
  return true;
48166
47986
  }
48167
47987
  hasTableBodyContextInTableScope() {
48168
47988
  for (let i = this.stackTop; i >= 0; i--) {
48169
- const tn = this.tagIDs[i];
48170
- const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
48171
- if (ns !== html_NS.HTML) {
47989
+ if (this.treeAdapter.getNamespaceURI(this.items[i]) !== html_NS.HTML) {
48172
47990
  continue;
48173
47991
  }
48174
- if (tn === TAG_ID.TBODY || tn === TAG_ID.THEAD || tn === TAG_ID.TFOOT) {
48175
- return true;
48176
- }
48177
- if (tn === TAG_ID.TABLE || tn === TAG_ID.HTML) {
48178
- return false;
47992
+ switch (this.tagIDs[i]) {
47993
+ case TAG_ID.TBODY:
47994
+ case TAG_ID.THEAD:
47995
+ case TAG_ID.TFOOT: {
47996
+ return true;
47997
+ }
47998
+ case TAG_ID.TABLE:
47999
+ case TAG_ID.HTML: {
48000
+ return false;
48001
+ }
48179
48002
  }
48180
48003
  }
48181
48004
  return true;
48182
48005
  }
48183
48006
  hasInSelectScope(tagName) {
48184
48007
  for (let i = this.stackTop; i >= 0; i--) {
48185
- const tn = this.tagIDs[i];
48186
- const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
48187
- if (ns !== html_NS.HTML) {
48008
+ if (this.treeAdapter.getNamespaceURI(this.items[i]) !== html_NS.HTML) {
48188
48009
  continue;
48189
48010
  }
48190
- if (tn === tagName) {
48191
- return true;
48192
- }
48193
- if (tn !== TAG_ID.OPTION && tn !== TAG_ID.OPTGROUP) {
48194
- return false;
48011
+ switch (this.tagIDs[i]) {
48012
+ case tagName: {
48013
+ return true;
48014
+ }
48015
+ case TAG_ID.OPTION:
48016
+ case TAG_ID.OPTGROUP: {
48017
+ break;
48018
+ }
48019
+ default: {
48020
+ return false;
48021
+ }
48195
48022
  }
48196
48023
  }
48197
48024
  return true;
48198
48025
  }
48199
48026
  //Implied end tags
48200
48027
  generateImpliedEndTags() {
48201
- while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {
48028
+ while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {
48202
48029
  this.pop();
48203
48030
  }
48204
48031
  }
48205
48032
  generateImpliedEndTagsThoroughly() {
48206
- while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
48033
+ while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
48207
48034
  this.pop();
48208
48035
  }
48209
48036
  }
48210
48037
  generateImpliedEndTagsWithExclusion(exclusionId) {
48211
- while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
48038
+ while (this.currentTagId !== undefined &&
48039
+ this.currentTagId !== exclusionId &&
48040
+ IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
48212
48041
  this.pop();
48213
48042
  }
48214
48043
  }
48215
48044
  }
48216
- //# sourceMappingURL=open-element-stack.js.map
48045
+
48217
48046
  ;// ./node_modules/parse5/dist/parser/formatting-element-list.js
48218
48047
  //Const
48219
48048
  const NOAH_ARK_CAPACITY = 3;
@@ -48221,7 +48050,7 @@ var EntryType;
48221
48050
  (function (EntryType) {
48222
48051
  EntryType[EntryType["Marker"] = 0] = "Marker";
48223
48052
  EntryType[EntryType["Element"] = 1] = "Element";
48224
- })(EntryType = EntryType || (EntryType = {}));
48053
+ })(EntryType || (EntryType = {}));
48225
48054
  const MARKER = { type: EntryType.Marker };
48226
48055
  //List of formatting elements
48227
48056
  class FormattingElementList {
@@ -48298,7 +48127,7 @@ class FormattingElementList {
48298
48127
  }
48299
48128
  removeEntry(entry) {
48300
48129
  const entryIndex = this.entries.indexOf(entry);
48301
- if (entryIndex >= 0) {
48130
+ if (entryIndex !== -1) {
48302
48131
  this.entries.splice(entryIndex, 1);
48303
48132
  }
48304
48133
  }
@@ -48309,11 +48138,11 @@ class FormattingElementList {
48309
48138
  */
48310
48139
  clearToLastMarker() {
48311
48140
  const markerIdx = this.entries.indexOf(MARKER);
48312
- if (markerIdx >= 0) {
48313
- this.entries.splice(0, markerIdx + 1);
48141
+ if (markerIdx === -1) {
48142
+ this.entries.length = 0;
48314
48143
  }
48315
48144
  else {
48316
- this.entries.length = 0;
48145
+ this.entries.splice(0, markerIdx + 1);
48317
48146
  }
48318
48147
  }
48319
48148
  //Search
@@ -48325,16 +48154,9 @@ class FormattingElementList {
48325
48154
  return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);
48326
48155
  }
48327
48156
  }
48328
- //# sourceMappingURL=formatting-element-list.js.map
48157
+
48329
48158
  ;// ./node_modules/parse5/dist/tree-adapters/default.js
48330
48159
 
48331
- function createTextNode(value) {
48332
- return {
48333
- nodeName: '#text',
48334
- value,
48335
- parentNode: null,
48336
- };
48337
- }
48338
48160
  const defaultTreeAdapter = {
48339
48161
  //Node construction
48340
48162
  createDocument() {
@@ -48367,6 +48189,13 @@ const defaultTreeAdapter = {
48367
48189
  parentNode: null,
48368
48190
  };
48369
48191
  },
48192
+ createTextNode(value) {
48193
+ return {
48194
+ nodeName: '#text',
48195
+ value,
48196
+ parentNode: null,
48197
+ };
48198
+ },
48370
48199
  //Tree mutation
48371
48200
  appendChild(parentNode, newNode) {
48372
48201
  parentNode.childNodes.push(newNode);
@@ -48422,7 +48251,7 @@ const defaultTreeAdapter = {
48422
48251
  return;
48423
48252
  }
48424
48253
  }
48425
- defaultTreeAdapter.appendChild(parentNode, createTextNode(text));
48254
+ defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));
48426
48255
  },
48427
48256
  insertTextBefore(parentNode, text, referenceNode) {
48428
48257
  const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];
@@ -48430,7 +48259,7 @@ const defaultTreeAdapter = {
48430
48259
  prevNode.value += text;
48431
48260
  }
48432
48261
  else {
48433
- defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);
48262
+ defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);
48434
48263
  }
48435
48264
  },
48436
48265
  adoptAttributes(recipient, attrs) {
@@ -48500,7 +48329,7 @@ const defaultTreeAdapter = {
48500
48329
  node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };
48501
48330
  },
48502
48331
  };
48503
- //# sourceMappingURL=default.js.map
48332
+
48504
48333
  ;// ./node_modules/parse5/dist/common/doctype.js
48505
48334
 
48506
48335
  //Const
@@ -48616,7 +48445,7 @@ function getDocumentMode(token) {
48616
48445
  }
48617
48446
  return DOCUMENT_MODE.NO_QUIRKS;
48618
48447
  }
48619
- //# sourceMappingURL=doctype.js.map
48448
+
48620
48449
  ;// ./node_modules/parse5/dist/common/foreign-content.js
48621
48450
 
48622
48451
  //MIME types
@@ -48695,7 +48524,6 @@ const XML_ATTRS_ADJUSTMENT_MAP = new Map([
48695
48524
  ['xlink:show', { prefix: 'xlink', name: 'show', namespace: html_NS.XLINK }],
48696
48525
  ['xlink:title', { prefix: 'xlink', name: 'title', namespace: html_NS.XLINK }],
48697
48526
  ['xlink:type', { prefix: 'xlink', name: 'type', namespace: html_NS.XLINK }],
48698
- ['xml:base', { prefix: 'xml', name: 'base', namespace: html_NS.XML }],
48699
48527
  ['xml:lang', { prefix: 'xml', name: 'lang', namespace: html_NS.XML }],
48700
48528
  ['xml:space', { prefix: 'xml', name: 'space', namespace: html_NS.XML }],
48701
48529
  ['xmlns', { prefix: '', name: 'xmlns', namespace: html_NS.XMLNS }],
@@ -48847,7 +48675,7 @@ function isIntegrationPoint(tn, ns, attrs, foreignNS) {
48847
48675
  return (((!foreignNS || foreignNS === html_NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||
48848
48676
  ((!foreignNS || foreignNS === html_NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));
48849
48677
  }
48850
- //# sourceMappingURL=foreign-content.js.map
48678
+
48851
48679
  ;// ./node_modules/parse5/dist/parser/index.js
48852
48680
 
48853
48681
 
@@ -48908,26 +48736,41 @@ const defaultParserOptions = {
48908
48736
  };
48909
48737
  //Parser
48910
48738
  class Parser {
48911
- constructor(options, document, fragmentContext = null, scriptHandler = null) {
48739
+ constructor(options, document,
48740
+ /** @internal */
48741
+ fragmentContext = null,
48742
+ /** @internal */
48743
+ scriptHandler = null) {
48912
48744
  this.fragmentContext = fragmentContext;
48913
48745
  this.scriptHandler = scriptHandler;
48914
48746
  this.currentToken = null;
48915
48747
  this.stopped = false;
48748
+ /** @internal */
48916
48749
  this.insertionMode = InsertionMode.INITIAL;
48750
+ /** @internal */
48917
48751
  this.originalInsertionMode = InsertionMode.INITIAL;
48752
+ /** @internal */
48918
48753
  this.headElement = null;
48754
+ /** @internal */
48919
48755
  this.formElement = null;
48920
48756
  /** Indicates that the current node is not an element in the HTML namespace */
48921
48757
  this.currentNotInHTML = false;
48922
48758
  /**
48923
48759
  * The template insertion mode stack is maintained from the left.
48924
48760
  * Ie. the topmost element will always have index 0.
48761
+ *
48762
+ * @internal
48925
48763
  */
48926
48764
  this.tmplInsertionModeStack = [];
48765
+ /** @internal */
48927
48766
  this.pendingCharacterTokens = [];
48767
+ /** @internal */
48928
48768
  this.hasNonWhitespacePendingCharacterToken = false;
48769
+ /** @internal */
48929
48770
  this.framesetOk = true;
48771
+ /** @internal */
48930
48772
  this.skipNextNewLine = false;
48773
+ /** @internal */
48931
48774
  this.fosterParentingEnabled = false;
48932
48775
  this.options = {
48933
48776
  ...defaultParserOptions,
@@ -48981,6 +48824,7 @@ class Parser {
48981
48824
  return fragment;
48982
48825
  }
48983
48826
  //Errors
48827
+ /** @internal */
48984
48828
  _err(token, code, beforeToken) {
48985
48829
  var _a;
48986
48830
  if (!this.onParseError)
@@ -48998,12 +48842,14 @@ class Parser {
48998
48842
  this.onParseError(err);
48999
48843
  }
49000
48844
  //Stack events
48845
+ /** @internal */
49001
48846
  onItemPush(node, tid, isTop) {
49002
48847
  var _a, _b;
49003
48848
  (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);
49004
48849
  if (isTop && this.openElements.stackTop > 0)
49005
48850
  this._setContextModes(node, tid);
49006
48851
  }
48852
+ /** @internal */
49007
48853
  onItemPop(node, isTop) {
49008
48854
  var _a, _b;
49009
48855
  if (this.options.sourceCodeLocationInfo) {
@@ -49024,10 +48870,12 @@ class Parser {
49024
48870
  }
49025
48871
  }
49026
48872
  _setContextModes(current, tid) {
49027
- const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === html_NS.HTML;
48873
+ const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === html_NS.HTML);
49028
48874
  this.currentNotInHTML = !isHTML;
49029
- this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current);
48875
+ this.tokenizer.inForeignNode =
48876
+ !isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);
49030
48877
  }
48878
+ /** @protected */
49031
48879
  _switchToTextParsing(currentToken, nextTokenizerState) {
49032
48880
  this._insertElement(currentToken, html_NS.HTML);
49033
48881
  this.tokenizer.state = nextTokenizerState;
@@ -49040,11 +48888,13 @@ class Parser {
49040
48888
  this.tokenizer.state = TokenizerMode.PLAINTEXT;
49041
48889
  }
49042
48890
  //Fragment parsing
48891
+ /** @protected */
49043
48892
  _getAdjustedCurrentElement() {
49044
48893
  return this.openElements.stackTop === 0 && this.fragmentContext
49045
48894
  ? this.fragmentContext
49046
48895
  : this.openElements.current;
49047
48896
  }
48897
+ /** @protected */
49048
48898
  _findFormInFragmentContext() {
49049
48899
  let node = this.fragmentContext;
49050
48900
  while (node) {
@@ -49087,6 +48937,7 @@ class Parser {
49087
48937
  }
49088
48938
  }
49089
48939
  //Tree mutation
48940
+ /** @protected */
49090
48941
  _setDocumentType(token) {
49091
48942
  const name = token.name || '';
49092
48943
  const publicId = token.publicId || '';
@@ -49100,6 +48951,7 @@ class Parser {
49100
48951
  }
49101
48952
  }
49102
48953
  }
48954
+ /** @protected */
49103
48955
  _attachElementToTree(element, location) {
49104
48956
  if (this.options.sourceCodeLocationInfo) {
49105
48957
  const loc = location && {
@@ -49113,23 +48965,31 @@ class Parser {
49113
48965
  }
49114
48966
  else {
49115
48967
  const parent = this.openElements.currentTmplContentOrNode;
49116
- this.treeAdapter.appendChild(parent, element);
48968
+ this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);
49117
48969
  }
49118
48970
  }
48971
+ /**
48972
+ * For self-closing tags. Add an element to the tree, but skip adding it
48973
+ * to the stack.
48974
+ */
48975
+ /** @protected */
49119
48976
  _appendElement(token, namespaceURI) {
49120
48977
  const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);
49121
48978
  this._attachElementToTree(element, token.location);
49122
48979
  }
48980
+ /** @protected */
49123
48981
  _insertElement(token, namespaceURI) {
49124
48982
  const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);
49125
48983
  this._attachElementToTree(element, token.location);
49126
48984
  this.openElements.push(element, token.tagID);
49127
48985
  }
48986
+ /** @protected */
49128
48987
  _insertFakeElement(tagName, tagID) {
49129
48988
  const element = this.treeAdapter.createElement(tagName, html_NS.HTML, []);
49130
48989
  this._attachElementToTree(element, null);
49131
48990
  this.openElements.push(element, tagID);
49132
48991
  }
48992
+ /** @protected */
49133
48993
  _insertTemplate(token) {
49134
48994
  const tmpl = this.treeAdapter.createElement(token.tagName, html_NS.HTML, token.attrs);
49135
48995
  const content = this.treeAdapter.createDocumentFragment();
@@ -49139,6 +48999,7 @@ class Parser {
49139
48999
  if (this.options.sourceCodeLocationInfo)
49140
49000
  this.treeAdapter.setNodeSourceCodeLocation(content, null);
49141
49001
  }
49002
+ /** @protected */
49142
49003
  _insertFakeRootElement() {
49143
49004
  const element = this.treeAdapter.createElement(TAG_NAMES.HTML, html_NS.HTML, []);
49144
49005
  if (this.options.sourceCodeLocationInfo)
@@ -49146,6 +49007,7 @@ class Parser {
49146
49007
  this.treeAdapter.appendChild(this.openElements.current, element);
49147
49008
  this.openElements.push(element, TAG_ID.HTML);
49148
49009
  }
49010
+ /** @protected */
49149
49011
  _appendCommentNode(token, parent) {
49150
49012
  const commentNode = this.treeAdapter.createCommentNode(token.data);
49151
49013
  this.treeAdapter.appendChild(parent, commentNode);
@@ -49153,6 +49015,7 @@ class Parser {
49153
49015
  this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);
49154
49016
  }
49155
49017
  }
49018
+ /** @protected */
49156
49019
  _insertCharacters(token) {
49157
49020
  let parent;
49158
49021
  let beforeElement;
@@ -49184,12 +49047,14 @@ class Parser {
49184
49047
  this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);
49185
49048
  }
49186
49049
  }
49050
+ /** @protected */
49187
49051
  _adoptNodes(donor, recipient) {
49188
49052
  for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {
49189
49053
  this.treeAdapter.detachNode(child);
49190
49054
  this.treeAdapter.appendChild(recipient, child);
49191
49055
  }
49192
49056
  }
49057
+ /** @protected */
49193
49058
  _setEndLocation(element, closingToken) {
49194
49059
  if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {
49195
49060
  const ctLoc = closingToken.location;
@@ -49237,8 +49102,10 @@ class Parser {
49237
49102
  // If it _is_ an integration point, then we might have to check that it is not an HTML
49238
49103
  // integration point.
49239
49104
  ((token.tagID === TAG_ID.MGLYPH || token.tagID === TAG_ID.MALIGNMARK) &&
49105
+ currentTagId !== undefined &&
49240
49106
  !this._isIntegrationPoint(currentTagId, current, html_NS.HTML)));
49241
49107
  }
49108
+ /** @protected */
49242
49109
  _processToken(token) {
49243
49110
  switch (token.type) {
49244
49111
  case TokenType.CHARACTER: {
@@ -49276,17 +49143,19 @@ class Parser {
49276
49143
  }
49277
49144
  }
49278
49145
  //Integration points
49146
+ /** @protected */
49279
49147
  _isIntegrationPoint(tid, element, foreignNS) {
49280
49148
  const ns = this.treeAdapter.getNamespaceURI(element);
49281
49149
  const attrs = this.treeAdapter.getAttrList(element);
49282
49150
  return isIntegrationPoint(tid, ns, attrs, foreignNS);
49283
49151
  }
49284
49152
  //Active formatting elements reconstruction
49153
+ /** @protected */
49285
49154
  _reconstructActiveFormattingElements() {
49286
49155
  const listLength = this.activeFormattingElements.entries.length;
49287
49156
  if (listLength) {
49288
49157
  const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));
49289
- const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;
49158
+ const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;
49290
49159
  for (let i = unopenIdx; i >= 0; i--) {
49291
49160
  const entry = this.activeFormattingElements.entries[i];
49292
49161
  this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));
@@ -49295,17 +49164,20 @@ class Parser {
49295
49164
  }
49296
49165
  }
49297
49166
  //Close elements
49167
+ /** @protected */
49298
49168
  _closeTableCell() {
49299
49169
  this.openElements.generateImpliedEndTags();
49300
49170
  this.openElements.popUntilTableCellPopped();
49301
49171
  this.activeFormattingElements.clearToLastMarker();
49302
49172
  this.insertionMode = InsertionMode.IN_ROW;
49303
49173
  }
49174
+ /** @protected */
49304
49175
  _closePElement() {
49305
49176
  this.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.P);
49306
49177
  this.openElements.popUntilTagNamePopped(TAG_ID.P);
49307
49178
  }
49308
49179
  //Insertion modes
49180
+ /** @protected */
49309
49181
  _resetInsertionMode() {
49310
49182
  for (let i = this.openElements.stackTop; i >= 0; i--) {
49311
49183
  //Insertion mode reset map
@@ -49371,6 +49243,7 @@ class Parser {
49371
49243
  }
49372
49244
  this.insertionMode = InsertionMode.IN_BODY;
49373
49245
  }
49246
+ /** @protected */
49374
49247
  _resetInsertionModeForSelect(selectIdx) {
49375
49248
  if (selectIdx > 0) {
49376
49249
  for (let i = selectIdx - 1; i > 0; i--) {
@@ -49387,12 +49260,17 @@ class Parser {
49387
49260
  this.insertionMode = InsertionMode.IN_SELECT;
49388
49261
  }
49389
49262
  //Foster parenting
49263
+ /** @protected */
49390
49264
  _isElementCausesFosterParenting(tn) {
49391
49265
  return TABLE_STRUCTURE_TAGS.has(tn);
49392
49266
  }
49267
+ /** @protected */
49393
49268
  _shouldFosterParentOnInsertion() {
49394
- return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);
49269
+ return (this.fosterParentingEnabled &&
49270
+ this.openElements.currentTagId !== undefined &&
49271
+ this._isElementCausesFosterParenting(this.openElements.currentTagId));
49395
49272
  }
49273
+ /** @protected */
49396
49274
  _findFosterParentingLocation() {
49397
49275
  for (let i = this.openElements.stackTop; i >= 0; i--) {
49398
49276
  const openElement = this.openElements.items[i];
@@ -49416,6 +49294,7 @@ class Parser {
49416
49294
  }
49417
49295
  return { parent: this.openElements.items[0], beforeElement: null };
49418
49296
  }
49297
+ /** @protected */
49419
49298
  _fosterParentElement(element) {
49420
49299
  const location = this._findFosterParentingLocation();
49421
49300
  if (location.beforeElement) {
@@ -49426,10 +49305,12 @@ class Parser {
49426
49305
  }
49427
49306
  }
49428
49307
  //Special elements
49308
+ /** @protected */
49429
49309
  _isSpecialElement(element, id) {
49430
49310
  const ns = this.treeAdapter.getNamespaceURI(element);
49431
49311
  return SPECIAL_ELEMENTS[ns].has(id);
49432
49312
  }
49313
+ /** @internal */
49433
49314
  onCharacter(token) {
49434
49315
  this.skipNextNewLine = false;
49435
49316
  if (this.tokenizer.inForeignNode) {
@@ -49500,6 +49381,7 @@ class Parser {
49500
49381
  // Do nothing
49501
49382
  }
49502
49383
  }
49384
+ /** @internal */
49503
49385
  onNullCharacter(token) {
49504
49386
  this.skipNextNewLine = false;
49505
49387
  if (this.tokenizer.inForeignNode) {
@@ -49557,6 +49439,7 @@ class Parser {
49557
49439
  // Do nothing
49558
49440
  }
49559
49441
  }
49442
+ /** @internal */
49560
49443
  onComment(token) {
49561
49444
  this.skipNextNewLine = false;
49562
49445
  if (this.currentNotInHTML) {
@@ -49602,6 +49485,7 @@ class Parser {
49602
49485
  // Do nothing
49603
49486
  }
49604
49487
  }
49488
+ /** @internal */
49605
49489
  onDoctype(token) {
49606
49490
  this.skipNextNewLine = false;
49607
49491
  switch (this.insertionMode) {
@@ -49624,6 +49508,7 @@ class Parser {
49624
49508
  // Do nothing
49625
49509
  }
49626
49510
  }
49511
+ /** @internal */
49627
49512
  onStartTag(token) {
49628
49513
  this.skipNextNewLine = false;
49629
49514
  this.currentToken = token;
@@ -49641,6 +49526,7 @@ class Parser {
49641
49526
  * for nested calls.
49642
49527
  *
49643
49528
  * @param token The token to process.
49529
+ * @protected
49644
49530
  */
49645
49531
  _processStartTag(token) {
49646
49532
  if (this.shouldProcessStartTagTokenInForeignContent(token)) {
@@ -49650,6 +49536,7 @@ class Parser {
49650
49536
  this._startTagOutsideForeignContent(token);
49651
49537
  }
49652
49538
  }
49539
+ /** @protected */
49653
49540
  _startTagOutsideForeignContent(token) {
49654
49541
  switch (this.insertionMode) {
49655
49542
  case InsertionMode.INITIAL: {
@@ -49744,6 +49631,7 @@ class Parser {
49744
49631
  // Do nothing
49745
49632
  }
49746
49633
  }
49634
+ /** @internal */
49747
49635
  onEndTag(token) {
49748
49636
  this.skipNextNewLine = false;
49749
49637
  this.currentToken = token;
@@ -49754,6 +49642,7 @@ class Parser {
49754
49642
  this._endTagOutsideForeignContent(token);
49755
49643
  }
49756
49644
  }
49645
+ /** @protected */
49757
49646
  _endTagOutsideForeignContent(token) {
49758
49647
  switch (this.insertionMode) {
49759
49648
  case InsertionMode.INITIAL: {
@@ -49848,6 +49737,7 @@ class Parser {
49848
49737
  // Do nothing
49849
49738
  }
49850
49739
  }
49740
+ /** @internal */
49851
49741
  onEof(token) {
49852
49742
  switch (this.insertionMode) {
49853
49743
  case InsertionMode.INITIAL: {
@@ -49910,6 +49800,7 @@ class Parser {
49910
49800
  // Do nothing
49911
49801
  }
49912
49802
  }
49803
+ /** @internal */
49913
49804
  onWhitespaceCharacter(token) {
49914
49805
  if (this.skipNextNewLine) {
49915
49806
  this.skipNextNewLine = false;
@@ -49996,7 +49887,7 @@ function aaObtainFurthestBlock(p, formattingElementEntry) {
49996
49887
  }
49997
49888
  }
49998
49889
  if (!furthestBlock) {
49999
- p.openElements.shortenToLength(idx < 0 ? 0 : idx);
49890
+ p.openElements.shortenToLength(Math.max(idx, 0));
50000
49891
  p.activeFormattingElements.removeEntry(formattingElementEntry);
50001
49892
  }
50002
49893
  return furthestBlock;
@@ -50482,7 +50373,7 @@ function numberedHeaderStartTagInBody(p, token) {
50482
50373
  if (p.openElements.hasInButtonScope(TAG_ID.P)) {
50483
50374
  p._closePElement();
50484
50375
  }
50485
- if (isNumberedHeader(p.openElements.currentTagId)) {
50376
+ if (p.openElements.currentTagId !== undefined && NUMBERED_HEADERS.has(p.openElements.currentTagId)) {
50486
50377
  p.openElements.pop();
50487
50378
  }
50488
50379
  p._insertElement(token, html_NS.HTML);
@@ -50644,9 +50535,9 @@ function iframeStartTagInBody(p, token) {
50644
50535
  p.framesetOk = false;
50645
50536
  p._switchToTextParsing(token, TokenizerMode.RAWTEXT);
50646
50537
  }
50647
- //NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse
50648
- //<noembed> as rawtext.
50649
- function noembedStartTagInBody(p, token) {
50538
+ //NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse
50539
+ //<noembed>/<noframes> as rawtext.
50540
+ function rawTextStartTagInBody(p, token) {
50650
50541
  p._switchToTextParsing(token, TokenizerMode.RAWTEXT);
50651
50542
  }
50652
50543
  function selectStartTagInBody(p, token) {
@@ -50758,6 +50649,7 @@ function startTagInBody(p, token) {
50758
50649
  case TAG_ID.DETAILS:
50759
50650
  case TAG_ID.ADDRESS:
50760
50651
  case TAG_ID.ARTICLE:
50652
+ case TAG_ID.SEARCH:
50761
50653
  case TAG_ID.SECTION:
50762
50654
  case TAG_ID.SUMMARY:
50763
50655
  case TAG_ID.FIELDSET:
@@ -50881,8 +50773,9 @@ function startTagInBody(p, token) {
50881
50773
  optgroupStartTagInBody(p, token);
50882
50774
  break;
50883
50775
  }
50884
- case TAG_ID.NOEMBED: {
50885
- noembedStartTagInBody(p, token);
50776
+ case TAG_ID.NOEMBED:
50777
+ case TAG_ID.NOFRAMES: {
50778
+ rawTextStartTagInBody(p, token);
50886
50779
  break;
50887
50780
  }
50888
50781
  case TAG_ID.FRAMESET: {
@@ -50895,7 +50788,7 @@ function startTagInBody(p, token) {
50895
50788
  }
50896
50789
  case TAG_ID.NOSCRIPT: {
50897
50790
  if (p.options.scriptingEnabled) {
50898
- noembedStartTagInBody(p, token);
50791
+ rawTextStartTagInBody(p, token);
50899
50792
  }
50900
50793
  else {
50901
50794
  genericStartTagInBody(p, token);
@@ -51067,6 +50960,7 @@ function endTagInBody(p, token) {
51067
50960
  case TAG_ID.ADDRESS:
51068
50961
  case TAG_ID.ARTICLE:
51069
50962
  case TAG_ID.DETAILS:
50963
+ case TAG_ID.SEARCH:
51070
50964
  case TAG_ID.SECTION:
51071
50965
  case TAG_ID.SUMMARY:
51072
50966
  case TAG_ID.LISTING:
@@ -51152,7 +51046,7 @@ function eofInText(p, token) {
51152
51046
  // The "in table" insertion mode
51153
51047
  //------------------------------------------------------------------
51154
51048
  function characterInTable(p, token) {
51155
- if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {
51049
+ if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {
51156
51050
  p.pendingCharacterTokens.length = 0;
51157
51051
  p.hasNonWhitespacePendingCharacterToken = false;
51158
51052
  p.originalInsertionMode = p.insertionMode;
@@ -51667,6 +51561,17 @@ function startTagInSelect(p, token) {
51667
51561
  p._insertElement(token, html_NS.HTML);
51668
51562
  break;
51669
51563
  }
51564
+ case TAG_ID.HR: {
51565
+ if (p.openElements.currentTagId === TAG_ID.OPTION) {
51566
+ p.openElements.pop();
51567
+ }
51568
+ if (p.openElements.currentTagId === TAG_ID.OPTGROUP) {
51569
+ p.openElements.pop();
51570
+ }
51571
+ p._appendElement(token, html_NS.HTML);
51572
+ token.ackSelfClosing = true;
51573
+ break;
51574
+ }
51670
51575
  case TAG_ID.INPUT:
51671
51576
  case TAG_ID.KEYGEN:
51672
51577
  case TAG_ID.TEXTAREA:
@@ -51966,6 +51871,7 @@ function characterInForeignContent(p, token) {
51966
51871
  }
51967
51872
  function popUntilHtmlOrIntegrationPoint(p) {
51968
51873
  while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== html_NS.HTML &&
51874
+ p.openElements.currentTagId !== undefined &&
51969
51875
  !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {
51970
51876
  p.openElements.pop();
51971
51877
  }
@@ -52016,9 +51922,9 @@ function endTagInForeignContent(p, token) {
52016
51922
  }
52017
51923
  }
52018
51924
  }
52019
- //# sourceMappingURL=index.js.map
52020
- ;// ./node_modules/entities/lib/esm/escape.js
52021
- const escape_xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
51925
+
51926
+ ;// ./node_modules/parse5/node_modules/entities/dist/esm/escape.js
51927
+ const escape_xmlReplacer = /["$&'<>\u0080-\uFFFF]/g;
52022
51928
  const xmlCodeMap = new Map([
52023
51929
  [34, "&quot;"],
52024
51930
  [38, "&amp;"],
@@ -52029,15 +51935,15 @@ const xmlCodeMap = new Map([
52029
51935
  // For compatibility with node < 4, we wrap `codePointAt`
52030
51936
  const escape_getCodePoint =
52031
51937
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
52032
- String.prototype.codePointAt != null
52033
- ? (str, index) => str.codePointAt(index)
51938
+ String.prototype.codePointAt == null
51939
+ ? (c, index) => (c.charCodeAt(index) & 64512) === 55296
51940
+ ? (c.charCodeAt(index) - 55296) * 1024 +
51941
+ c.charCodeAt(index + 1) -
51942
+ 56320 +
51943
+ 65536
51944
+ : c.charCodeAt(index)
52034
51945
  : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
52035
- (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800
52036
- ? (c.charCodeAt(index) - 0xd800) * 0x400 +
52037
- c.charCodeAt(index + 1) -
52038
- 0xdc00 +
52039
- 0x10000
52040
- : c.charCodeAt(index);
51946
+ (input, index) => input.codePointAt(index);
52041
51947
  /**
52042
51948
  * Encodes all non-ASCII characters, as well as characters not valid in XML
52043
51949
  * documents using XML entities.
@@ -52045,25 +51951,25 @@ String.prototype.codePointAt != null
52045
51951
  * If a character has no equivalent entity, a
52046
51952
  * numeric hexadecimal reference (eg. `&#xfc;`) will be used.
52047
51953
  */
52048
- function escape_encodeXML(str) {
52049
- let ret = "";
52050
- let lastIdx = 0;
51954
+ function escape_encodeXML(input) {
51955
+ let returnValue = "";
51956
+ let lastIndex = 0;
52051
51957
  let match;
52052
- while ((match = escape_xmlReplacer.exec(str)) !== null) {
52053
- const i = match.index;
52054
- const char = str.charCodeAt(i);
51958
+ while ((match = escape_xmlReplacer.exec(input)) !== null) {
51959
+ const { index } = match;
51960
+ const char = input.charCodeAt(index);
52055
51961
  const next = xmlCodeMap.get(char);
52056
- if (next !== undefined) {
52057
- ret += str.substring(lastIdx, i) + next;
52058
- lastIdx = i + 1;
51962
+ if (next === undefined) {
51963
+ returnValue += `${input.substring(lastIndex, index)}&#x${escape_getCodePoint(input, index).toString(16)};`;
51964
+ // Increase by 1 if we have a surrogate pair
51965
+ lastIndex = escape_xmlReplacer.lastIndex += Number((char & 64512) === 55296);
52059
51966
  }
52060
51967
  else {
52061
- ret += `${str.substring(lastIdx, i)}&#x${escape_getCodePoint(str, i).toString(16)};`;
52062
- // Increase by 1 if we have a surrogate pair
52063
- lastIdx = escape_xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);
51968
+ returnValue += input.substring(lastIndex, index) + next;
51969
+ lastIndex = index + 1;
52064
51970
  }
52065
51971
  }
52066
- return ret + str.substr(lastIdx);
51972
+ return returnValue + input.substr(lastIndex);
52067
51973
  }
52068
51974
  /**
52069
51975
  * Encodes all non-ASCII characters, as well as characters not valid in XML
@@ -52088,18 +51994,18 @@ const escape_escape = (/* unused pure expression or super */ null && (escape_enc
52088
51994
  function getEscaper(regex, map) {
52089
51995
  return function escape(data) {
52090
51996
  let match;
52091
- let lastIdx = 0;
51997
+ let lastIndex = 0;
52092
51998
  let result = "";
52093
51999
  while ((match = regex.exec(data))) {
52094
- if (lastIdx !== match.index) {
52095
- result += data.substring(lastIdx, match.index);
52000
+ if (lastIndex !== match.index) {
52001
+ result += data.substring(lastIndex, match.index);
52096
52002
  }
52097
52003
  // We know that this character will be in the map.
52098
52004
  result += map.get(match[0].charCodeAt(0));
52099
52005
  // Every match will be of length 1
52100
- lastIdx = match.index + 1;
52006
+ lastIndex = match.index + 1;
52101
52007
  }
52102
- return result + data.substring(lastIdx);
52008
+ return result + data.substring(lastIndex);
52103
52009
  };
52104
52010
  }
52105
52011
  /**
@@ -52109,14 +52015,15 @@ function getEscaper(regex, map) {
52109
52015
  *
52110
52016
  * @param data String to escape.
52111
52017
  */
52112
- const escape_escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
52018
+ const escape_escapeUTF8 = /* #__PURE__ */ (/* unused pure expression or super */ null && (getEscaper(/["&'<>]/g, xmlCodeMap)));
52113
52019
  /**
52114
52020
  * Encodes all characters that have to be escaped in HTML attributes,
52115
52021
  * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
52116
52022
  *
52117
52023
  * @param data String to escape.
52118
52024
  */
52119
- const escape_escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([
52025
+ const escape_escapeAttribute =
52026
+ /* #__PURE__ */ getEscaper(/["&\u00A0]/g, new Map([
52120
52027
  [34, "&quot;"],
52121
52028
  [38, "&amp;"],
52122
52029
  [160, "&nbsp;"],
@@ -52127,7 +52034,7 @@ const escape_escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([
52127
52034
  *
52128
52035
  * @param data String to escape.
52129
52036
  */
52130
- const escape_escapeText = getEscaper(/[&<>\u00A0]/g, new Map([
52037
+ const escape_escapeText = /* #__PURE__ */ getEscaper(/[&<>\u00A0]/g, new Map([
52131
52038
  [38, "&amp;"],
52132
52039
  [60, "&lt;"],
52133
52040
  [62, "&gt;"],
@@ -52205,7 +52112,7 @@ function serializer_serialize(node, options) {
52205
52112
  * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');
52206
52113
  *
52207
52114
  * // Serializes the <div> element.
52208
- * const html = parse5.serializeOuter(document.childNodes[0]);
52115
+ * const str = parse5.serializeOuter(document.childNodes[0]);
52209
52116
  *
52210
52117
  * console.log(str); //> '<div>Hello, <b>world</b>!</div>'
52211
52118
  * ```
@@ -52257,10 +52164,7 @@ function serializeAttributes(node, { treeAdapter }) {
52257
52164
  let html = '';
52258
52165
  for (const attr of treeAdapter.getAttrList(node)) {
52259
52166
  html += ' ';
52260
- if (!attr.namespace) {
52261
- html += attr.name;
52262
- }
52263
- else
52167
+ if (attr.namespace) {
52264
52168
  switch (attr.namespace) {
52265
52169
  case NS.XML: {
52266
52170
  html += `xml:${attr.name}`;
@@ -52281,6 +52185,10 @@ function serializeAttributes(node, { treeAdapter }) {
52281
52185
  html += `${attr.prefix}:${attr.name}`;
52282
52186
  }
52283
52187
  }
52188
+ }
52189
+ else {
52190
+ html += attr.name;
52191
+ }
52284
52192
  html += `="${escapeAttribute(attr.value)}"`;
52285
52193
  }
52286
52194
  return html;
@@ -52302,7 +52210,7 @@ function serializeCommentNode(node, { treeAdapter }) {
52302
52210
  function serializeDocumentTypeNode(node, { treeAdapter }) {
52303
52211
  return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;
52304
52212
  }
52305
- //# sourceMappingURL=index.js.map
52213
+
52306
52214
  ;// ./node_modules/parse5/dist/index.js
52307
52215
 
52308
52216
 
@@ -52311,9 +52219,7 @@ function serializeDocumentTypeNode(node, { treeAdapter }) {
52311
52219
 
52312
52220
  /** @internal */
52313
52221
 
52314
- /** @internal */
52315
52222
 
52316
- /** @internal */
52317
52223
 
52318
52224
  /** @internal */
52319
52225
 
@@ -52348,7 +52254,7 @@ function parseFragment(fragmentContext, html, options) {
52348
52254
  parser.tokenizer.write(html, true);
52349
52255
  return parser.getFragment();
52350
52256
  }
52351
- //# sourceMappingURL=index.js.map
52257
+
52352
52258
  ;// ./node_modules/hast-util-from-html/lib/errors.js
52353
52259
  /**
52354
52260
  * @typedef ErrorInfo
@@ -70513,9 +70419,416 @@ const mdast = (text, opts = {}) => {
70513
70419
  };
70514
70420
  /* harmony default export */ const lib_mdast = (mdast);
70515
70421
 
70422
+ ;// ./lib/utils/mdxish/protect-code-blocks.ts
70423
+ /**
70424
+ * Replaces code blocks and inline code with placeholders to protect them from preprocessing.
70425
+ *
70426
+ * @param content - The markdown content to process
70427
+ * @returns Object containing protected content and arrays of original code blocks
70428
+ * @example
70429
+ * ```typescript
70430
+ * const input = 'Text with `inline code` and ```fenced block```';
70431
+ * protectCodeBlocks(input)
70432
+ * // Returns: {
70433
+ * // protectedCode: {
70434
+ * // codeBlocks: ['```fenced block```'],
70435
+ * // inlineCode: ['`inline code`']
70436
+ * // },
70437
+ * // protectedContent: 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___'
70438
+ * // }
70439
+ * ```
70440
+ */
70441
+ function protectCodeBlocks(content) {
70442
+ const codeBlocks = [];
70443
+ const inlineCode = [];
70444
+ let protectedContent = '';
70445
+ let remaining = content;
70446
+ let codeBlockStart = remaining.indexOf('```');
70447
+ while (codeBlockStart !== -1) {
70448
+ protectedContent += remaining.slice(0, codeBlockStart);
70449
+ remaining = remaining.slice(codeBlockStart);
70450
+ const codeBlockEnd = remaining.indexOf('```', 3);
70451
+ if (codeBlockEnd === -1) {
70452
+ break;
70453
+ }
70454
+ const match = remaining.slice(0, codeBlockEnd + 3);
70455
+ const index = codeBlocks.length;
70456
+ codeBlocks.push(match);
70457
+ protectedContent += `___CODE_BLOCK_${index}___`;
70458
+ remaining = remaining.slice(codeBlockEnd + 3);
70459
+ codeBlockStart = remaining.indexOf('```');
70460
+ }
70461
+ protectedContent += remaining;
70462
+ protectedContent = protectedContent.replace(/`([^`\n]+)`/g, match => {
70463
+ const index = inlineCode.length;
70464
+ inlineCode.push(match);
70465
+ return `___INLINE_CODE_${index}___`;
70466
+ });
70467
+ return { protectedCode: { codeBlocks, inlineCode }, protectedContent };
70468
+ }
70469
+ /**
70470
+ * Restores inline code by replacing placeholders with original content.
70471
+ *
70472
+ * @param content - Content with inline code placeholders
70473
+ * @param protectedCode - The protected code arrays
70474
+ * @returns Content with inline code restored
70475
+ */
70476
+ function restoreInlineCode(content, protectedCode) {
70477
+ return content.replace(/___INLINE_CODE_(\d+)___/g, (_m, idx) => {
70478
+ return protectedCode.inlineCode[parseInt(idx, 10)];
70479
+ });
70480
+ }
70481
+ /**
70482
+ * Restores fenced code blocks by replacing placeholders with original content.
70483
+ *
70484
+ * @param content - Content with code block placeholders
70485
+ * @param protectedCode - The protected code arrays
70486
+ * @returns Content with code blocks restored
70487
+ */
70488
+ function restoreFencedCodeBlocks(content, protectedCode) {
70489
+ return content.replace(/___CODE_BLOCK_(\d+)___/g, (_m, idx) => {
70490
+ return protectedCode.codeBlocks[parseInt(idx, 10)];
70491
+ });
70492
+ }
70493
+ /**
70494
+ * Restores all code blocks and inline code by replacing placeholders with original content.
70495
+ *
70496
+ * @param content - Content with code placeholders
70497
+ * @param protectedCode - The protected code arrays
70498
+ * @returns Content with all code blocks and inline code restored
70499
+ * @example
70500
+ * ```typescript
70501
+ * const content = 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___';
70502
+ * const protectedCode = {
70503
+ * codeBlocks: ['```js\ncode\n```'],
70504
+ * inlineCode: ['`inline`']
70505
+ * };
70506
+ * restoreCodeBlocks(content, protectedCode)
70507
+ * // Returns: 'Text with `inline` and ```js\ncode\n```'
70508
+ * ```
70509
+ */
70510
+ function restoreCodeBlocks(content, protectedCode) {
70511
+ let restored = restoreFencedCodeBlocks(content, protectedCode);
70512
+ restored = restoreInlineCode(restored, protectedCode);
70513
+ return restored;
70514
+ }
70515
+
70516
+ ;// ./processor/transform/mdxish/preprocess-jsx-expressions.ts
70517
+
70518
+ // Base64 encode (Node.js + browser compatible)
70519
+ function base64Encode(str) {
70520
+ if (typeof Buffer !== 'undefined') {
70521
+ return Buffer.from(str, 'utf-8').toString('base64');
70522
+ }
70523
+ return btoa(unescape(encodeURIComponent(str)));
70524
+ }
70525
+ // Base64 decode (Node.js + browser compatible)
70526
+ function base64Decode(str) {
70527
+ if (typeof Buffer !== 'undefined') {
70528
+ return Buffer.from(str, 'base64').toString('utf-8');
70529
+ }
70530
+ return decodeURIComponent(escape(atob(str)));
70531
+ }
70532
+ function escapeHtmlAttribute(value) {
70533
+ return value
70534
+ .replace(/&/g, '&amp;')
70535
+ .replace(/"/g, '&quot;')
70536
+ .replace(/</g, '&lt;')
70537
+ .replace(/>/g, '&gt;')
70538
+ .replace(/\n/g, '&#10;');
70539
+ }
70540
+ // Marker prefix for JSON-serialized complex values (arrays/objects)
70541
+ // Using a prefix that won't conflict with regular string values
70542
+ const JSON_VALUE_MARKER = '__MDXISH_JSON__';
70543
+ // Markers for protected HTMLBlock content (HTML comments avoid markdown parsing issues)
70544
+ const HTML_BLOCK_CONTENT_START = '<!--RDMX_HTMLBLOCK:';
70545
+ const HTML_BLOCK_CONTENT_END = ':RDMX_HTMLBLOCK-->';
70546
+ /**
70547
+ * Evaluates a JavaScript expression using context variables.
70548
+ *
70549
+ * @param expression
70550
+ * @param context
70551
+ * @returns The evaluated result
70552
+ * @example
70553
+ * ```typescript
70554
+ * const context = { baseUrl: 'https://example.com', path: '/api' };
70555
+ * evaluateExpression('baseUrl + path', context)
70556
+ * // Returns: 'https://example.com/api'
70557
+ * ```
70558
+ */
70559
+ function evaluateExpression(expression, context) {
70560
+ const contextKeys = Object.keys(context);
70561
+ const contextValues = Object.values(context);
70562
+ // eslint-disable-next-line no-new-func
70563
+ const func = new Function(...contextKeys, `return ${expression}`);
70564
+ return func(...contextValues);
70565
+ }
70566
+ /**
70567
+ * Base64 encodes HTMLBlock template literal content to prevent markdown parser from consuming <script>/<style> tags.
70568
+ *
70569
+ * @param content
70570
+ * @returns Content with HTMLBlock template literals base64 encoded in HTML comments
70571
+ * @example
70572
+ * ```typescript
70573
+ * const input = '<HTMLBlock>{`<script>alert("xss")</script>`}</HTMLBlock>';
70574
+ * protectHTMLBlockContent(input)
70575
+ * // Returns: '<HTMLBlock><!--RDMX_HTMLBLOCK:PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=:RDMX_HTMLBLOCK--></HTMLBlock>'
70576
+ * ```
70577
+ */
70578
+ function protectHTMLBlockContent(content) {
70579
+ return content.replace(/(<HTMLBlock[^>]*>)\{\s*`((?:[^`\\]|\\.)*)`\s*\}(<\/HTMLBlock>)/g, (_match, openTag, templateContent, closeTag) => {
70580
+ const encoded = base64Encode(templateContent);
70581
+ return `${openTag}${HTML_BLOCK_CONTENT_START}${encoded}${HTML_BLOCK_CONTENT_END}${closeTag}`;
70582
+ });
70583
+ }
70584
+ /**
70585
+ * Removes JSX-style comments (e.g., { /* comment *\/ }) from content.
70586
+ *
70587
+ * @param content
70588
+ * @returns Content with JSX comments removed
70589
+ * @example
70590
+ * ```typescript
70591
+ * removeJSXComments('Text { /* comment *\/ } more text')
70592
+ * // Returns: 'Text more text'
70593
+ * ```
70594
+ */
70595
+ function removeJSXComments(content) {
70596
+ return content.replace(/\{\s*\/\*[^*]*(?:\*(?!\/)[^*]*)*\*\/\s*\}/g, '');
70597
+ }
70598
+ /**
70599
+ * Extracts content between balanced braces, handling nested braces.
70600
+ *
70601
+ * @param content
70602
+ * @param start
70603
+ * @returns Object with extracted content and end position, or null if braces are unbalanced
70604
+ * @example
70605
+ * ```typescript
70606
+ * const input = 'foo{bar{baz}qux}end';
70607
+ * extractBalancedBraces(input, 3) // start at position 3 (after '{')
70608
+ * // Returns: { content: 'bar{baz}qux', end: 16 }
70609
+ * ```
70610
+ */
70611
+ function extractBalancedBraces(content, start) {
70612
+ let depth = 1;
70613
+ let pos = start;
70614
+ while (pos < content.length && depth > 0) {
70615
+ const char = content[pos];
70616
+ if (char === '{')
70617
+ depth += 1;
70618
+ else if (char === '}')
70619
+ depth -= 1;
70620
+ pos += 1;
70621
+ }
70622
+ if (depth !== 0)
70623
+ return null;
70624
+ return { content: content.slice(start, pos - 1), end: pos };
70625
+ }
70626
+ /**
70627
+ * Escapes problematic braces in content to prevent MDX expression parsing errors.
70628
+ * Handles three cases:
70629
+ * 1. Unbalanced braces (e.g., `{foo` without closing `}`)
70630
+ * 2. Paragraph-spanning expressions (e.g., `{\n\n}` where blank line splits paragraphs)
70631
+ * 3. Skips HTML elements to prevent backslashes appearing in output
70632
+ *
70633
+ */
70634
+ function escapeProblematicBraces(content) {
70635
+ // Skip HTML elements — their content should never be escaped because
70636
+ // rehypeRaw parses them into hast elements, making `\` literal text in output
70637
+ const htmlElements = [];
70638
+ const safe = content.replace(/<([a-z][a-zA-Z0-9]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g, match => {
70639
+ const idx = htmlElements.length;
70640
+ htmlElements.push(match);
70641
+ return `___HTML_ELEM_${idx}___`;
70642
+ });
70643
+ const toEscape = new Set();
70644
+ // Convert to array of Unicode code points to handle emojis and multi-byte characters correctly
70645
+ const chars = Array.from(safe);
70646
+ let strDelim = null;
70647
+ let strEscaped = false;
70648
+ // Stack of open braces with their state
70649
+ const openStack = [];
70650
+ // Track position of last newline (outside strings) to detect blank lines
70651
+ let lastNewlinePos = -2; // -2 means no recent newline
70652
+ for (let i = 0; i < chars.length; i += 1) {
70653
+ const ch = chars[i];
70654
+ // Track string delimiters inside expressions to ignore braces within them
70655
+ if (openStack.length > 0) {
70656
+ if (strDelim) {
70657
+ if (strEscaped)
70658
+ strEscaped = false;
70659
+ else if (ch === '\\')
70660
+ strEscaped = true;
70661
+ else if (ch === strDelim)
70662
+ strDelim = null;
70663
+ // eslint-disable-next-line no-continue
70664
+ continue;
70665
+ }
70666
+ if (ch === '"' || ch === "'" || ch === '`') {
70667
+ strDelim = ch;
70668
+ // eslint-disable-next-line no-continue
70669
+ continue;
70670
+ }
70671
+ // Track newlines to detect blank lines (paragraph boundaries)
70672
+ if (ch === '\n') {
70673
+ // Check if this newline creates a blank line (only whitespace since last newline)
70674
+ if (lastNewlinePos >= 0) {
70675
+ const between = chars.slice(lastNewlinePos + 1, i).join('');
70676
+ if (/^[ \t]*$/.test(between)) {
70677
+ // This is a blank line - mark all open expressions as paragraph-spanning
70678
+ openStack.forEach(entry => {
70679
+ entry.hasBlankLine = true;
70680
+ });
70681
+ }
70682
+ }
70683
+ lastNewlinePos = i;
70684
+ }
70685
+ }
70686
+ // Skip already-escaped braces (count preceding backslashes)
70687
+ if (ch === '{' || ch === '}') {
70688
+ let bs = 0;
70689
+ for (let j = i - 1; j >= 0 && chars[j] === '\\'; j -= 1)
70690
+ bs += 1;
70691
+ if (bs % 2 === 1) {
70692
+ // eslint-disable-next-line no-continue
70693
+ continue;
70694
+ }
70695
+ }
70696
+ if (ch === '{') {
70697
+ openStack.push({ pos: i, hasBlankLine: false });
70698
+ lastNewlinePos = -2; // Reset newline tracking for new expression
70699
+ }
70700
+ else if (ch === '}') {
70701
+ if (openStack.length > 0) {
70702
+ const entry = openStack.pop();
70703
+ // If expression spans paragraph boundary, escape both braces
70704
+ if (entry.hasBlankLine) {
70705
+ toEscape.add(entry.pos);
70706
+ toEscape.add(i);
70707
+ }
70708
+ }
70709
+ else {
70710
+ // Unbalanced closing brace (no matching open)
70711
+ toEscape.add(i);
70712
+ }
70713
+ }
70714
+ }
70715
+ // Any remaining open braces are unbalanced
70716
+ openStack.forEach(entry => toEscape.add(entry.pos));
70717
+ // If there are no problematic braces, return safe content as-is;
70718
+ // otherwise, escape each problematic `{` or `}` so MDX doesn't treat them as expressions.
70719
+ let result = toEscape.size === 0
70720
+ ? safe
70721
+ : chars.map((ch, i) => (toEscape.has(i) ? `\\${ch}` : ch)).join('');
70722
+ // Restore HTML elements
70723
+ if (htmlElements.length > 0) {
70724
+ result = result.replace(/___HTML_ELEM_(\d+)___/g, (_m, idx) => htmlElements[parseInt(idx, 10)]);
70725
+ }
70726
+ return result;
70727
+ }
70728
+ /**
70729
+ * Converts JSX attribute expressions (attribute={expression}) to HTML attributes (attribute="value").
70730
+ * Handles style objects (camelCase → kebab-case), className → class, and JSON stringifies objects.
70731
+ *
70732
+ * @param content
70733
+ * @param context
70734
+ * @returns Content with attribute expressions evaluated and converted to HTML attributes
70735
+ * @example
70736
+ * ```typescript
70737
+ * const context = { baseUrl: 'https://example.com' };
70738
+ * const input = '<a href={baseUrl}>Link</a>';
70739
+ * evaluateAttributeExpressions(input, context)
70740
+ * // Returns: '<a href="https://example.com">Link</a>'
70741
+ * ```
70742
+ */
70743
+ function evaluateAttributeExpressions(content, context, protectedCode) {
70744
+ const attrStartRegex = /(\w+)=\{/g;
70745
+ let result = '';
70746
+ let lastEnd = 0;
70747
+ let match = attrStartRegex.exec(content);
70748
+ while (match !== null) {
70749
+ const attributeName = match[1];
70750
+ const braceStart = match.index + match[0].length;
70751
+ const extracted = extractBalancedBraces(content, braceStart);
70752
+ if (extracted) {
70753
+ // The expression might contain template literals in MDX component tag props
70754
+ // E.g. <Component greeting={`Hello World!`} />
70755
+ // that is marked as inline code. So we need to restore the inline codes
70756
+ // in the expression to evaluate it
70757
+ let expression = extracted.content;
70758
+ if (protectedCode) {
70759
+ expression = restoreInlineCode(expression, protectedCode);
70760
+ }
70761
+ const fullMatchEnd = extracted.end;
70762
+ result += content.slice(lastEnd, match.index);
70763
+ try {
70764
+ const evalResult = evaluateExpression(expression, context);
70765
+ if (typeof evalResult === 'object' && evalResult !== null) {
70766
+ if (attributeName === 'style') {
70767
+ const cssString = Object.entries(evalResult)
70768
+ .map(([key, value]) => {
70769
+ const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();
70770
+ return `${cssKey}: ${value}`;
70771
+ })
70772
+ .join('; ');
70773
+ result += `style="${cssString}"`;
70774
+ }
70775
+ else {
70776
+ // These are arrays / objects attribute values
70777
+ // Mark JSON-serialized values with a prefix so they can be parsed back correctly
70778
+ const jsonValue = escapeHtmlAttribute(JSON_VALUE_MARKER + JSON.stringify(evalResult));
70779
+ // Use double quotes so that multi-paragraph values are not split into multiple attributes by the processors
70780
+ result += `${attributeName}="${jsonValue}"`;
70781
+ }
70782
+ }
70783
+ else if (attributeName === 'className') {
70784
+ // Escape special characters so that it doesn't break and split the attribute value to nodes
70785
+ // This will be restored later in the pipeline
70786
+ result += `class="${escapeHtmlAttribute(String(evalResult))}"`;
70787
+ }
70788
+ else {
70789
+ result += `${attributeName}="${escapeHtmlAttribute(String(evalResult))}"`;
70790
+ }
70791
+ }
70792
+ catch (_error) {
70793
+ result += content.slice(match.index, fullMatchEnd);
70794
+ }
70795
+ lastEnd = fullMatchEnd;
70796
+ attrStartRegex.lastIndex = fullMatchEnd;
70797
+ }
70798
+ match = attrStartRegex.exec(content);
70799
+ }
70800
+ result += content.slice(lastEnd);
70801
+ return result;
70802
+ }
70803
+ /**
70804
+ * Preprocesses JSX-like expressions in markdown before parsing.
70805
+ * Inline expressions are handled separately; attribute expressions are processed here.
70806
+ *
70807
+ * @param content
70808
+ * @param context
70809
+ * @returns Preprocessed content ready for markdown parsing
70810
+ */
70811
+ function preprocessJSXExpressions(content, context = {}) {
70812
+ // Step 0: Base64 encode HTMLBlock content
70813
+ let processed = protectHTMLBlockContent(content);
70814
+ // Step 1: Protect code blocks and inline code
70815
+ const { protectedCode, protectedContent } = protectCodeBlocks(processed);
70816
+ // Step 2: Evaluate attribute expressions (JSX attribute syntax: href={baseUrl})
70817
+ // For inline expressions, we use a library to parse the expression & evaluate it later
70818
+ // For attribute expressions, it was difficult to use a library to parse them, so do it manually
70819
+ processed = evaluateAttributeExpressions(protectedContent, context, protectedCode);
70820
+ // Step 3: Escape problematic braces to prevent MDX expression parsing errors
70821
+ // This handles both unbalanced braces and paragraph-spanning expressions in one pass
70822
+ processed = escapeProblematicBraces(processed);
70823
+ // Step 4: Restore protected code blocks
70824
+ processed = restoreCodeBlocks(processed, protectedCode);
70825
+ return processed;
70826
+ }
70827
+
70516
70828
  ;// ./processor/utils.ts
70517
70829
 
70518
70830
 
70831
+
70519
70832
  /**
70520
70833
  * Formats the hProperties of a node as a string, so they can be compiled back into JSX/MDX.
70521
70834
  * This currently sets all the values to a string since we process/compile the MDX on the fly
@@ -70571,7 +70884,17 @@ const getHPropKeys = (node) => {
70571
70884
  const getAttrs = (jsx) => jsx.attributes.reduce((memo, attr) => {
70572
70885
  if ('name' in attr) {
70573
70886
  if (typeof attr.value === 'string') {
70574
- memo[attr.name] = attr.value;
70887
+ if (attr.value.startsWith(JSON_VALUE_MARKER)) {
70888
+ try {
70889
+ memo[attr.name] = JSON.parse(attr.value.slice(JSON_VALUE_MARKER.length));
70890
+ }
70891
+ catch {
70892
+ memo[attr.name] = attr.value;
70893
+ }
70894
+ }
70895
+ else {
70896
+ memo[attr.name] = attr.value;
70897
+ }
70575
70898
  }
70576
70899
  else if (attr.value === null) {
70577
70900
  memo[attr.name] = true;
@@ -71345,10 +71668,10 @@ const hasFlowContent = (nodes) => {
71345
71668
  * Process a Table node: re-parse text-only cell content, then output as
71346
71669
  * a markdown table (phrasing-only) or keep as JSX <Table> (has flow content).
71347
71670
  */
71348
- const processTableNode = (node, index, parent) => {
71671
+ const processTableNode = (node, index, parent, documentPosition) => {
71349
71672
  if (node.name !== 'Table')
71350
71673
  return;
71351
- const { position } = node;
71674
+ const position = documentPosition ?? node.position;
71352
71675
  const { align: alignAttr } = getAttrs(node);
71353
71676
  const align = Array.isArray(alignAttr) ? alignAttr : null;
71354
71677
  let tableHasFlowContent = false;
@@ -71471,7 +71794,7 @@ const mdxishTables = () => tree => {
71471
71794
  const parsed = tableNodeProcessor.runSync(tableNodeProcessor.parse(node.value));
71472
71795
  visit(parsed, isMDXElement, (tableNode) => {
71473
71796
  if (tableNode.name === 'Table') {
71474
- processTableNode(tableNode, index, parent);
71797
+ processTableNode(tableNode, index, parent, node.position);
71475
71798
  // Stop after the outermost Table so nested Tables don't overwrite parent.children[index]
71476
71799
  // we let it get handled naturally
71477
71800
  return EXIT;
@@ -76886,6 +77209,12 @@ const deserializer = ($, _) => {
76886
77209
  return as(BigInt(value), index);
76887
77210
  case 'BigInt':
76888
77211
  return as(Object(BigInt(value)), index);
77212
+ case 'ArrayBuffer':
77213
+ return as(new Uint8Array(value).buffer, value);
77214
+ case 'DataView': {
77215
+ const { buffer } = new Uint8Array(value);
77216
+ return as(new DataView(buffer), value);
77217
+ }
76889
77218
  }
76890
77219
  return as(new env[type](value), index);
76891
77220
  };
@@ -76931,6 +77260,8 @@ const typeOf = value => {
76931
77260
  return [MAP, EMPTY];
76932
77261
  case 'Set':
76933
77262
  return [SET, EMPTY];
77263
+ case 'DataView':
77264
+ return [ARRAY, asString];
76934
77265
  }
76935
77266
 
76936
77267
  if (asString.includes('Array'))
@@ -76980,9 +77311,17 @@ const serializer = (strict, json, $, _) => {
76980
77311
  return as([TYPE, entry], value);
76981
77312
  }
76982
77313
  case ARRAY: {
76983
- if (type)
76984
- return as([type, [...value]], value);
76985
-
77314
+ if (type) {
77315
+ let spread = value;
77316
+ if (type === 'DataView') {
77317
+ spread = new Uint8Array(value.buffer);
77318
+ }
77319
+ else if (type === 'ArrayBuffer') {
77320
+ spread = new Uint8Array(value);
77321
+ }
77322
+ return as([type, [...spread]], value);
77323
+ }
77324
+
76986
77325
  const arr = [];
76987
77326
  const index = as([TYPE, arr], value);
76988
77327
  for (const entry of value)
@@ -91810,6 +92149,27 @@ function rehypeRemark(destination, options) {
91810
92149
  }
91811
92150
  }
91812
92151
 
92152
+ ;// ./processor/compile/anchor.ts
92153
+
92154
+
92155
+ const anchor_anchor = (node) => {
92156
+ const { href, label, target, title } = getHProps(node);
92157
+ const attrs = {
92158
+ ...(label && { label }),
92159
+ ...(target && { target }),
92160
+ href: href ?? '',
92161
+ ...(title && { title }),
92162
+ };
92163
+ // Serialize children (phrasing content) back to markdown
92164
+ // Wrap in paragraph to satisfy RootContent type requirement
92165
+ const children = toMarkdown({
92166
+ type: 'paragraph',
92167
+ children: node.children,
92168
+ }).trim();
92169
+ return `<Anchor ${formatProps(attrs)}>${children}</Anchor>`;
92170
+ };
92171
+ /* harmony default export */ const compile_anchor = (anchor_anchor);
92172
+
91813
92173
  ;// ./processor/compile/callout.ts
91814
92174
 
91815
92175
  const callout = (node, _, state, info) => {
@@ -91992,10 +92352,12 @@ const plain_plain = (node) => node.value;
91992
92352
 
91993
92353
 
91994
92354
 
92355
+
91995
92356
  function compilers(mdxish = false) {
91996
92357
  const data = this.data();
91997
92358
  const toMarkdownExtensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);
91998
92359
  const handlers = {
92360
+ ...(mdxish && { [NodeTypes.anchor]: compile_anchor }),
91999
92361
  [NodeTypes.callout]: compile_callout,
92000
92362
  [NodeTypes.codeTabs]: compile_code_tabs,
92001
92363
  [NodeTypes.embedBlock]: compile_embed,
@@ -93907,412 +94269,6 @@ const mdxComponentHandlers = {
93907
94269
  [NodeTypes.htmlBlock]: htmlBlockHandler,
93908
94270
  };
93909
94271
 
93910
- ;// ./lib/utils/mdxish/protect-code-blocks.ts
93911
- /**
93912
- * Replaces code blocks and inline code with placeholders to protect them from preprocessing.
93913
- *
93914
- * @param content - The markdown content to process
93915
- * @returns Object containing protected content and arrays of original code blocks
93916
- * @example
93917
- * ```typescript
93918
- * const input = 'Text with `inline code` and ```fenced block```';
93919
- * protectCodeBlocks(input)
93920
- * // Returns: {
93921
- * // protectedCode: {
93922
- * // codeBlocks: ['```fenced block```'],
93923
- * // inlineCode: ['`inline code`']
93924
- * // },
93925
- * // protectedContent: 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___'
93926
- * // }
93927
- * ```
93928
- */
93929
- function protectCodeBlocks(content) {
93930
- const codeBlocks = [];
93931
- const inlineCode = [];
93932
- let protectedContent = '';
93933
- let remaining = content;
93934
- let codeBlockStart = remaining.indexOf('```');
93935
- while (codeBlockStart !== -1) {
93936
- protectedContent += remaining.slice(0, codeBlockStart);
93937
- remaining = remaining.slice(codeBlockStart);
93938
- const codeBlockEnd = remaining.indexOf('```', 3);
93939
- if (codeBlockEnd === -1) {
93940
- break;
93941
- }
93942
- const match = remaining.slice(0, codeBlockEnd + 3);
93943
- const index = codeBlocks.length;
93944
- codeBlocks.push(match);
93945
- protectedContent += `___CODE_BLOCK_${index}___`;
93946
- remaining = remaining.slice(codeBlockEnd + 3);
93947
- codeBlockStart = remaining.indexOf('```');
93948
- }
93949
- protectedContent += remaining;
93950
- protectedContent = protectedContent.replace(/`([^`\n]+)`/g, match => {
93951
- const index = inlineCode.length;
93952
- inlineCode.push(match);
93953
- return `___INLINE_CODE_${index}___`;
93954
- });
93955
- return { protectedCode: { codeBlocks, inlineCode }, protectedContent };
93956
- }
93957
- /**
93958
- * Restores inline code by replacing placeholders with original content.
93959
- *
93960
- * @param content - Content with inline code placeholders
93961
- * @param protectedCode - The protected code arrays
93962
- * @returns Content with inline code restored
93963
- */
93964
- function restoreInlineCode(content, protectedCode) {
93965
- return content.replace(/___INLINE_CODE_(\d+)___/g, (_m, idx) => {
93966
- return protectedCode.inlineCode[parseInt(idx, 10)];
93967
- });
93968
- }
93969
- /**
93970
- * Restores fenced code blocks by replacing placeholders with original content.
93971
- *
93972
- * @param content - Content with code block placeholders
93973
- * @param protectedCode - The protected code arrays
93974
- * @returns Content with code blocks restored
93975
- */
93976
- function restoreFencedCodeBlocks(content, protectedCode) {
93977
- return content.replace(/___CODE_BLOCK_(\d+)___/g, (_m, idx) => {
93978
- return protectedCode.codeBlocks[parseInt(idx, 10)];
93979
- });
93980
- }
93981
- /**
93982
- * Restores all code blocks and inline code by replacing placeholders with original content.
93983
- *
93984
- * @param content - Content with code placeholders
93985
- * @param protectedCode - The protected code arrays
93986
- * @returns Content with all code blocks and inline code restored
93987
- * @example
93988
- * ```typescript
93989
- * const content = 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___';
93990
- * const protectedCode = {
93991
- * codeBlocks: ['```js\ncode\n```'],
93992
- * inlineCode: ['`inline`']
93993
- * };
93994
- * restoreCodeBlocks(content, protectedCode)
93995
- * // Returns: 'Text with `inline` and ```js\ncode\n```'
93996
- * ```
93997
- */
93998
- function restoreCodeBlocks(content, protectedCode) {
93999
- let restored = restoreFencedCodeBlocks(content, protectedCode);
94000
- restored = restoreInlineCode(restored, protectedCode);
94001
- return restored;
94002
- }
94003
-
94004
- ;// ./processor/transform/mdxish/preprocess-jsx-expressions.ts
94005
-
94006
- // Base64 encode (Node.js + browser compatible)
94007
- function base64Encode(str) {
94008
- if (typeof Buffer !== 'undefined') {
94009
- return Buffer.from(str, 'utf-8').toString('base64');
94010
- }
94011
- return btoa(unescape(encodeURIComponent(str)));
94012
- }
94013
- // Base64 decode (Node.js + browser compatible)
94014
- function base64Decode(str) {
94015
- if (typeof Buffer !== 'undefined') {
94016
- return Buffer.from(str, 'base64').toString('utf-8');
94017
- }
94018
- return decodeURIComponent(escape(atob(str)));
94019
- }
94020
- function escapeHtmlAttribute(value) {
94021
- return value
94022
- .replace(/&/g, '&amp;')
94023
- .replace(/"/g, '&quot;')
94024
- .replace(/</g, '&lt;')
94025
- .replace(/>/g, '&gt;')
94026
- .replace(/\n/g, '&#10;');
94027
- }
94028
- // Marker prefix for JSON-serialized complex values (arrays/objects)
94029
- // Using a prefix that won't conflict with regular string values
94030
- const JSON_VALUE_MARKER = '__MDXISH_JSON__';
94031
- // Markers for protected HTMLBlock content (HTML comments avoid markdown parsing issues)
94032
- const HTML_BLOCK_CONTENT_START = '<!--RDMX_HTMLBLOCK:';
94033
- const HTML_BLOCK_CONTENT_END = ':RDMX_HTMLBLOCK-->';
94034
- /**
94035
- * Evaluates a JavaScript expression using context variables.
94036
- *
94037
- * @param expression
94038
- * @param context
94039
- * @returns The evaluated result
94040
- * @example
94041
- * ```typescript
94042
- * const context = { baseUrl: 'https://example.com', path: '/api' };
94043
- * evaluateExpression('baseUrl + path', context)
94044
- * // Returns: 'https://example.com/api'
94045
- * ```
94046
- */
94047
- function evaluateExpression(expression, context) {
94048
- const contextKeys = Object.keys(context);
94049
- const contextValues = Object.values(context);
94050
- // eslint-disable-next-line no-new-func
94051
- const func = new Function(...contextKeys, `return ${expression}`);
94052
- return func(...contextValues);
94053
- }
94054
- /**
94055
- * Base64 encodes HTMLBlock template literal content to prevent markdown parser from consuming <script>/<style> tags.
94056
- *
94057
- * @param content
94058
- * @returns Content with HTMLBlock template literals base64 encoded in HTML comments
94059
- * @example
94060
- * ```typescript
94061
- * const input = '<HTMLBlock>{`<script>alert("xss")</script>`}</HTMLBlock>';
94062
- * protectHTMLBlockContent(input)
94063
- * // Returns: '<HTMLBlock><!--RDMX_HTMLBLOCK:PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=:RDMX_HTMLBLOCK--></HTMLBlock>'
94064
- * ```
94065
- */
94066
- function protectHTMLBlockContent(content) {
94067
- return content.replace(/(<HTMLBlock[^>]*>)\{\s*`((?:[^`\\]|\\.)*)`\s*\}(<\/HTMLBlock>)/g, (_match, openTag, templateContent, closeTag) => {
94068
- const encoded = base64Encode(templateContent);
94069
- return `${openTag}${HTML_BLOCK_CONTENT_START}${encoded}${HTML_BLOCK_CONTENT_END}${closeTag}`;
94070
- });
94071
- }
94072
- /**
94073
- * Removes JSX-style comments (e.g., { /* comment *\/ }) from content.
94074
- *
94075
- * @param content
94076
- * @returns Content with JSX comments removed
94077
- * @example
94078
- * ```typescript
94079
- * removeJSXComments('Text { /* comment *\/ } more text')
94080
- * // Returns: 'Text more text'
94081
- * ```
94082
- */
94083
- function removeJSXComments(content) {
94084
- return content.replace(/\{\s*\/\*[^*]*(?:\*(?!\/)[^*]*)*\*\/\s*\}/g, '');
94085
- }
94086
- /**
94087
- * Extracts content between balanced braces, handling nested braces.
94088
- *
94089
- * @param content
94090
- * @param start
94091
- * @returns Object with extracted content and end position, or null if braces are unbalanced
94092
- * @example
94093
- * ```typescript
94094
- * const input = 'foo{bar{baz}qux}end';
94095
- * extractBalancedBraces(input, 3) // start at position 3 (after '{')
94096
- * // Returns: { content: 'bar{baz}qux', end: 16 }
94097
- * ```
94098
- */
94099
- function extractBalancedBraces(content, start) {
94100
- let depth = 1;
94101
- let pos = start;
94102
- while (pos < content.length && depth > 0) {
94103
- const char = content[pos];
94104
- if (char === '{')
94105
- depth += 1;
94106
- else if (char === '}')
94107
- depth -= 1;
94108
- pos += 1;
94109
- }
94110
- if (depth !== 0)
94111
- return null;
94112
- return { content: content.slice(start, pos - 1), end: pos };
94113
- }
94114
- /**
94115
- * Escapes problematic braces in content to prevent MDX expression parsing errors.
94116
- * Handles three cases:
94117
- * 1. Unbalanced braces (e.g., `{foo` without closing `}`)
94118
- * 2. Paragraph-spanning expressions (e.g., `{\n\n}` where blank line splits paragraphs)
94119
- * 3. Skips HTML elements to prevent backslashes appearing in output
94120
- *
94121
- */
94122
- function escapeProblematicBraces(content) {
94123
- // Skip HTML elements — their content should never be escaped because
94124
- // rehypeRaw parses them into hast elements, making `\` literal text in output
94125
- const htmlElements = [];
94126
- const safe = content.replace(/<([a-z][a-zA-Z0-9]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g, match => {
94127
- const idx = htmlElements.length;
94128
- htmlElements.push(match);
94129
- return `___HTML_ELEM_${idx}___`;
94130
- });
94131
- const toEscape = new Set();
94132
- // Convert to array of Unicode code points to handle emojis and multi-byte characters correctly
94133
- const chars = Array.from(safe);
94134
- let strDelim = null;
94135
- let strEscaped = false;
94136
- // Stack of open braces with their state
94137
- const openStack = [];
94138
- // Track position of last newline (outside strings) to detect blank lines
94139
- let lastNewlinePos = -2; // -2 means no recent newline
94140
- for (let i = 0; i < chars.length; i += 1) {
94141
- const ch = chars[i];
94142
- // Track string delimiters inside expressions to ignore braces within them
94143
- if (openStack.length > 0) {
94144
- if (strDelim) {
94145
- if (strEscaped)
94146
- strEscaped = false;
94147
- else if (ch === '\\')
94148
- strEscaped = true;
94149
- else if (ch === strDelim)
94150
- strDelim = null;
94151
- // eslint-disable-next-line no-continue
94152
- continue;
94153
- }
94154
- if (ch === '"' || ch === "'" || ch === '`') {
94155
- strDelim = ch;
94156
- // eslint-disable-next-line no-continue
94157
- continue;
94158
- }
94159
- // Track newlines to detect blank lines (paragraph boundaries)
94160
- if (ch === '\n') {
94161
- // Check if this newline creates a blank line (only whitespace since last newline)
94162
- if (lastNewlinePos >= 0) {
94163
- const between = chars.slice(lastNewlinePos + 1, i).join('');
94164
- if (/^[ \t]*$/.test(between)) {
94165
- // This is a blank line - mark all open expressions as paragraph-spanning
94166
- openStack.forEach(entry => {
94167
- entry.hasBlankLine = true;
94168
- });
94169
- }
94170
- }
94171
- lastNewlinePos = i;
94172
- }
94173
- }
94174
- // Skip already-escaped braces (count preceding backslashes)
94175
- if (ch === '{' || ch === '}') {
94176
- let bs = 0;
94177
- for (let j = i - 1; j >= 0 && chars[j] === '\\'; j -= 1)
94178
- bs += 1;
94179
- if (bs % 2 === 1) {
94180
- // eslint-disable-next-line no-continue
94181
- continue;
94182
- }
94183
- }
94184
- if (ch === '{') {
94185
- openStack.push({ pos: i, hasBlankLine: false });
94186
- lastNewlinePos = -2; // Reset newline tracking for new expression
94187
- }
94188
- else if (ch === '}') {
94189
- if (openStack.length > 0) {
94190
- const entry = openStack.pop();
94191
- // If expression spans paragraph boundary, escape both braces
94192
- if (entry.hasBlankLine) {
94193
- toEscape.add(entry.pos);
94194
- toEscape.add(i);
94195
- }
94196
- }
94197
- else {
94198
- // Unbalanced closing brace (no matching open)
94199
- toEscape.add(i);
94200
- }
94201
- }
94202
- }
94203
- // Any remaining open braces are unbalanced
94204
- openStack.forEach(entry => toEscape.add(entry.pos));
94205
- // If there are no problematic braces, return safe content as-is;
94206
- // otherwise, escape each problematic `{` or `}` so MDX doesn't treat them as expressions.
94207
- let result = toEscape.size === 0
94208
- ? safe
94209
- : chars.map((ch, i) => (toEscape.has(i) ? `\\${ch}` : ch)).join('');
94210
- // Restore HTML elements
94211
- if (htmlElements.length > 0) {
94212
- result = result.replace(/___HTML_ELEM_(\d+)___/g, (_m, idx) => htmlElements[parseInt(idx, 10)]);
94213
- }
94214
- return result;
94215
- }
94216
- /**
94217
- * Converts JSX attribute expressions (attribute={expression}) to HTML attributes (attribute="value").
94218
- * Handles style objects (camelCase → kebab-case), className → class, and JSON stringifies objects.
94219
- *
94220
- * @param content
94221
- * @param context
94222
- * @returns Content with attribute expressions evaluated and converted to HTML attributes
94223
- * @example
94224
- * ```typescript
94225
- * const context = { baseUrl: 'https://example.com' };
94226
- * const input = '<a href={baseUrl}>Link</a>';
94227
- * evaluateAttributeExpressions(input, context)
94228
- * // Returns: '<a href="https://example.com">Link</a>'
94229
- * ```
94230
- */
94231
- function evaluateAttributeExpressions(content, context, protectedCode) {
94232
- const attrStartRegex = /(\w+)=\{/g;
94233
- let result = '';
94234
- let lastEnd = 0;
94235
- let match = attrStartRegex.exec(content);
94236
- while (match !== null) {
94237
- const attributeName = match[1];
94238
- const braceStart = match.index + match[0].length;
94239
- const extracted = extractBalancedBraces(content, braceStart);
94240
- if (extracted) {
94241
- // The expression might contain template literals in MDX component tag props
94242
- // E.g. <Component greeting={`Hello World!`} />
94243
- // that is marked as inline code. So we need to restore the inline codes
94244
- // in the expression to evaluate it
94245
- let expression = extracted.content;
94246
- if (protectedCode) {
94247
- expression = restoreInlineCode(expression, protectedCode);
94248
- }
94249
- const fullMatchEnd = extracted.end;
94250
- result += content.slice(lastEnd, match.index);
94251
- try {
94252
- const evalResult = evaluateExpression(expression, context);
94253
- if (typeof evalResult === 'object' && evalResult !== null) {
94254
- if (attributeName === 'style') {
94255
- const cssString = Object.entries(evalResult)
94256
- .map(([key, value]) => {
94257
- const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();
94258
- return `${cssKey}: ${value}`;
94259
- })
94260
- .join('; ');
94261
- result += `style="${cssString}"`;
94262
- }
94263
- else {
94264
- // These are arrays / objects attribute values
94265
- // Mark JSON-serialized values with a prefix so they can be parsed back correctly
94266
- const jsonValue = escapeHtmlAttribute(JSON_VALUE_MARKER + JSON.stringify(evalResult));
94267
- // Use double quotes so that multi-paragraph values are not split into multiple attributes by the processors
94268
- result += `${attributeName}="${jsonValue}"`;
94269
- }
94270
- }
94271
- else if (attributeName === 'className') {
94272
- // Escape special characters so that it doesn't break and split the attribute value to nodes
94273
- // This will be restored later in the pipeline
94274
- result += `class="${escapeHtmlAttribute(String(evalResult))}"`;
94275
- }
94276
- else {
94277
- result += `${attributeName}="${escapeHtmlAttribute(String(evalResult))}"`;
94278
- }
94279
- }
94280
- catch (_error) {
94281
- result += content.slice(match.index, fullMatchEnd);
94282
- }
94283
- lastEnd = fullMatchEnd;
94284
- attrStartRegex.lastIndex = fullMatchEnd;
94285
- }
94286
- match = attrStartRegex.exec(content);
94287
- }
94288
- result += content.slice(lastEnd);
94289
- return result;
94290
- }
94291
- /**
94292
- * Preprocesses JSX-like expressions in markdown before parsing.
94293
- * Inline expressions are handled separately; attribute expressions are processed here.
94294
- *
94295
- * @param content
94296
- * @param context
94297
- * @returns Preprocessed content ready for markdown parsing
94298
- */
94299
- function preprocessJSXExpressions(content, context = {}) {
94300
- // Step 0: Base64 encode HTMLBlock content
94301
- let processed = protectHTMLBlockContent(content);
94302
- // Step 1: Protect code blocks and inline code
94303
- const { protectedCode, protectedContent } = protectCodeBlocks(processed);
94304
- // Step 2: Evaluate attribute expressions (JSX attribute syntax: href={baseUrl})
94305
- // For inline expressions, we use a library to parse the expression & evaluate it later
94306
- // For attribute expressions, it was difficult to use a library to parse them, so do it manually
94307
- processed = evaluateAttributeExpressions(protectedContent, context, protectedCode);
94308
- // Step 3: Escape problematic braces to prevent MDX expression parsing errors
94309
- // This handles both unbalanced braces and paragraph-spanning expressions in one pass
94310
- processed = escapeProblematicBraces(processed);
94311
- // Step 4: Restore protected code blocks
94312
- processed = restoreCodeBlocks(processed, protectedCode);
94313
- return processed;
94314
- }
94315
-
94316
94272
  ;// ./processor/transform/mdxish/evaluate-expressions.ts
94317
94273
 
94318
94274
 
@@ -94830,6 +94786,591 @@ function legacyVariable() {
94830
94786
  */
94831
94787
 
94832
94788
 
94789
+ ;// ./node_modules/entities/lib/esm/generated/decode-data-html.js
94790
+ // Generated using scripts/write-decode-map.ts
94791
+ /* harmony default export */ const decode_data_html = (new Uint16Array(
94792
+ // prettier-ignore
94793
+ "\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"
94794
+ .split("")
94795
+ .map((c) => c.charCodeAt(0))));
94796
+ //# sourceMappingURL=decode-data-html.js.map
94797
+ ;// ./node_modules/entities/lib/esm/generated/decode-data-xml.js
94798
+ // Generated using scripts/write-decode-map.ts
94799
+ /* harmony default export */ const decode_data_xml = (new Uint16Array(
94800
+ // prettier-ignore
94801
+ "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
94802
+ .split("")
94803
+ .map((c) => c.charCodeAt(0))));
94804
+ //# sourceMappingURL=decode-data-xml.js.map
94805
+ ;// ./node_modules/entities/lib/esm/decode_codepoint.js
94806
+ // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
94807
+ var esm_decode_codepoint_a;
94808
+ const decode_codepoint_decodeMap = new Map([
94809
+ [0, 65533],
94810
+ // C1 Unicode control character reference replacements
94811
+ [128, 8364],
94812
+ [130, 8218],
94813
+ [131, 402],
94814
+ [132, 8222],
94815
+ [133, 8230],
94816
+ [134, 8224],
94817
+ [135, 8225],
94818
+ [136, 710],
94819
+ [137, 8240],
94820
+ [138, 352],
94821
+ [139, 8249],
94822
+ [140, 338],
94823
+ [142, 381],
94824
+ [145, 8216],
94825
+ [146, 8217],
94826
+ [147, 8220],
94827
+ [148, 8221],
94828
+ [149, 8226],
94829
+ [150, 8211],
94830
+ [151, 8212],
94831
+ [152, 732],
94832
+ [153, 8482],
94833
+ [154, 353],
94834
+ [155, 8250],
94835
+ [156, 339],
94836
+ [158, 382],
94837
+ [159, 376],
94838
+ ]);
94839
+ /**
94840
+ * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
94841
+ */
94842
+ const esm_decode_codepoint_fromCodePoint =
94843
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
94844
+ (esm_decode_codepoint_a = String.fromCodePoint) !== null && esm_decode_codepoint_a !== void 0 ? esm_decode_codepoint_a : function (codePoint) {
94845
+ let output = "";
94846
+ if (codePoint > 0xffff) {
94847
+ codePoint -= 0x10000;
94848
+ output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
94849
+ codePoint = 0xdc00 | (codePoint & 0x3ff);
94850
+ }
94851
+ output += String.fromCharCode(codePoint);
94852
+ return output;
94853
+ };
94854
+ /**
94855
+ * Replace the given code point with a replacement character if it is a
94856
+ * surrogate or is outside the valid range. Otherwise return the code
94857
+ * point unchanged.
94858
+ */
94859
+ function decode_codepoint_replaceCodePoint(codePoint) {
94860
+ var _a;
94861
+ if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
94862
+ return 0xfffd;
94863
+ }
94864
+ return (_a = decode_codepoint_decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
94865
+ }
94866
+ /**
94867
+ * Replace the code point if relevant, then convert it to a string.
94868
+ *
94869
+ * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.
94870
+ * @param codePoint The code point to decode.
94871
+ * @returns The decoded code point.
94872
+ */
94873
+ function decode_codepoint_decodeCodePoint(codePoint) {
94874
+ return esm_decode_codepoint_fromCodePoint(decode_codepoint_replaceCodePoint(codePoint));
94875
+ }
94876
+ //# sourceMappingURL=decode_codepoint.js.map
94877
+ ;// ./node_modules/entities/lib/esm/decode.js
94878
+
94879
+
94880
+
94881
+ // Re-export for use by eg. htmlparser2
94882
+
94883
+
94884
+ var decode_CharCodes;
94885
+ (function (CharCodes) {
94886
+ CharCodes[CharCodes["NUM"] = 35] = "NUM";
94887
+ CharCodes[CharCodes["SEMI"] = 59] = "SEMI";
94888
+ CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS";
94889
+ CharCodes[CharCodes["ZERO"] = 48] = "ZERO";
94890
+ CharCodes[CharCodes["NINE"] = 57] = "NINE";
94891
+ CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A";
94892
+ CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F";
94893
+ CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X";
94894
+ CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z";
94895
+ CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A";
94896
+ CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F";
94897
+ CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
94898
+ })(decode_CharCodes || (decode_CharCodes = {}));
94899
+ /** Bit that needs to be set to convert an upper case ASCII character to lower case */
94900
+ const decode_TO_LOWER_BIT = 0b100000;
94901
+ var decode_BinTrieFlags;
94902
+ (function (BinTrieFlags) {
94903
+ BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
94904
+ BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
94905
+ BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
94906
+ })(decode_BinTrieFlags || (decode_BinTrieFlags = {}));
94907
+ function decode_isNumber(code) {
94908
+ return code >= decode_CharCodes.ZERO && code <= decode_CharCodes.NINE;
94909
+ }
94910
+ function decode_isHexadecimalCharacter(code) {
94911
+ return ((code >= decode_CharCodes.UPPER_A && code <= decode_CharCodes.UPPER_F) ||
94912
+ (code >= decode_CharCodes.LOWER_A && code <= decode_CharCodes.LOWER_F));
94913
+ }
94914
+ function decode_isAsciiAlphaNumeric(code) {
94915
+ return ((code >= decode_CharCodes.UPPER_A && code <= decode_CharCodes.UPPER_Z) ||
94916
+ (code >= decode_CharCodes.LOWER_A && code <= decode_CharCodes.LOWER_Z) ||
94917
+ decode_isNumber(code));
94918
+ }
94919
+ /**
94920
+ * Checks if the given character is a valid end character for an entity in an attribute.
94921
+ *
94922
+ * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
94923
+ * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
94924
+ */
94925
+ function decode_isEntityInAttributeInvalidEnd(code) {
94926
+ return code === decode_CharCodes.EQUALS || decode_isAsciiAlphaNumeric(code);
94927
+ }
94928
+ var decode_EntityDecoderState;
94929
+ (function (EntityDecoderState) {
94930
+ EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart";
94931
+ EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart";
94932
+ EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal";
94933
+ EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex";
94934
+ EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity";
94935
+ })(decode_EntityDecoderState || (decode_EntityDecoderState = {}));
94936
+ var esm_decode_DecodingMode;
94937
+ (function (DecodingMode) {
94938
+ /** Entities in text nodes that can end with any character. */
94939
+ DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy";
94940
+ /** Only allow entities terminated with a semicolon. */
94941
+ DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
94942
+ /** Entities in attributes have limitations on ending characters. */
94943
+ DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
94944
+ })(esm_decode_DecodingMode || (esm_decode_DecodingMode = {}));
94945
+ /**
94946
+ * Token decoder with support of writing partial entities.
94947
+ */
94948
+ class decode_EntityDecoder {
94949
+ constructor(
94950
+ /** The tree used to decode entities. */
94951
+ decodeTree,
94952
+ /**
94953
+ * The function that is called when a codepoint is decoded.
94954
+ *
94955
+ * For multi-byte named entities, this will be called multiple times,
94956
+ * with the second codepoint, and the same `consumed` value.
94957
+ *
94958
+ * @param codepoint The decoded codepoint.
94959
+ * @param consumed The number of bytes consumed by the decoder.
94960
+ */
94961
+ emitCodePoint,
94962
+ /** An object that is used to produce errors. */
94963
+ errors) {
94964
+ this.decodeTree = decodeTree;
94965
+ this.emitCodePoint = emitCodePoint;
94966
+ this.errors = errors;
94967
+ /** The current state of the decoder. */
94968
+ this.state = decode_EntityDecoderState.EntityStart;
94969
+ /** Characters that were consumed while parsing an entity. */
94970
+ this.consumed = 1;
94971
+ /**
94972
+ * The result of the entity.
94973
+ *
94974
+ * Either the result index of a numeric entity, or the codepoint of a
94975
+ * numeric entity.
94976
+ */
94977
+ this.result = 0;
94978
+ /** The current index in the decode tree. */
94979
+ this.treeIndex = 0;
94980
+ /** The number of characters that were consumed in excess. */
94981
+ this.excess = 1;
94982
+ /** The mode in which the decoder is operating. */
94983
+ this.decodeMode = esm_decode_DecodingMode.Strict;
94984
+ }
94985
+ /** Resets the instance to make it reusable. */
94986
+ startEntity(decodeMode) {
94987
+ this.decodeMode = decodeMode;
94988
+ this.state = decode_EntityDecoderState.EntityStart;
94989
+ this.result = 0;
94990
+ this.treeIndex = 0;
94991
+ this.excess = 1;
94992
+ this.consumed = 1;
94993
+ }
94994
+ /**
94995
+ * Write an entity to the decoder. This can be called multiple times with partial entities.
94996
+ * If the entity is incomplete, the decoder will return -1.
94997
+ *
94998
+ * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
94999
+ * entity is incomplete, and resume when the next string is written.
95000
+ *
95001
+ * @param string The string containing the entity (or a continuation of the entity).
95002
+ * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
95003
+ * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
95004
+ */
95005
+ write(str, offset) {
95006
+ switch (this.state) {
95007
+ case decode_EntityDecoderState.EntityStart: {
95008
+ if (str.charCodeAt(offset) === decode_CharCodes.NUM) {
95009
+ this.state = decode_EntityDecoderState.NumericStart;
95010
+ this.consumed += 1;
95011
+ return this.stateNumericStart(str, offset + 1);
95012
+ }
95013
+ this.state = decode_EntityDecoderState.NamedEntity;
95014
+ return this.stateNamedEntity(str, offset);
95015
+ }
95016
+ case decode_EntityDecoderState.NumericStart: {
95017
+ return this.stateNumericStart(str, offset);
95018
+ }
95019
+ case decode_EntityDecoderState.NumericDecimal: {
95020
+ return this.stateNumericDecimal(str, offset);
95021
+ }
95022
+ case decode_EntityDecoderState.NumericHex: {
95023
+ return this.stateNumericHex(str, offset);
95024
+ }
95025
+ case decode_EntityDecoderState.NamedEntity: {
95026
+ return this.stateNamedEntity(str, offset);
95027
+ }
95028
+ }
95029
+ }
95030
+ /**
95031
+ * Switches between the numeric decimal and hexadecimal states.
95032
+ *
95033
+ * Equivalent to the `Numeric character reference state` in the HTML spec.
95034
+ *
95035
+ * @param str The string containing the entity (or a continuation of the entity).
95036
+ * @param offset The current offset.
95037
+ * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
95038
+ */
95039
+ stateNumericStart(str, offset) {
95040
+ if (offset >= str.length) {
95041
+ return -1;
95042
+ }
95043
+ if ((str.charCodeAt(offset) | decode_TO_LOWER_BIT) === decode_CharCodes.LOWER_X) {
95044
+ this.state = decode_EntityDecoderState.NumericHex;
95045
+ this.consumed += 1;
95046
+ return this.stateNumericHex(str, offset + 1);
95047
+ }
95048
+ this.state = decode_EntityDecoderState.NumericDecimal;
95049
+ return this.stateNumericDecimal(str, offset);
95050
+ }
95051
+ addToNumericResult(str, start, end, base) {
95052
+ if (start !== end) {
95053
+ const digitCount = end - start;
95054
+ this.result =
95055
+ this.result * Math.pow(base, digitCount) +
95056
+ parseInt(str.substr(start, digitCount), base);
95057
+ this.consumed += digitCount;
95058
+ }
95059
+ }
95060
+ /**
95061
+ * Parses a hexadecimal numeric entity.
95062
+ *
95063
+ * Equivalent to the `Hexademical character reference state` in the HTML spec.
95064
+ *
95065
+ * @param str The string containing the entity (or a continuation of the entity).
95066
+ * @param offset The current offset.
95067
+ * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
95068
+ */
95069
+ stateNumericHex(str, offset) {
95070
+ const startIdx = offset;
95071
+ while (offset < str.length) {
95072
+ const char = str.charCodeAt(offset);
95073
+ if (decode_isNumber(char) || decode_isHexadecimalCharacter(char)) {
95074
+ offset += 1;
95075
+ }
95076
+ else {
95077
+ this.addToNumericResult(str, startIdx, offset, 16);
95078
+ return this.emitNumericEntity(char, 3);
95079
+ }
95080
+ }
95081
+ this.addToNumericResult(str, startIdx, offset, 16);
95082
+ return -1;
95083
+ }
95084
+ /**
95085
+ * Parses a decimal numeric entity.
95086
+ *
95087
+ * Equivalent to the `Decimal character reference state` in the HTML spec.
95088
+ *
95089
+ * @param str The string containing the entity (or a continuation of the entity).
95090
+ * @param offset The current offset.
95091
+ * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
95092
+ */
95093
+ stateNumericDecimal(str, offset) {
95094
+ const startIdx = offset;
95095
+ while (offset < str.length) {
95096
+ const char = str.charCodeAt(offset);
95097
+ if (decode_isNumber(char)) {
95098
+ offset += 1;
95099
+ }
95100
+ else {
95101
+ this.addToNumericResult(str, startIdx, offset, 10);
95102
+ return this.emitNumericEntity(char, 2);
95103
+ }
95104
+ }
95105
+ this.addToNumericResult(str, startIdx, offset, 10);
95106
+ return -1;
95107
+ }
95108
+ /**
95109
+ * Validate and emit a numeric entity.
95110
+ *
95111
+ * Implements the logic from the `Hexademical character reference start
95112
+ * state` and `Numeric character reference end state` in the HTML spec.
95113
+ *
95114
+ * @param lastCp The last code point of the entity. Used to see if the
95115
+ * entity was terminated with a semicolon.
95116
+ * @param expectedLength The minimum number of characters that should be
95117
+ * consumed. Used to validate that at least one digit
95118
+ * was consumed.
95119
+ * @returns The number of characters that were consumed.
95120
+ */
95121
+ emitNumericEntity(lastCp, expectedLength) {
95122
+ var _a;
95123
+ // Ensure we consumed at least one digit.
95124
+ if (this.consumed <= expectedLength) {
95125
+ (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
95126
+ return 0;
95127
+ }
95128
+ // Figure out if this is a legit end of the entity
95129
+ if (lastCp === decode_CharCodes.SEMI) {
95130
+ this.consumed += 1;
95131
+ }
95132
+ else if (this.decodeMode === esm_decode_DecodingMode.Strict) {
95133
+ return 0;
95134
+ }
95135
+ this.emitCodePoint(decode_codepoint_replaceCodePoint(this.result), this.consumed);
95136
+ if (this.errors) {
95137
+ if (lastCp !== decode_CharCodes.SEMI) {
95138
+ this.errors.missingSemicolonAfterCharacterReference();
95139
+ }
95140
+ this.errors.validateNumericCharacterReference(this.result);
95141
+ }
95142
+ return this.consumed;
95143
+ }
95144
+ /**
95145
+ * Parses a named entity.
95146
+ *
95147
+ * Equivalent to the `Named character reference state` in the HTML spec.
95148
+ *
95149
+ * @param str The string containing the entity (or a continuation of the entity).
95150
+ * @param offset The current offset.
95151
+ * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
95152
+ */
95153
+ stateNamedEntity(str, offset) {
95154
+ const { decodeTree } = this;
95155
+ let current = decodeTree[this.treeIndex];
95156
+ // The mask is the number of bytes of the value, including the current byte.
95157
+ let valueLength = (current & decode_BinTrieFlags.VALUE_LENGTH) >> 14;
95158
+ for (; offset < str.length; offset++, this.excess++) {
95159
+ const char = str.charCodeAt(offset);
95160
+ this.treeIndex = decode_determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
95161
+ if (this.treeIndex < 0) {
95162
+ return this.result === 0 ||
95163
+ // If we are parsing an attribute
95164
+ (this.decodeMode === esm_decode_DecodingMode.Attribute &&
95165
+ // We shouldn't have consumed any characters after the entity,
95166
+ (valueLength === 0 ||
95167
+ // And there should be no invalid characters.
95168
+ decode_isEntityInAttributeInvalidEnd(char)))
95169
+ ? 0
95170
+ : this.emitNotTerminatedNamedEntity();
95171
+ }
95172
+ current = decodeTree[this.treeIndex];
95173
+ valueLength = (current & decode_BinTrieFlags.VALUE_LENGTH) >> 14;
95174
+ // If the branch is a value, store it and continue
95175
+ if (valueLength !== 0) {
95176
+ // If the entity is terminated by a semicolon, we are done.
95177
+ if (char === decode_CharCodes.SEMI) {
95178
+ return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
95179
+ }
95180
+ // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
95181
+ if (this.decodeMode !== esm_decode_DecodingMode.Strict) {
95182
+ this.result = this.treeIndex;
95183
+ this.consumed += this.excess;
95184
+ this.excess = 0;
95185
+ }
95186
+ }
95187
+ }
95188
+ return -1;
95189
+ }
95190
+ /**
95191
+ * Emit a named entity that was not terminated with a semicolon.
95192
+ *
95193
+ * @returns The number of characters consumed.
95194
+ */
95195
+ emitNotTerminatedNamedEntity() {
95196
+ var _a;
95197
+ const { result, decodeTree } = this;
95198
+ const valueLength = (decodeTree[result] & decode_BinTrieFlags.VALUE_LENGTH) >> 14;
95199
+ this.emitNamedEntityData(result, valueLength, this.consumed);
95200
+ (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
95201
+ return this.consumed;
95202
+ }
95203
+ /**
95204
+ * Emit a named entity.
95205
+ *
95206
+ * @param result The index of the entity in the decode tree.
95207
+ * @param valueLength The number of bytes in the entity.
95208
+ * @param consumed The number of characters consumed.
95209
+ *
95210
+ * @returns The number of characters consumed.
95211
+ */
95212
+ emitNamedEntityData(result, valueLength, consumed) {
95213
+ const { decodeTree } = this;
95214
+ this.emitCodePoint(valueLength === 1
95215
+ ? decodeTree[result] & ~decode_BinTrieFlags.VALUE_LENGTH
95216
+ : decodeTree[result + 1], consumed);
95217
+ if (valueLength === 3) {
95218
+ // For multi-byte values, we need to emit the second byte.
95219
+ this.emitCodePoint(decodeTree[result + 2], consumed);
95220
+ }
95221
+ return consumed;
95222
+ }
95223
+ /**
95224
+ * Signal to the parser that the end of the input was reached.
95225
+ *
95226
+ * Remaining data will be emitted and relevant errors will be produced.
95227
+ *
95228
+ * @returns The number of characters consumed.
95229
+ */
95230
+ end() {
95231
+ var _a;
95232
+ switch (this.state) {
95233
+ case decode_EntityDecoderState.NamedEntity: {
95234
+ // Emit a named entity if we have one.
95235
+ return this.result !== 0 &&
95236
+ (this.decodeMode !== esm_decode_DecodingMode.Attribute ||
95237
+ this.result === this.treeIndex)
95238
+ ? this.emitNotTerminatedNamedEntity()
95239
+ : 0;
95240
+ }
95241
+ // Otherwise, emit a numeric entity if we have one.
95242
+ case decode_EntityDecoderState.NumericDecimal: {
95243
+ return this.emitNumericEntity(0, 2);
95244
+ }
95245
+ case decode_EntityDecoderState.NumericHex: {
95246
+ return this.emitNumericEntity(0, 3);
95247
+ }
95248
+ case decode_EntityDecoderState.NumericStart: {
95249
+ (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
95250
+ return 0;
95251
+ }
95252
+ case decode_EntityDecoderState.EntityStart: {
95253
+ // Return 0 if we have no entity.
95254
+ return 0;
95255
+ }
95256
+ }
95257
+ }
95258
+ }
95259
+ /**
95260
+ * Creates a function that decodes entities in a string.
95261
+ *
95262
+ * @param decodeTree The decode tree.
95263
+ * @returns A function that decodes entities in a string.
95264
+ */
95265
+ function decode_getDecoder(decodeTree) {
95266
+ let ret = "";
95267
+ const decoder = new decode_EntityDecoder(decodeTree, (str) => (ret += esm_decode_codepoint_fromCodePoint(str)));
95268
+ return function decodeWithTrie(str, decodeMode) {
95269
+ let lastIndex = 0;
95270
+ let offset = 0;
95271
+ while ((offset = str.indexOf("&", offset)) >= 0) {
95272
+ ret += str.slice(lastIndex, offset);
95273
+ decoder.startEntity(decodeMode);
95274
+ const len = decoder.write(str,
95275
+ // Skip the "&"
95276
+ offset + 1);
95277
+ if (len < 0) {
95278
+ lastIndex = offset + decoder.end();
95279
+ break;
95280
+ }
95281
+ lastIndex = offset + len;
95282
+ // If `len` is 0, skip the current `&` and continue.
95283
+ offset = len === 0 ? lastIndex + 1 : lastIndex;
95284
+ }
95285
+ const result = ret + str.slice(lastIndex);
95286
+ // Make sure we don't keep a reference to the final string.
95287
+ ret = "";
95288
+ return result;
95289
+ };
95290
+ }
95291
+ /**
95292
+ * Determines the branch of the current node that is taken given the current
95293
+ * character. This function is used to traverse the trie.
95294
+ *
95295
+ * @param decodeTree The trie.
95296
+ * @param current The current node.
95297
+ * @param nodeIdx The index right after the current node and its value.
95298
+ * @param char The current character.
95299
+ * @returns The index of the next node, or -1 if no branch is taken.
95300
+ */
95301
+ function decode_determineBranch(decodeTree, current, nodeIdx, char) {
95302
+ const branchCount = (current & decode_BinTrieFlags.BRANCH_LENGTH) >> 7;
95303
+ const jumpOffset = current & decode_BinTrieFlags.JUMP_TABLE;
95304
+ // Case 1: Single branch encoded in jump offset
95305
+ if (branchCount === 0) {
95306
+ return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
95307
+ }
95308
+ // Case 2: Multiple branches encoded in jump table
95309
+ if (jumpOffset) {
95310
+ const value = char - jumpOffset;
95311
+ return value < 0 || value >= branchCount
95312
+ ? -1
95313
+ : decodeTree[nodeIdx + value] - 1;
95314
+ }
95315
+ // Case 3: Multiple branches encoded in dictionary
95316
+ // Binary search for the character.
95317
+ let lo = nodeIdx;
95318
+ let hi = lo + branchCount - 1;
95319
+ while (lo <= hi) {
95320
+ const mid = (lo + hi) >>> 1;
95321
+ const midVal = decodeTree[mid];
95322
+ if (midVal < char) {
95323
+ lo = mid + 1;
95324
+ }
95325
+ else if (midVal > char) {
95326
+ hi = mid - 1;
95327
+ }
95328
+ else {
95329
+ return decodeTree[mid + branchCount];
95330
+ }
95331
+ }
95332
+ return -1;
95333
+ }
95334
+ const decode_htmlDecoder = decode_getDecoder(decode_data_html);
95335
+ const decode_xmlDecoder = decode_getDecoder(decode_data_xml);
95336
+ /**
95337
+ * Decodes an HTML string.
95338
+ *
95339
+ * @param str The string to decode.
95340
+ * @param mode The decoding mode.
95341
+ * @returns The decoded string.
95342
+ */
95343
+ function esm_decode_decodeHTML(str, mode = esm_decode_DecodingMode.Legacy) {
95344
+ return decode_htmlDecoder(str, mode);
95345
+ }
95346
+ /**
95347
+ * Decodes an HTML string in an attribute.
95348
+ *
95349
+ * @param str The string to decode.
95350
+ * @returns The decoded string.
95351
+ */
95352
+ function decode_decodeHTMLAttribute(str) {
95353
+ return decode_htmlDecoder(str, esm_decode_DecodingMode.Attribute);
95354
+ }
95355
+ /**
95356
+ * Decodes an HTML string, requiring all entities to be terminated by a semicolon.
95357
+ *
95358
+ * @param str The string to decode.
95359
+ * @returns The decoded string.
95360
+ */
95361
+ function decode_decodeHTMLStrict(str) {
95362
+ return decode_htmlDecoder(str, esm_decode_DecodingMode.Strict);
95363
+ }
95364
+ /**
95365
+ * Decodes an XML string, requiring all entities to be terminated by a semicolon.
95366
+ *
95367
+ * @param str The string to decode.
95368
+ * @returns The decoded string.
95369
+ */
95370
+ function esm_decode_decodeXML(str) {
95371
+ return decode_xmlDecoder(str, esm_decode_DecodingMode.Strict);
95372
+ }
95373
+ //# sourceMappingURL=decode.js.map
94833
95374
  ;// ./node_modules/entities/lib/esm/generated/encode-html.js
94834
95375
  // Generated using scripts/write-encode-map.ts
94835
95376
  function restoreDiff(arr) {
@@ -94841,6 +95382,123 @@ function restoreDiff(arr) {
94841
95382
  // prettier-ignore
94842
95383
  /* harmony default export */ const encode_html = (new Map(/* #__PURE__ */ restoreDiff([[9, "&Tab;"], [0, "&NewLine;"], [22, "&excl;"], [0, "&quot;"], [0, "&num;"], [0, "&dollar;"], [0, "&percnt;"], [0, "&amp;"], [0, "&apos;"], [0, "&lpar;"], [0, "&rpar;"], [0, "&ast;"], [0, "&plus;"], [0, "&comma;"], [1, "&period;"], [0, "&sol;"], [10, "&colon;"], [0, "&semi;"], [0, { v: "&lt;", n: 8402, o: "&nvlt;" }], [0, { v: "&equals;", n: 8421, o: "&bne;" }], [0, { v: "&gt;", n: 8402, o: "&nvgt;" }], [0, "&quest;"], [0, "&commat;"], [26, "&lbrack;"], [0, "&bsol;"], [0, "&rbrack;"], [0, "&Hat;"], [0, "&lowbar;"], [0, "&DiacriticalGrave;"], [5, { n: 106, o: "&fjlig;" }], [20, "&lbrace;"], [0, "&verbar;"], [0, "&rbrace;"], [34, "&nbsp;"], [0, "&iexcl;"], [0, "&cent;"], [0, "&pound;"], [0, "&curren;"], [0, "&yen;"], [0, "&brvbar;"], [0, "&sect;"], [0, "&die;"], [0, "&copy;"], [0, "&ordf;"], [0, "&laquo;"], [0, "&not;"], [0, "&shy;"], [0, "&circledR;"], [0, "&macr;"], [0, "&deg;"], [0, "&PlusMinus;"], [0, "&sup2;"], [0, "&sup3;"], [0, "&acute;"], [0, "&micro;"], [0, "&para;"], [0, "&centerdot;"], [0, "&cedil;"], [0, "&sup1;"], [0, "&ordm;"], [0, "&raquo;"], [0, "&frac14;"], [0, "&frac12;"], [0, "&frac34;"], [0, "&iquest;"], [0, "&Agrave;"], [0, "&Aacute;"], [0, "&Acirc;"], [0, "&Atilde;"], [0, "&Auml;"], [0, "&angst;"], [0, "&AElig;"], [0, "&Ccedil;"], [0, "&Egrave;"], [0, "&Eacute;"], [0, "&Ecirc;"], [0, "&Euml;"], [0, "&Igrave;"], [0, "&Iacute;"], [0, "&Icirc;"], [0, "&Iuml;"], [0, "&ETH;"], [0, "&Ntilde;"], [0, "&Ograve;"], [0, "&Oacute;"], [0, "&Ocirc;"], [0, "&Otilde;"], [0, "&Ouml;"], [0, "&times;"], [0, "&Oslash;"], [0, "&Ugrave;"], [0, "&Uacute;"], [0, "&Ucirc;"], [0, "&Uuml;"], [0, "&Yacute;"], [0, "&THORN;"], [0, "&szlig;"], [0, "&agrave;"], [0, "&aacute;"], [0, "&acirc;"], [0, "&atilde;"], [0, "&auml;"], [0, "&aring;"], [0, "&aelig;"], [0, "&ccedil;"], [0, "&egrave;"], [0, "&eacute;"], [0, "&ecirc;"], [0, "&euml;"], [0, "&igrave;"], [0, "&iacute;"], [0, "&icirc;"], [0, "&iuml;"], [0, "&eth;"], [0, "&ntilde;"], [0, "&ograve;"], [0, "&oacute;"], [0, "&ocirc;"], [0, "&otilde;"], [0, "&ouml;"], [0, "&div;"], [0, "&oslash;"], [0, "&ugrave;"], [0, "&uacute;"], [0, "&ucirc;"], [0, "&uuml;"], [0, "&yacute;"], [0, "&thorn;"], [0, "&yuml;"], [0, "&Amacr;"], [0, "&amacr;"], [0, "&Abreve;"], [0, "&abreve;"], [0, "&Aogon;"], [0, "&aogon;"], [0, "&Cacute;"], [0, "&cacute;"], [0, "&Ccirc;"], [0, "&ccirc;"], [0, "&Cdot;"], [0, "&cdot;"], [0, "&Ccaron;"], [0, "&ccaron;"], [0, "&Dcaron;"], [0, "&dcaron;"], [0, "&Dstrok;"], [0, "&dstrok;"], [0, "&Emacr;"], [0, "&emacr;"], [2, "&Edot;"], [0, "&edot;"], [0, "&Eogon;"], [0, "&eogon;"], [0, "&Ecaron;"], [0, "&ecaron;"], [0, "&Gcirc;"], [0, "&gcirc;"], [0, "&Gbreve;"], [0, "&gbreve;"], [0, "&Gdot;"], [0, "&gdot;"], [0, "&Gcedil;"], [1, "&Hcirc;"], [0, "&hcirc;"], [0, "&Hstrok;"], [0, "&hstrok;"], [0, "&Itilde;"], [0, "&itilde;"], [0, "&Imacr;"], [0, "&imacr;"], [2, "&Iogon;"], [0, "&iogon;"], [0, "&Idot;"], [0, "&imath;"], [0, "&IJlig;"], [0, "&ijlig;"], [0, "&Jcirc;"], [0, "&jcirc;"], [0, "&Kcedil;"], [0, "&kcedil;"], [0, "&kgreen;"], [0, "&Lacute;"], [0, "&lacute;"], [0, "&Lcedil;"], [0, "&lcedil;"], [0, "&Lcaron;"], [0, "&lcaron;"], [0, "&Lmidot;"], [0, "&lmidot;"], [0, "&Lstrok;"], [0, "&lstrok;"], [0, "&Nacute;"], [0, "&nacute;"], [0, "&Ncedil;"], [0, "&ncedil;"], [0, "&Ncaron;"], [0, "&ncaron;"], [0, "&napos;"], [0, "&ENG;"], [0, "&eng;"], [0, "&Omacr;"], [0, "&omacr;"], [2, "&Odblac;"], [0, "&odblac;"], [0, "&OElig;"], [0, "&oelig;"], [0, "&Racute;"], [0, "&racute;"], [0, "&Rcedil;"], [0, "&rcedil;"], [0, "&Rcaron;"], [0, "&rcaron;"], [0, "&Sacute;"], [0, "&sacute;"], [0, "&Scirc;"], [0, "&scirc;"], [0, "&Scedil;"], [0, "&scedil;"], [0, "&Scaron;"], [0, "&scaron;"], [0, "&Tcedil;"], [0, "&tcedil;"], [0, "&Tcaron;"], [0, "&tcaron;"], [0, "&Tstrok;"], [0, "&tstrok;"], [0, "&Utilde;"], [0, "&utilde;"], [0, "&Umacr;"], [0, "&umacr;"], [0, "&Ubreve;"], [0, "&ubreve;"], [0, "&Uring;"], [0, "&uring;"], [0, "&Udblac;"], [0, "&udblac;"], [0, "&Uogon;"], [0, "&uogon;"], [0, "&Wcirc;"], [0, "&wcirc;"], [0, "&Ycirc;"], [0, "&ycirc;"], [0, "&Yuml;"], [0, "&Zacute;"], [0, "&zacute;"], [0, "&Zdot;"], [0, "&zdot;"], [0, "&Zcaron;"], [0, "&zcaron;"], [19, "&fnof;"], [34, "&imped;"], [63, "&gacute;"], [65, "&jmath;"], [142, "&circ;"], [0, "&caron;"], [16, "&breve;"], [0, "&DiacriticalDot;"], [0, "&ring;"], [0, "&ogon;"], [0, "&DiacriticalTilde;"], [0, "&dblac;"], [51, "&DownBreve;"], [127, "&Alpha;"], [0, "&Beta;"], [0, "&Gamma;"], [0, "&Delta;"], [0, "&Epsilon;"], [0, "&Zeta;"], [0, "&Eta;"], [0, "&Theta;"], [0, "&Iota;"], [0, "&Kappa;"], [0, "&Lambda;"], [0, "&Mu;"], [0, "&Nu;"], [0, "&Xi;"], [0, "&Omicron;"], [0, "&Pi;"], [0, "&Rho;"], [1, "&Sigma;"], [0, "&Tau;"], [0, "&Upsilon;"], [0, "&Phi;"], [0, "&Chi;"], [0, "&Psi;"], [0, "&ohm;"], [7, "&alpha;"], [0, "&beta;"], [0, "&gamma;"], [0, "&delta;"], [0, "&epsi;"], [0, "&zeta;"], [0, "&eta;"], [0, "&theta;"], [0, "&iota;"], [0, "&kappa;"], [0, "&lambda;"], [0, "&mu;"], [0, "&nu;"], [0, "&xi;"], [0, "&omicron;"], [0, "&pi;"], [0, "&rho;"], [0, "&sigmaf;"], [0, "&sigma;"], [0, "&tau;"], [0, "&upsi;"], [0, "&phi;"], [0, "&chi;"], [0, "&psi;"], [0, "&omega;"], [7, "&thetasym;"], [0, "&Upsi;"], [2, "&phiv;"], [0, "&piv;"], [5, "&Gammad;"], [0, "&digamma;"], [18, "&kappav;"], [0, "&rhov;"], [3, "&epsiv;"], [0, "&backepsilon;"], [10, "&IOcy;"], [0, "&DJcy;"], [0, "&GJcy;"], [0, "&Jukcy;"], [0, "&DScy;"], [0, "&Iukcy;"], [0, "&YIcy;"], [0, "&Jsercy;"], [0, "&LJcy;"], [0, "&NJcy;"], [0, "&TSHcy;"], [0, "&KJcy;"], [1, "&Ubrcy;"], [0, "&DZcy;"], [0, "&Acy;"], [0, "&Bcy;"], [0, "&Vcy;"], [0, "&Gcy;"], [0, "&Dcy;"], [0, "&IEcy;"], [0, "&ZHcy;"], [0, "&Zcy;"], [0, "&Icy;"], [0, "&Jcy;"], [0, "&Kcy;"], [0, "&Lcy;"], [0, "&Mcy;"], [0, "&Ncy;"], [0, "&Ocy;"], [0, "&Pcy;"], [0, "&Rcy;"], [0, "&Scy;"], [0, "&Tcy;"], [0, "&Ucy;"], [0, "&Fcy;"], [0, "&KHcy;"], [0, "&TScy;"], [0, "&CHcy;"], [0, "&SHcy;"], [0, "&SHCHcy;"], [0, "&HARDcy;"], [0, "&Ycy;"], [0, "&SOFTcy;"], [0, "&Ecy;"], [0, "&YUcy;"], [0, "&YAcy;"], [0, "&acy;"], [0, "&bcy;"], [0, "&vcy;"], [0, "&gcy;"], [0, "&dcy;"], [0, "&iecy;"], [0, "&zhcy;"], [0, "&zcy;"], [0, "&icy;"], [0, "&jcy;"], [0, "&kcy;"], [0, "&lcy;"], [0, "&mcy;"], [0, "&ncy;"], [0, "&ocy;"], [0, "&pcy;"], [0, "&rcy;"], [0, "&scy;"], [0, "&tcy;"], [0, "&ucy;"], [0, "&fcy;"], [0, "&khcy;"], [0, "&tscy;"], [0, "&chcy;"], [0, "&shcy;"], [0, "&shchcy;"], [0, "&hardcy;"], [0, "&ycy;"], [0, "&softcy;"], [0, "&ecy;"], [0, "&yucy;"], [0, "&yacy;"], [1, "&iocy;"], [0, "&djcy;"], [0, "&gjcy;"], [0, "&jukcy;"], [0, "&dscy;"], [0, "&iukcy;"], [0, "&yicy;"], [0, "&jsercy;"], [0, "&ljcy;"], [0, "&njcy;"], [0, "&tshcy;"], [0, "&kjcy;"], [1, "&ubrcy;"], [0, "&dzcy;"], [7074, "&ensp;"], [0, "&emsp;"], [0, "&emsp13;"], [0, "&emsp14;"], [1, "&numsp;"], [0, "&puncsp;"], [0, "&ThinSpace;"], [0, "&hairsp;"], [0, "&NegativeMediumSpace;"], [0, "&zwnj;"], [0, "&zwj;"], [0, "&lrm;"], [0, "&rlm;"], [0, "&dash;"], [2, "&ndash;"], [0, "&mdash;"], [0, "&horbar;"], [0, "&Verbar;"], [1, "&lsquo;"], [0, "&CloseCurlyQuote;"], [0, "&lsquor;"], [1, "&ldquo;"], [0, "&CloseCurlyDoubleQuote;"], [0, "&bdquo;"], [1, "&dagger;"], [0, "&Dagger;"], [0, "&bull;"], [2, "&nldr;"], [0, "&hellip;"], [9, "&permil;"], [0, "&pertenk;"], [0, "&prime;"], [0, "&Prime;"], [0, "&tprime;"], [0, "&backprime;"], [3, "&lsaquo;"], [0, "&rsaquo;"], [3, "&oline;"], [2, "&caret;"], [1, "&hybull;"], [0, "&frasl;"], [10, "&bsemi;"], [7, "&qprime;"], [7, { v: "&MediumSpace;", n: 8202, o: "&ThickSpace;" }], [0, "&NoBreak;"], [0, "&af;"], [0, "&InvisibleTimes;"], [0, "&ic;"], [72, "&euro;"], [46, "&tdot;"], [0, "&DotDot;"], [37, "&complexes;"], [2, "&incare;"], [4, "&gscr;"], [0, "&hamilt;"], [0, "&Hfr;"], [0, "&Hopf;"], [0, "&planckh;"], [0, "&hbar;"], [0, "&imagline;"], [0, "&Ifr;"], [0, "&lagran;"], [0, "&ell;"], [1, "&naturals;"], [0, "&numero;"], [0, "&copysr;"], [0, "&weierp;"], [0, "&Popf;"], [0, "&Qopf;"], [0, "&realine;"], [0, "&real;"], [0, "&reals;"], [0, "&rx;"], [3, "&trade;"], [1, "&integers;"], [2, "&mho;"], [0, "&zeetrf;"], [0, "&iiota;"], [2, "&bernou;"], [0, "&Cayleys;"], [1, "&escr;"], [0, "&Escr;"], [0, "&Fouriertrf;"], [1, "&Mellintrf;"], [0, "&order;"], [0, "&alefsym;"], [0, "&beth;"], [0, "&gimel;"], [0, "&daleth;"], [12, "&CapitalDifferentialD;"], [0, "&dd;"], [0, "&ee;"], [0, "&ii;"], [10, "&frac13;"], [0, "&frac23;"], [0, "&frac15;"], [0, "&frac25;"], [0, "&frac35;"], [0, "&frac45;"], [0, "&frac16;"], [0, "&frac56;"], [0, "&frac18;"], [0, "&frac38;"], [0, "&frac58;"], [0, "&frac78;"], [49, "&larr;"], [0, "&ShortUpArrow;"], [0, "&rarr;"], [0, "&darr;"], [0, "&harr;"], [0, "&updownarrow;"], [0, "&nwarr;"], [0, "&nearr;"], [0, "&LowerRightArrow;"], [0, "&LowerLeftArrow;"], [0, "&nlarr;"], [0, "&nrarr;"], [1, { v: "&rarrw;", n: 824, o: "&nrarrw;" }], [0, "&Larr;"], [0, "&Uarr;"], [0, "&Rarr;"], [0, "&Darr;"], [0, "&larrtl;"], [0, "&rarrtl;"], [0, "&LeftTeeArrow;"], [0, "&mapstoup;"], [0, "&map;"], [0, "&DownTeeArrow;"], [1, "&hookleftarrow;"], [0, "&hookrightarrow;"], [0, "&larrlp;"], [0, "&looparrowright;"], [0, "&harrw;"], [0, "&nharr;"], [1, "&lsh;"], [0, "&rsh;"], [0, "&ldsh;"], [0, "&rdsh;"], [1, "&crarr;"], [0, "&cularr;"], [0, "&curarr;"], [2, "&circlearrowleft;"], [0, "&circlearrowright;"], [0, "&leftharpoonup;"], [0, "&DownLeftVector;"], [0, "&RightUpVector;"], [0, "&LeftUpVector;"], [0, "&rharu;"], [0, "&DownRightVector;"], [0, "&dharr;"], [0, "&dharl;"], [0, "&RightArrowLeftArrow;"], [0, "&udarr;"], [0, "&LeftArrowRightArrow;"], [0, "&leftleftarrows;"], [0, "&upuparrows;"], [0, "&rightrightarrows;"], [0, "&ddarr;"], [0, "&leftrightharpoons;"], [0, "&Equilibrium;"], [0, "&nlArr;"], [0, "&nhArr;"], [0, "&nrArr;"], [0, "&DoubleLeftArrow;"], [0, "&DoubleUpArrow;"], [0, "&DoubleRightArrow;"], [0, "&dArr;"], [0, "&DoubleLeftRightArrow;"], [0, "&DoubleUpDownArrow;"], [0, "&nwArr;"], [0, "&neArr;"], [0, "&seArr;"], [0, "&swArr;"], [0, "&lAarr;"], [0, "&rAarr;"], [1, "&zigrarr;"], [6, "&larrb;"], [0, "&rarrb;"], [15, "&DownArrowUpArrow;"], [7, "&loarr;"], [0, "&roarr;"], [0, "&hoarr;"], [0, "&forall;"], [0, "&comp;"], [0, { v: "&part;", n: 824, o: "&npart;" }], [0, "&exist;"], [0, "&nexist;"], [0, "&empty;"], [1, "&Del;"], [0, "&Element;"], [0, "&NotElement;"], [1, "&ni;"], [0, "&notni;"], [2, "&prod;"], [0, "&coprod;"], [0, "&sum;"], [0, "&minus;"], [0, "&MinusPlus;"], [0, "&dotplus;"], [1, "&Backslash;"], [0, "&lowast;"], [0, "&compfn;"], [1, "&radic;"], [2, "&prop;"], [0, "&infin;"], [0, "&angrt;"], [0, { v: "&ang;", n: 8402, o: "&nang;" }], [0, "&angmsd;"], [0, "&angsph;"], [0, "&mid;"], [0, "&nmid;"], [0, "&DoubleVerticalBar;"], [0, "&NotDoubleVerticalBar;"], [0, "&and;"], [0, "&or;"], [0, { v: "&cap;", n: 65024, o: "&caps;" }], [0, { v: "&cup;", n: 65024, o: "&cups;" }], [0, "&int;"], [0, "&Int;"], [0, "&iiint;"], [0, "&conint;"], [0, "&Conint;"], [0, "&Cconint;"], [0, "&cwint;"], [0, "&ClockwiseContourIntegral;"], [0, "&awconint;"], [0, "&there4;"], [0, "&becaus;"], [0, "&ratio;"], [0, "&Colon;"], [0, "&dotminus;"], [1, "&mDDot;"], [0, "&homtht;"], [0, { v: "&sim;", n: 8402, o: "&nvsim;" }], [0, { v: "&backsim;", n: 817, o: "&race;" }], [0, { v: "&ac;", n: 819, o: "&acE;" }], [0, "&acd;"], [0, "&VerticalTilde;"], [0, "&NotTilde;"], [0, { v: "&eqsim;", n: 824, o: "&nesim;" }], [0, "&sime;"], [0, "&NotTildeEqual;"], [0, "&cong;"], [0, "&simne;"], [0, "&ncong;"], [0, "&ap;"], [0, "&nap;"], [0, "&ape;"], [0, { v: "&apid;", n: 824, o: "&napid;" }], [0, "&backcong;"], [0, { v: "&asympeq;", n: 8402, o: "&nvap;" }], [0, { v: "&bump;", n: 824, o: "&nbump;" }], [0, { v: "&bumpe;", n: 824, o: "&nbumpe;" }], [0, { v: "&doteq;", n: 824, o: "&nedot;" }], [0, "&doteqdot;"], [0, "&efDot;"], [0, "&erDot;"], [0, "&Assign;"], [0, "&ecolon;"], [0, "&ecir;"], [0, "&circeq;"], [1, "&wedgeq;"], [0, "&veeeq;"], [1, "&triangleq;"], [2, "&equest;"], [0, "&ne;"], [0, { v: "&Congruent;", n: 8421, o: "&bnequiv;" }], [0, "&nequiv;"], [1, { v: "&le;", n: 8402, o: "&nvle;" }], [0, { v: "&ge;", n: 8402, o: "&nvge;" }], [0, { v: "&lE;", n: 824, o: "&nlE;" }], [0, { v: "&gE;", n: 824, o: "&ngE;" }], [0, { v: "&lnE;", n: 65024, o: "&lvertneqq;" }], [0, { v: "&gnE;", n: 65024, o: "&gvertneqq;" }], [0, { v: "&ll;", n: new Map(/* #__PURE__ */ restoreDiff([[824, "&nLtv;"], [7577, "&nLt;"]])) }], [0, { v: "&gg;", n: new Map(/* #__PURE__ */ restoreDiff([[824, "&nGtv;"], [7577, "&nGt;"]])) }], [0, "&between;"], [0, "&NotCupCap;"], [0, "&nless;"], [0, "&ngt;"], [0, "&nle;"], [0, "&nge;"], [0, "&lesssim;"], [0, "&GreaterTilde;"], [0, "&nlsim;"], [0, "&ngsim;"], [0, "&LessGreater;"], [0, "&gl;"], [0, "&NotLessGreater;"], [0, "&NotGreaterLess;"], [0, "&pr;"], [0, "&sc;"], [0, "&prcue;"], [0, "&sccue;"], [0, "&PrecedesTilde;"], [0, { v: "&scsim;", n: 824, o: "&NotSucceedsTilde;" }], [0, "&NotPrecedes;"], [0, "&NotSucceeds;"], [0, { v: "&sub;", n: 8402, o: "&NotSubset;" }], [0, { v: "&sup;", n: 8402, o: "&NotSuperset;" }], [0, "&nsub;"], [0, "&nsup;"], [0, "&sube;"], [0, "&supe;"], [0, "&NotSubsetEqual;"], [0, "&NotSupersetEqual;"], [0, { v: "&subne;", n: 65024, o: "&varsubsetneq;" }], [0, { v: "&supne;", n: 65024, o: "&varsupsetneq;" }], [1, "&cupdot;"], [0, "&UnionPlus;"], [0, { v: "&sqsub;", n: 824, o: "&NotSquareSubset;" }], [0, { v: "&sqsup;", n: 824, o: "&NotSquareSuperset;" }], [0, "&sqsube;"], [0, "&sqsupe;"], [0, { v: "&sqcap;", n: 65024, o: "&sqcaps;" }], [0, { v: "&sqcup;", n: 65024, o: "&sqcups;" }], [0, "&CirclePlus;"], [0, "&CircleMinus;"], [0, "&CircleTimes;"], [0, "&osol;"], [0, "&CircleDot;"], [0, "&circledcirc;"], [0, "&circledast;"], [1, "&circleddash;"], [0, "&boxplus;"], [0, "&boxminus;"], [0, "&boxtimes;"], [0, "&dotsquare;"], [0, "&RightTee;"], [0, "&dashv;"], [0, "&DownTee;"], [0, "&bot;"], [1, "&models;"], [0, "&DoubleRightTee;"], [0, "&Vdash;"], [0, "&Vvdash;"], [0, "&VDash;"], [0, "&nvdash;"], [0, "&nvDash;"], [0, "&nVdash;"], [0, "&nVDash;"], [0, "&prurel;"], [1, "&LeftTriangle;"], [0, "&RightTriangle;"], [0, { v: "&LeftTriangleEqual;", n: 8402, o: "&nvltrie;" }], [0, { v: "&RightTriangleEqual;", n: 8402, o: "&nvrtrie;" }], [0, "&origof;"], [0, "&imof;"], [0, "&multimap;"], [0, "&hercon;"], [0, "&intcal;"], [0, "&veebar;"], [1, "&barvee;"], [0, "&angrtvb;"], [0, "&lrtri;"], [0, "&bigwedge;"], [0, "&bigvee;"], [0, "&bigcap;"], [0, "&bigcup;"], [0, "&diam;"], [0, "&sdot;"], [0, "&sstarf;"], [0, "&divideontimes;"], [0, "&bowtie;"], [0, "&ltimes;"], [0, "&rtimes;"], [0, "&leftthreetimes;"], [0, "&rightthreetimes;"], [0, "&backsimeq;"], [0, "&curlyvee;"], [0, "&curlywedge;"], [0, "&Sub;"], [0, "&Sup;"], [0, "&Cap;"], [0, "&Cup;"], [0, "&fork;"], [0, "&epar;"], [0, "&lessdot;"], [0, "&gtdot;"], [0, { v: "&Ll;", n: 824, o: "&nLl;" }], [0, { v: "&Gg;", n: 824, o: "&nGg;" }], [0, { v: "&leg;", n: 65024, o: "&lesg;" }], [0, { v: "&gel;", n: 65024, o: "&gesl;" }], [2, "&cuepr;"], [0, "&cuesc;"], [0, "&NotPrecedesSlantEqual;"], [0, "&NotSucceedsSlantEqual;"], [0, "&NotSquareSubsetEqual;"], [0, "&NotSquareSupersetEqual;"], [2, "&lnsim;"], [0, "&gnsim;"], [0, "&precnsim;"], [0, "&scnsim;"], [0, "&nltri;"], [0, "&NotRightTriangle;"], [0, "&nltrie;"], [0, "&NotRightTriangleEqual;"], [0, "&vellip;"], [0, "&ctdot;"], [0, "&utdot;"], [0, "&dtdot;"], [0, "&disin;"], [0, "&isinsv;"], [0, "&isins;"], [0, { v: "&isindot;", n: 824, o: "&notindot;" }], [0, "&notinvc;"], [0, "&notinvb;"], [1, { v: "&isinE;", n: 824, o: "&notinE;" }], [0, "&nisd;"], [0, "&xnis;"], [0, "&nis;"], [0, "&notnivc;"], [0, "&notnivb;"], [6, "&barwed;"], [0, "&Barwed;"], [1, "&lceil;"], [0, "&rceil;"], [0, "&LeftFloor;"], [0, "&rfloor;"], [0, "&drcrop;"], [0, "&dlcrop;"], [0, "&urcrop;"], [0, "&ulcrop;"], [0, "&bnot;"], [1, "&profline;"], [0, "&profsurf;"], [1, "&telrec;"], [0, "&target;"], [5, "&ulcorn;"], [0, "&urcorn;"], [0, "&dlcorn;"], [0, "&drcorn;"], [2, "&frown;"], [0, "&smile;"], [9, "&cylcty;"], [0, "&profalar;"], [7, "&topbot;"], [6, "&ovbar;"], [1, "&solbar;"], [60, "&angzarr;"], [51, "&lmoustache;"], [0, "&rmoustache;"], [2, "&OverBracket;"], [0, "&bbrk;"], [0, "&bbrktbrk;"], [37, "&OverParenthesis;"], [0, "&UnderParenthesis;"], [0, "&OverBrace;"], [0, "&UnderBrace;"], [2, "&trpezium;"], [4, "&elinters;"], [59, "&blank;"], [164, "&circledS;"], [55, "&boxh;"], [1, "&boxv;"], [9, "&boxdr;"], [3, "&boxdl;"], [3, "&boxur;"], [3, "&boxul;"], [3, "&boxvr;"], [7, "&boxvl;"], [7, "&boxhd;"], [7, "&boxhu;"], [7, "&boxvh;"], [19, "&boxH;"], [0, "&boxV;"], [0, "&boxdR;"], [0, "&boxDr;"], [0, "&boxDR;"], [0, "&boxdL;"], [0, "&boxDl;"], [0, "&boxDL;"], [0, "&boxuR;"], [0, "&boxUr;"], [0, "&boxUR;"], [0, "&boxuL;"], [0, "&boxUl;"], [0, "&boxUL;"], [0, "&boxvR;"], [0, "&boxVr;"], [0, "&boxVR;"], [0, "&boxvL;"], [0, "&boxVl;"], [0, "&boxVL;"], [0, "&boxHd;"], [0, "&boxhD;"], [0, "&boxHD;"], [0, "&boxHu;"], [0, "&boxhU;"], [0, "&boxHU;"], [0, "&boxvH;"], [0, "&boxVh;"], [0, "&boxVH;"], [19, "&uhblk;"], [3, "&lhblk;"], [3, "&block;"], [8, "&blk14;"], [0, "&blk12;"], [0, "&blk34;"], [13, "&square;"], [8, "&blacksquare;"], [0, "&EmptyVerySmallSquare;"], [1, "&rect;"], [0, "&marker;"], [2, "&fltns;"], [1, "&bigtriangleup;"], [0, "&blacktriangle;"], [0, "&triangle;"], [2, "&blacktriangleright;"], [0, "&rtri;"], [3, "&bigtriangledown;"], [0, "&blacktriangledown;"], [0, "&dtri;"], [2, "&blacktriangleleft;"], [0, "&ltri;"], [6, "&loz;"], [0, "&cir;"], [32, "&tridot;"], [2, "&bigcirc;"], [8, "&ultri;"], [0, "&urtri;"], [0, "&lltri;"], [0, "&EmptySmallSquare;"], [0, "&FilledSmallSquare;"], [8, "&bigstar;"], [0, "&star;"], [7, "&phone;"], [49, "&female;"], [1, "&male;"], [29, "&spades;"], [2, "&clubs;"], [1, "&hearts;"], [0, "&diamondsuit;"], [3, "&sung;"], [2, "&flat;"], [0, "&natural;"], [0, "&sharp;"], [163, "&check;"], [3, "&cross;"], [8, "&malt;"], [21, "&sext;"], [33, "&VerticalSeparator;"], [25, "&lbbrk;"], [0, "&rbbrk;"], [84, "&bsolhsub;"], [0, "&suphsol;"], [28, "&LeftDoubleBracket;"], [0, "&RightDoubleBracket;"], [0, "&lang;"], [0, "&rang;"], [0, "&Lang;"], [0, "&Rang;"], [0, "&loang;"], [0, "&roang;"], [7, "&longleftarrow;"], [0, "&longrightarrow;"], [0, "&longleftrightarrow;"], [0, "&DoubleLongLeftArrow;"], [0, "&DoubleLongRightArrow;"], [0, "&DoubleLongLeftRightArrow;"], [1, "&longmapsto;"], [2, "&dzigrarr;"], [258, "&nvlArr;"], [0, "&nvrArr;"], [0, "&nvHarr;"], [0, "&Map;"], [6, "&lbarr;"], [0, "&bkarow;"], [0, "&lBarr;"], [0, "&dbkarow;"], [0, "&drbkarow;"], [0, "&DDotrahd;"], [0, "&UpArrowBar;"], [0, "&DownArrowBar;"], [2, "&Rarrtl;"], [2, "&latail;"], [0, "&ratail;"], [0, "&lAtail;"], [0, "&rAtail;"], [0, "&larrfs;"], [0, "&rarrfs;"], [0, "&larrbfs;"], [0, "&rarrbfs;"], [2, "&nwarhk;"], [0, "&nearhk;"], [0, "&hksearow;"], [0, "&hkswarow;"], [0, "&nwnear;"], [0, "&nesear;"], [0, "&seswar;"], [0, "&swnwar;"], [8, { v: "&rarrc;", n: 824, o: "&nrarrc;" }], [1, "&cudarrr;"], [0, "&ldca;"], [0, "&rdca;"], [0, "&cudarrl;"], [0, "&larrpl;"], [2, "&curarrm;"], [0, "&cularrp;"], [7, "&rarrpl;"], [2, "&harrcir;"], [0, "&Uarrocir;"], [0, "&lurdshar;"], [0, "&ldrushar;"], [2, "&LeftRightVector;"], [0, "&RightUpDownVector;"], [0, "&DownLeftRightVector;"], [0, "&LeftUpDownVector;"], [0, "&LeftVectorBar;"], [0, "&RightVectorBar;"], [0, "&RightUpVectorBar;"], [0, "&RightDownVectorBar;"], [0, "&DownLeftVectorBar;"], [0, "&DownRightVectorBar;"], [0, "&LeftUpVectorBar;"], [0, "&LeftDownVectorBar;"], [0, "&LeftTeeVector;"], [0, "&RightTeeVector;"], [0, "&RightUpTeeVector;"], [0, "&RightDownTeeVector;"], [0, "&DownLeftTeeVector;"], [0, "&DownRightTeeVector;"], [0, "&LeftUpTeeVector;"], [0, "&LeftDownTeeVector;"], [0, "&lHar;"], [0, "&uHar;"], [0, "&rHar;"], [0, "&dHar;"], [0, "&luruhar;"], [0, "&ldrdhar;"], [0, "&ruluhar;"], [0, "&rdldhar;"], [0, "&lharul;"], [0, "&llhard;"], [0, "&rharul;"], [0, "&lrhard;"], [0, "&udhar;"], [0, "&duhar;"], [0, "&RoundImplies;"], [0, "&erarr;"], [0, "&simrarr;"], [0, "&larrsim;"], [0, "&rarrsim;"], [0, "&rarrap;"], [0, "&ltlarr;"], [1, "&gtrarr;"], [0, "&subrarr;"], [1, "&suplarr;"], [0, "&lfisht;"], [0, "&rfisht;"], [0, "&ufisht;"], [0, "&dfisht;"], [5, "&lopar;"], [0, "&ropar;"], [4, "&lbrke;"], [0, "&rbrke;"], [0, "&lbrkslu;"], [0, "&rbrksld;"], [0, "&lbrksld;"], [0, "&rbrkslu;"], [0, "&langd;"], [0, "&rangd;"], [0, "&lparlt;"], [0, "&rpargt;"], [0, "&gtlPar;"], [0, "&ltrPar;"], [3, "&vzigzag;"], [1, "&vangrt;"], [0, "&angrtvbd;"], [6, "&ange;"], [0, "&range;"], [0, "&dwangle;"], [0, "&uwangle;"], [0, "&angmsdaa;"], [0, "&angmsdab;"], [0, "&angmsdac;"], [0, "&angmsdad;"], [0, "&angmsdae;"], [0, "&angmsdaf;"], [0, "&angmsdag;"], [0, "&angmsdah;"], [0, "&bemptyv;"], [0, "&demptyv;"], [0, "&cemptyv;"], [0, "&raemptyv;"], [0, "&laemptyv;"], [0, "&ohbar;"], [0, "&omid;"], [0, "&opar;"], [1, "&operp;"], [1, "&olcross;"], [0, "&odsold;"], [1, "&olcir;"], [0, "&ofcir;"], [0, "&olt;"], [0, "&ogt;"], [0, "&cirscir;"], [0, "&cirE;"], [0, "&solb;"], [0, "&bsolb;"], [3, "&boxbox;"], [3, "&trisb;"], [0, "&rtriltri;"], [0, { v: "&LeftTriangleBar;", n: 824, o: "&NotLeftTriangleBar;" }], [0, { v: "&RightTriangleBar;", n: 824, o: "&NotRightTriangleBar;" }], [11, "&iinfin;"], [0, "&infintie;"], [0, "&nvinfin;"], [4, "&eparsl;"], [0, "&smeparsl;"], [0, "&eqvparsl;"], [5, "&blacklozenge;"], [8, "&RuleDelayed;"], [1, "&dsol;"], [9, "&bigodot;"], [0, "&bigoplus;"], [0, "&bigotimes;"], [1, "&biguplus;"], [1, "&bigsqcup;"], [5, "&iiiint;"], [0, "&fpartint;"], [2, "&cirfnint;"], [0, "&awint;"], [0, "&rppolint;"], [0, "&scpolint;"], [0, "&npolint;"], [0, "&pointint;"], [0, "&quatint;"], [0, "&intlarhk;"], [10, "&pluscir;"], [0, "&plusacir;"], [0, "&simplus;"], [0, "&plusdu;"], [0, "&plussim;"], [0, "&plustwo;"], [1, "&mcomma;"], [0, "&minusdu;"], [2, "&loplus;"], [0, "&roplus;"], [0, "&Cross;"], [0, "&timesd;"], [0, "&timesbar;"], [1, "&smashp;"], [0, "&lotimes;"], [0, "&rotimes;"], [0, "&otimesas;"], [0, "&Otimes;"], [0, "&odiv;"], [0, "&triplus;"], [0, "&triminus;"], [0, "&tritime;"], [0, "&intprod;"], [2, "&amalg;"], [0, "&capdot;"], [1, "&ncup;"], [0, "&ncap;"], [0, "&capand;"], [0, "&cupor;"], [0, "&cupcap;"], [0, "&capcup;"], [0, "&cupbrcap;"], [0, "&capbrcup;"], [0, "&cupcup;"], [0, "&capcap;"], [0, "&ccups;"], [0, "&ccaps;"], [2, "&ccupssm;"], [2, "&And;"], [0, "&Or;"], [0, "&andand;"], [0, "&oror;"], [0, "&orslope;"], [0, "&andslope;"], [1, "&andv;"], [0, "&orv;"], [0, "&andd;"], [0, "&ord;"], [1, "&wedbar;"], [6, "&sdote;"], [3, "&simdot;"], [2, { v: "&congdot;", n: 824, o: "&ncongdot;" }], [0, "&easter;"], [0, "&apacir;"], [0, { v: "&apE;", n: 824, o: "&napE;" }], [0, "&eplus;"], [0, "&pluse;"], [0, "&Esim;"], [0, "&Colone;"], [0, "&Equal;"], [1, "&ddotseq;"], [0, "&equivDD;"], [0, "&ltcir;"], [0, "&gtcir;"], [0, "&ltquest;"], [0, "&gtquest;"], [0, { v: "&leqslant;", n: 824, o: "&nleqslant;" }], [0, { v: "&geqslant;", n: 824, o: "&ngeqslant;" }], [0, "&lesdot;"], [0, "&gesdot;"], [0, "&lesdoto;"], [0, "&gesdoto;"], [0, "&lesdotor;"], [0, "&gesdotol;"], [0, "&lap;"], [0, "&gap;"], [0, "&lne;"], [0, "&gne;"], [0, "&lnap;"], [0, "&gnap;"], [0, "&lEg;"], [0, "&gEl;"], [0, "&lsime;"], [0, "&gsime;"], [0, "&lsimg;"], [0, "&gsiml;"], [0, "&lgE;"], [0, "&glE;"], [0, "&lesges;"], [0, "&gesles;"], [0, "&els;"], [0, "&egs;"], [0, "&elsdot;"], [0, "&egsdot;"], [0, "&el;"], [0, "&eg;"], [2, "&siml;"], [0, "&simg;"], [0, "&simlE;"], [0, "&simgE;"], [0, { v: "&LessLess;", n: 824, o: "&NotNestedLessLess;" }], [0, { v: "&GreaterGreater;", n: 824, o: "&NotNestedGreaterGreater;" }], [1, "&glj;"], [0, "&gla;"], [0, "&ltcc;"], [0, "&gtcc;"], [0, "&lescc;"], [0, "&gescc;"], [0, "&smt;"], [0, "&lat;"], [0, { v: "&smte;", n: 65024, o: "&smtes;" }], [0, { v: "&late;", n: 65024, o: "&lates;" }], [0, "&bumpE;"], [0, { v: "&PrecedesEqual;", n: 824, o: "&NotPrecedesEqual;" }], [0, { v: "&sce;", n: 824, o: "&NotSucceedsEqual;" }], [2, "&prE;"], [0, "&scE;"], [0, "&precneqq;"], [0, "&scnE;"], [0, "&prap;"], [0, "&scap;"], [0, "&precnapprox;"], [0, "&scnap;"], [0, "&Pr;"], [0, "&Sc;"], [0, "&subdot;"], [0, "&supdot;"], [0, "&subplus;"], [0, "&supplus;"], [0, "&submult;"], [0, "&supmult;"], [0, "&subedot;"], [0, "&supedot;"], [0, { v: "&subE;", n: 824, o: "&nsubE;" }], [0, { v: "&supE;", n: 824, o: "&nsupE;" }], [0, "&subsim;"], [0, "&supsim;"], [2, { v: "&subnE;", n: 65024, o: "&varsubsetneqq;" }], [0, { v: "&supnE;", n: 65024, o: "&varsupsetneqq;" }], [2, "&csub;"], [0, "&csup;"], [0, "&csube;"], [0, "&csupe;"], [0, "&subsup;"], [0, "&supsub;"], [0, "&subsub;"], [0, "&supsup;"], [0, "&suphsub;"], [0, "&supdsub;"], [0, "&forkv;"], [0, "&topfork;"], [0, "&mlcp;"], [8, "&Dashv;"], [1, "&Vdashl;"], [0, "&Barv;"], [0, "&vBar;"], [0, "&vBarv;"], [1, "&Vbar;"], [0, "&Not;"], [0, "&bNot;"], [0, "&rnmid;"], [0, "&cirmid;"], [0, "&midcir;"], [0, "&topcir;"], [0, "&nhpar;"], [0, "&parsim;"], [9, { v: "&parsl;", n: 8421, o: "&nparsl;" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, "&Ascr;"], [1, "&Cscr;"], [0, "&Dscr;"], [2, "&Gscr;"], [2, "&Jscr;"], [0, "&Kscr;"], [2, "&Nscr;"], [0, "&Oscr;"], [0, "&Pscr;"], [0, "&Qscr;"], [1, "&Sscr;"], [0, "&Tscr;"], [0, "&Uscr;"], [0, "&Vscr;"], [0, "&Wscr;"], [0, "&Xscr;"], [0, "&Yscr;"], [0, "&Zscr;"], [0, "&ascr;"], [0, "&bscr;"], [0, "&cscr;"], [0, "&dscr;"], [1, "&fscr;"], [1, "&hscr;"], [0, "&iscr;"], [0, "&jscr;"], [0, "&kscr;"], [0, "&lscr;"], [0, "&mscr;"], [0, "&nscr;"], [1, "&pscr;"], [0, "&qscr;"], [0, "&rscr;"], [0, "&sscr;"], [0, "&tscr;"], [0, "&uscr;"], [0, "&vscr;"], [0, "&wscr;"], [0, "&xscr;"], [0, "&yscr;"], [0, "&zscr;"], [52, "&Afr;"], [0, "&Bfr;"], [1, "&Dfr;"], [0, "&Efr;"], [0, "&Ffr;"], [0, "&Gfr;"], [2, "&Jfr;"], [0, "&Kfr;"], [0, "&Lfr;"], [0, "&Mfr;"], [0, "&Nfr;"], [0, "&Ofr;"], [0, "&Pfr;"], [0, "&Qfr;"], [1, "&Sfr;"], [0, "&Tfr;"], [0, "&Ufr;"], [0, "&Vfr;"], [0, "&Wfr;"], [0, "&Xfr;"], [0, "&Yfr;"], [1, "&afr;"], [0, "&bfr;"], [0, "&cfr;"], [0, "&dfr;"], [0, "&efr;"], [0, "&ffr;"], [0, "&gfr;"], [0, "&hfr;"], [0, "&ifr;"], [0, "&jfr;"], [0, "&kfr;"], [0, "&lfr;"], [0, "&mfr;"], [0, "&nfr;"], [0, "&ofr;"], [0, "&pfr;"], [0, "&qfr;"], [0, "&rfr;"], [0, "&sfr;"], [0, "&tfr;"], [0, "&ufr;"], [0, "&vfr;"], [0, "&wfr;"], [0, "&xfr;"], [0, "&yfr;"], [0, "&zfr;"], [0, "&Aopf;"], [0, "&Bopf;"], [1, "&Dopf;"], [0, "&Eopf;"], [0, "&Fopf;"], [0, "&Gopf;"], [1, "&Iopf;"], [0, "&Jopf;"], [0, "&Kopf;"], [0, "&Lopf;"], [0, "&Mopf;"], [1, "&Oopf;"], [3, "&Sopf;"], [0, "&Topf;"], [0, "&Uopf;"], [0, "&Vopf;"], [0, "&Wopf;"], [0, "&Xopf;"], [0, "&Yopf;"], [1, "&aopf;"], [0, "&bopf;"], [0, "&copf;"], [0, "&dopf;"], [0, "&eopf;"], [0, "&fopf;"], [0, "&gopf;"], [0, "&hopf;"], [0, "&iopf;"], [0, "&jopf;"], [0, "&kopf;"], [0, "&lopf;"], [0, "&mopf;"], [0, "&nopf;"], [0, "&oopf;"], [0, "&popf;"], [0, "&qopf;"], [0, "&ropf;"], [0, "&sopf;"], [0, "&topf;"], [0, "&uopf;"], [0, "&vopf;"], [0, "&wopf;"], [0, "&xopf;"], [0, "&yopf;"], [0, "&zopf;"]])) }], [8906, "&fflig;"], [0, "&filig;"], [0, "&fllig;"], [0, "&ffilig;"], [0, "&ffllig;"]])));
94843
95384
  //# sourceMappingURL=encode-html.js.map
95385
+ ;// ./node_modules/entities/lib/esm/escape.js
95386
+ const esm_escape_xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
95387
+ const escape_xmlCodeMap = new Map([
95388
+ [34, "&quot;"],
95389
+ [38, "&amp;"],
95390
+ [39, "&apos;"],
95391
+ [60, "&lt;"],
95392
+ [62, "&gt;"],
95393
+ ]);
95394
+ // For compatibility with node < 4, we wrap `codePointAt`
95395
+ const esm_escape_getCodePoint =
95396
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
95397
+ String.prototype.codePointAt != null
95398
+ ? (str, index) => str.codePointAt(index)
95399
+ : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
95400
+ (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800
95401
+ ? (c.charCodeAt(index) - 0xd800) * 0x400 +
95402
+ c.charCodeAt(index + 1) -
95403
+ 0xdc00 +
95404
+ 0x10000
95405
+ : c.charCodeAt(index);
95406
+ /**
95407
+ * Encodes all non-ASCII characters, as well as characters not valid in XML
95408
+ * documents using XML entities.
95409
+ *
95410
+ * If a character has no equivalent entity, a
95411
+ * numeric hexadecimal reference (eg. `&#xfc;`) will be used.
95412
+ */
95413
+ function esm_escape_encodeXML(str) {
95414
+ let ret = "";
95415
+ let lastIdx = 0;
95416
+ let match;
95417
+ while ((match = esm_escape_xmlReplacer.exec(str)) !== null) {
95418
+ const i = match.index;
95419
+ const char = str.charCodeAt(i);
95420
+ const next = escape_xmlCodeMap.get(char);
95421
+ if (next !== undefined) {
95422
+ ret += str.substring(lastIdx, i) + next;
95423
+ lastIdx = i + 1;
95424
+ }
95425
+ else {
95426
+ ret += `${str.substring(lastIdx, i)}&#x${esm_escape_getCodePoint(str, i).toString(16)};`;
95427
+ // Increase by 1 if we have a surrogate pair
95428
+ lastIdx = esm_escape_xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);
95429
+ }
95430
+ }
95431
+ return ret + str.substr(lastIdx);
95432
+ }
95433
+ /**
95434
+ * Encodes all non-ASCII characters, as well as characters not valid in XML
95435
+ * documents using numeric hexadecimal reference (eg. `&#xfc;`).
95436
+ *
95437
+ * Have a look at `escapeUTF8` if you want a more concise output at the expense
95438
+ * of reduced transportability.
95439
+ *
95440
+ * @param data String to escape.
95441
+ */
95442
+ const esm_escape_escape = (/* unused pure expression or super */ null && (esm_escape_encodeXML));
95443
+ /**
95444
+ * Creates a function that escapes all characters matched by the given regular
95445
+ * expression using the given map of characters to escape to their entities.
95446
+ *
95447
+ * @param regex Regular expression to match characters to escape.
95448
+ * @param map Map of characters to escape to their entities.
95449
+ *
95450
+ * @returns Function that escapes all characters matched by the given regular
95451
+ * expression using the given map of characters to escape to their entities.
95452
+ */
95453
+ function escape_getEscaper(regex, map) {
95454
+ return function escape(data) {
95455
+ let match;
95456
+ let lastIdx = 0;
95457
+ let result = "";
95458
+ while ((match = regex.exec(data))) {
95459
+ if (lastIdx !== match.index) {
95460
+ result += data.substring(lastIdx, match.index);
95461
+ }
95462
+ // We know that this character will be in the map.
95463
+ result += map.get(match[0].charCodeAt(0));
95464
+ // Every match will be of length 1
95465
+ lastIdx = match.index + 1;
95466
+ }
95467
+ return result + data.substring(lastIdx);
95468
+ };
95469
+ }
95470
+ /**
95471
+ * Encodes all characters not valid in XML documents using XML entities.
95472
+ *
95473
+ * Note that the output will be character-set dependent.
95474
+ *
95475
+ * @param data String to escape.
95476
+ */
95477
+ const esm_escape_escapeUTF8 = escape_getEscaper(/[&<>'"]/g, escape_xmlCodeMap);
95478
+ /**
95479
+ * Encodes all characters that have to be escaped in HTML attributes,
95480
+ * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
95481
+ *
95482
+ * @param data String to escape.
95483
+ */
95484
+ const esm_escape_escapeAttribute = escape_getEscaper(/["&\u00A0]/g, new Map([
95485
+ [34, "&quot;"],
95486
+ [38, "&amp;"],
95487
+ [160, "&nbsp;"],
95488
+ ]));
95489
+ /**
95490
+ * Encodes all characters that have to be escaped in HTML text,
95491
+ * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
95492
+ *
95493
+ * @param data String to escape.
95494
+ */
95495
+ const esm_escape_escapeText = escape_getEscaper(/[&<>\u00A0]/g, new Map([
95496
+ [38, "&amp;"],
95497
+ [60, "&lt;"],
95498
+ [62, "&gt;"],
95499
+ [160, "&nbsp;"],
95500
+ ]));
95501
+ //# sourceMappingURL=escape.js.map
94844
95502
  ;// ./node_modules/entities/lib/esm/encode.js
94845
95503
 
94846
95504
 
@@ -95018,7 +95676,7 @@ const looseHtmlEntityConstruct = {
95018
95676
  };
95019
95677
  function resolveEntity(name) {
95020
95678
  const input = `&${name};`;
95021
- const decoded = decodeHTMLStrict(input);
95679
+ const decoded = decode_decodeHTMLStrict(input);
95022
95680
  return decoded !== input ? decoded : undefined;
95023
95681
  }
95024
95682
  function tokenizeLooseHtmlEntity(effects, ok, nok) {
@@ -96591,7 +97249,7 @@ const transformCallout = (jsx) => {
96591
97249
  };
96592
97250
  const transformEmbed = (jsx) => {
96593
97251
  const attrs = getAttrs(jsx);
96594
- const { favicon, height, html, iframe, image, providerName, providerUrl, title = '', typeOfEmbed, url = '', width, } = attrs;
97252
+ const { favicon, height, href, html, iframe, image, providerName, providerUrl, provider, title = '', typeOfEmbed, url = '', width, } = attrs;
96595
97253
  return {
96596
97254
  type: NodeTypes.embedBlock,
96597
97255
  title,
@@ -96603,11 +97261,13 @@ const transformEmbed = (jsx) => {
96603
97261
  url,
96604
97262
  ...(favicon && { favicon }),
96605
97263
  ...(height && { height }),
97264
+ ...(href && { href }),
96606
97265
  ...(html && { html }),
96607
97266
  ...(iframe !== undefined && { iframe }),
96608
97267
  ...(image && { image }),
96609
97268
  ...(providerName && { providerName }),
96610
97269
  ...(providerUrl && { providerUrl }),
97270
+ ...(provider && { provider }),
96611
97271
  ...(typeOfEmbed && { typeOfEmbed }),
96612
97272
  ...(width && { width }),
96613
97273
  },
@@ -96671,7 +97331,7 @@ const transformMagicBlockImage = (node) => {
96671
97331
  const transformMagicBlockEmbed = (node) => {
96672
97332
  const { data, position } = node;
96673
97333
  const hProps = data?.hProperties || {};
96674
- const { favicon, html, image, providerName, providerUrl, title = '', url = '' } = hProps;
97334
+ const { favicon, height, href, html, iframe, image, provider, providerName, providerUrl, title = '', typeOfEmbed, url = '', width, } = hProps;
96675
97335
  return {
96676
97336
  type: NodeTypes.embedBlock,
96677
97337
  title,
@@ -96682,20 +97342,81 @@ const transformMagicBlockEmbed = (node) => {
96682
97342
  title,
96683
97343
  url,
96684
97344
  ...(favicon && { favicon }),
97345
+ ...(height && { height }),
97346
+ ...(href && { href }),
96685
97347
  ...(html && { html }),
97348
+ ...(iframe !== undefined && { iframe }),
96686
97349
  ...(image && { image }),
97350
+ ...(typeOfEmbed && { typeOfEmbed }),
96687
97351
  ...(providerName && { providerName }),
96688
97352
  ...(providerUrl && { providerUrl }),
97353
+ ...(provider && { provider }),
97354
+ ...(width && { width }),
96689
97355
  },
96690
97356
  },
96691
97357
  position,
96692
97358
  };
96693
97359
  };
97360
+ const mdxish_jsx_to_mdast_isTableCell = (node) => isMDXElement(node) && ['th', 'td'].includes(node.name);
97361
+ /**
97362
+ * Converts a JSX <Table> element to an MDAST table node with alignment.
97363
+ * Returns null for header-less tables since MDAST always promotes the first row to <thead>.
97364
+ */
97365
+ const transformTable = (jsx) => {
97366
+ let hasThead = false;
97367
+ visit(jsx, isMDXElement, (child) => {
97368
+ if (child.name === 'thead')
97369
+ hasThead = true;
97370
+ });
97371
+ if (!hasThead)
97372
+ return null;
97373
+ const { align: alignAttr } = getAttrs(jsx);
97374
+ const align = Array.isArray(alignAttr) ? alignAttr : null;
97375
+ const rows = [];
97376
+ visit(jsx, isMDXElement, (child) => {
97377
+ if (child.name !== 'thead' && child.name !== 'tbody')
97378
+ return;
97379
+ visit(child, isMDXElement, (row) => {
97380
+ if (row.name !== 'tr')
97381
+ return;
97382
+ const cells = [];
97383
+ visit(row, mdxish_jsx_to_mdast_isTableCell, (cell) => {
97384
+ const parsedChildren = cell.children.flatMap(parsedNode => {
97385
+ if (parsedNode.type === 'paragraph' && 'children' in parsedNode && parsedNode.children) {
97386
+ return parsedNode.children;
97387
+ }
97388
+ return [parsedNode];
97389
+ });
97390
+ cells.push({
97391
+ type: 'tableCell',
97392
+ children: parsedChildren,
97393
+ position: cell.position,
97394
+ });
97395
+ });
97396
+ rows.push({
97397
+ type: 'tableRow',
97398
+ children: cells,
97399
+ position: row.position,
97400
+ });
97401
+ });
97402
+ });
97403
+ const columnCount = rows[0]?.children?.length || 0;
97404
+ const alignArray = align && columnCount > 0
97405
+ ? align.slice(0, columnCount).concat(Array.from({ length: Math.max(0, columnCount - align.length) }, () => null))
97406
+ : Array.from({ length: columnCount }, () => null);
97407
+ return {
97408
+ type: 'table',
97409
+ align: alignArray,
97410
+ position: jsx.position,
97411
+ children: rows,
97412
+ };
97413
+ };
96694
97414
  const COMPONENT_MAP = {
96695
97415
  Callout: transformCallout,
96696
97416
  Embed: transformEmbed,
96697
97417
  Image: transformImage,
96698
97418
  Recipe: transformRecipe,
97419
+ Table: transformTable,
96699
97420
  };
96700
97421
  /**
96701
97422
  * Transform mdxJsxFlowElement nodes and magic block nodes into proper MDAST node types.
@@ -96718,6 +97439,8 @@ const mdxishJsxToMdast = () => tree => {
96718
97439
  if (!transformer)
96719
97440
  return;
96720
97441
  const newNode = transformer(node);
97442
+ if (!newNode)
97443
+ return;
96721
97444
  // Replace the JSX node with the MDAST node
96722
97445
  parent.children[index] = newNode;
96723
97446
  });
@@ -96854,6 +97577,74 @@ const mdxishMermaidTransformer = () => (tree) => {
96854
97577
  };
96855
97578
  /* harmony default export */ const mdxish_mermaid = (mdxishMermaidTransformer);
96856
97579
 
97580
+ ;// ./processor/transform/mdxish/mdxish-self-closing-blocks.ts
97581
+
97582
+
97583
+ /**
97584
+ * Tags to process as self-closing blocks.
97585
+ * These components use simple string attributes (no JSX expressions like `data={[...]}`).
97586
+ * Components with JSX expression attributes should NOT be added here as parseAttributes
97587
+ * cannot handle them correctly.
97588
+ */
97589
+ const SELF_CLOSING_BLOCK_TAGS = new Set(['Embed', 'Recipe']);
97590
+ // Regex to match self-closing PascalCase tags (handles multi-line)
97591
+ const selfClosingTagPattern = /^<([A-Z][A-Za-z0-9_]*)([\s\S]*?)\/>$/;
97592
+ /**
97593
+ * Try to convert a paragraph node containing a self-closing JSX component into an mdxJsxFlowElement.
97594
+ * Returns the new node if conversion succeeded, or null if the node doesn't match.
97595
+ */
97596
+ const tryConvertToMdxNode = (node) => {
97597
+ if (node.children.length !== 1)
97598
+ return null;
97599
+ const child = node.children[0];
97600
+ if (child.type !== 'html')
97601
+ return null;
97602
+ const value = child.value?.trim();
97603
+ if (!value)
97604
+ return null;
97605
+ const match = value.match(selfClosingTagPattern);
97606
+ if (!match)
97607
+ return null;
97608
+ const [, tag, attrString] = match;
97609
+ if (!SELF_CLOSING_BLOCK_TAGS.has(tag))
97610
+ return null;
97611
+ return {
97612
+ type: 'mdxJsxFlowElement',
97613
+ name: tag,
97614
+ attributes: parseAttributes(attrString),
97615
+ children: [],
97616
+ position: node.position,
97617
+ };
97618
+ };
97619
+ /**
97620
+ * Transform paragraph-wrapped self-closing JSX components into mdxJsxFlowElement nodes.
97621
+ *
97622
+ * CommonMark wraps multi-line JSX in paragraphs when the opening tag isn't complete
97623
+ * on one line. This plugin detects these structures and unwraps them for components
97624
+ * in the SELF_CLOSING_BLOCK_TAGS allowlist.
97625
+ *
97626
+ * Input structure:
97627
+ * ```
97628
+ * paragraph > html: "<Embed\n typeOfEmbed=\"youtube\"\n/>"
97629
+ * ```
97630
+ *
97631
+ * Output structure:
97632
+ * ```
97633
+ * mdxJsxFlowElement: { name: "Embed", attributes: [...], children: [] }
97634
+ * ```
97635
+ */
97636
+ const mdxishSelfClosingBlocks = () => tree => {
97637
+ visit(tree, 'paragraph', (node, index, parent) => {
97638
+ if (index === undefined || !parent)
97639
+ return;
97640
+ const mdxNode = tryConvertToMdxNode(node);
97641
+ if (mdxNode) {
97642
+ parent.children.splice(index, 1, mdxNode);
97643
+ }
97644
+ });
97645
+ };
97646
+ /* harmony default export */ const mdxish_self_closing_blocks = (mdxishSelfClosingBlocks);
97647
+
96857
97648
  ;// ./processor/transform/mdxish/mdxish-snake-case-components.ts
96858
97649
 
96859
97650
 
@@ -96930,6 +97721,126 @@ function restoreSnakeCase(placeholderName, mapping) {
96930
97721
  return matchingKey ? mapping[matchingKey] : placeholderName;
96931
97722
  }
96932
97723
 
97724
+ ;// ./processor/transform/mdxish/mdxish-tables-to-jsx.ts
97725
+
97726
+
97727
+ const mdxish_tables_to_jsx_alignToStyle = (align) => {
97728
+ if (!align || align === 'left')
97729
+ return null;
97730
+ return {
97731
+ type: 'mdxJsxAttribute',
97732
+ name: 'style',
97733
+ value: {
97734
+ type: 'mdxJsxAttributeValueExpression',
97735
+ value: `{ textAlign: "${align}" }`,
97736
+ },
97737
+ };
97738
+ };
97739
+ const mdxish_tables_to_jsx_isTableCell = (node) => ['tableHead', 'tableCell'].includes(node.type);
97740
+ const mdxish_tables_to_jsx_isLiteral = (node) => 'value' in node;
97741
+ /**
97742
+ * Mdxish-specific version of `tablesToJsx`. Differs from the shared MDX version:
97743
+ *
97744
+ * - Excludes `html` nodes from triggering JSX conversion because raw HTML
97745
+ * inside JSX `<Table>` breaks remarkMdx parsing on the deserialization roundtrip.
97746
+ * - Skips empty cells instead of aborting the entire visit so that flow content
97747
+ * in later cells is still detected.
97748
+ */
97749
+ const mdxishTablesToJsx = () => tree => {
97750
+ visit(tree, (node) => ['table', 'tableau'].includes(node.type), (table, index, parent) => {
97751
+ let hasFlowContent = false;
97752
+ visit(table, mdxish_tables_to_jsx_isTableCell, (cell) => {
97753
+ if (cell.children.length === 0)
97754
+ return;
97755
+ const content = cell.children.length === 1 && cell.children[0].type === 'paragraph'
97756
+ ? cell.children[0].children[0]
97757
+ : cell.children[0];
97758
+ if (!content)
97759
+ return;
97760
+ visit(cell, 'break', (_, breakIndex, breakParent) => {
97761
+ breakParent.children.splice(breakIndex, 1, { type: 'text', value: '\n' });
97762
+ });
97763
+ if (!(phrasing(content) || content.type === 'plain') && content.type !== 'escape') {
97764
+ if (content.type === 'html')
97765
+ return;
97766
+ hasFlowContent = true;
97767
+ return EXIT;
97768
+ }
97769
+ visit(cell, mdxish_tables_to_jsx_isLiteral, (node) => {
97770
+ if (node.value.match(/\n/)) {
97771
+ hasFlowContent = true;
97772
+ return EXIT;
97773
+ }
97774
+ });
97775
+ });
97776
+ if (!hasFlowContent) {
97777
+ table.type = 'table';
97778
+ return;
97779
+ }
97780
+ const styles = table.align.map(mdxish_tables_to_jsx_alignToStyle);
97781
+ const head = {
97782
+ attributes: [],
97783
+ type: 'mdxJsxFlowElement',
97784
+ name: 'thead',
97785
+ children: [
97786
+ {
97787
+ attributes: [],
97788
+ type: 'mdxJsxFlowElement',
97789
+ name: 'tr',
97790
+ children: table.children[0].children.map((cell, cellIndex) => {
97791
+ return {
97792
+ attributes: [],
97793
+ type: 'mdxJsxFlowElement',
97794
+ name: 'th',
97795
+ children: cell.children,
97796
+ ...(styles[cellIndex] && { attributes: [styles[cellIndex]] }),
97797
+ };
97798
+ }),
97799
+ },
97800
+ ],
97801
+ };
97802
+ const body = {
97803
+ attributes: [],
97804
+ type: 'mdxJsxFlowElement',
97805
+ name: 'tbody',
97806
+ children: table.children.splice(1).map(row => {
97807
+ return {
97808
+ attributes: [],
97809
+ type: 'mdxJsxFlowElement',
97810
+ name: 'tr',
97811
+ children: row.children.map((cell, cellIndex) => {
97812
+ return {
97813
+ type: 'mdxJsxFlowElement',
97814
+ name: 'td',
97815
+ children: cell.children,
97816
+ ...(styles[cellIndex] && { attributes: [styles[cellIndex]] }),
97817
+ };
97818
+ }),
97819
+ };
97820
+ }),
97821
+ };
97822
+ const attributes = [
97823
+ {
97824
+ type: 'mdxJsxAttribute',
97825
+ name: 'align',
97826
+ value: {
97827
+ type: 'mdxJsxAttributeValueExpression',
97828
+ value: JSON.stringify(table.align),
97829
+ },
97830
+ },
97831
+ ];
97832
+ const jsx = {
97833
+ type: 'mdxJsxFlowElement',
97834
+ name: 'Table',
97835
+ attributes: table.align.find(a => a) ? attributes : [],
97836
+ children: [head, body],
97837
+ };
97838
+ parent.children[index] = jsx;
97839
+ });
97840
+ return tree;
97841
+ };
97842
+ /* harmony default export */ const mdxish_tables_to_jsx = (mdxishTablesToJsx);
97843
+
96933
97844
  ;// ./processor/transform/mdxish/normalize-table-separator.ts
96934
97845
  /**
96935
97846
  * Preprocessor to normalize malformed GFM table separator syntax.
@@ -99096,6 +100007,9 @@ function loadComponents() {
99096
100007
 
99097
100008
 
99098
100009
 
100010
+
100011
+
100012
+
99099
100013
 
99100
100014
 
99101
100015
 
@@ -99173,6 +100087,7 @@ function mdxishAstProcessor(mdContent, opts = {}) {
99173
100087
  .use(magic_block_transformer)
99174
100088
  .use(transform_images, { isMdxish: true })
99175
100089
  .use(defaultTransformers)
100090
+ .use(mdxish_self_closing_blocks)
99176
100091
  .use(mdxish_component_blocks)
99177
100092
  .use(restore_snake_case_component_name, { mapping: snakeCaseMapping })
99178
100093
  .use(mdxish_tables)
@@ -99193,18 +100108,28 @@ function mdxishAstProcessor(mdContent, opts = {}) {
99193
100108
  };
99194
100109
  }
99195
100110
  /**
99196
- * Converts an Mdast to a Markdown string.
100111
+ * Registers the mdx-jsx serialization extension so remark-stringify
100112
+ * can convert JSX nodes (e.g. `<Table>`) to markdown.
100113
+ */
100114
+ function mdxJsxStringify() {
100115
+ const data = this.data();
100116
+ const extensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);
100117
+ extensions.push({ extensions: [mdxJsxToMarkdown()] });
100118
+ }
100119
+ /**
100120
+ * Serializes an Mdast back into a markdown string.
99197
100121
  */
99198
100122
  function mdxishMdastToMd(mdast) {
99199
- const md = unified()
100123
+ const processor = unified()
99200
100124
  .use(remarkGfm)
100125
+ .use(mdxish_tables_to_jsx)
99201
100126
  .use(mdxishCompilers)
100127
+ .use(mdxJsxStringify)
99202
100128
  .use(remarkStringify, {
99203
100129
  bullet: '-',
99204
100130
  emphasis: '_',
99205
- })
99206
- .stringify(mdast);
99207
- return md;
100131
+ });
100132
+ return processor.stringify(processor.runSync(mdast));
99208
100133
  }
99209
100134
  /**
99210
100135
  * Processes markdown content with MDX syntax support and returns a HAST.
@@ -99878,6 +100803,7 @@ const utils = {
99878
100803
 
99879
100804
 
99880
100805
 
100806
+
99881
100807
  })();
99882
100808
 
99883
100809
  /******/ return __webpack_exports__;