@vue/compiler-vapor 3.6.0-alpha.7 → 3.6.0-beta.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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compiler-vapor v3.6.0-alpha.7
2
+ * @vue/compiler-vapor v3.6.0-beta.2
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -21,7 +21,7 @@ const remove = (arr, el) => {
21
21
  arr.splice(i, 1);
22
22
  }
23
23
  };
24
- const isArray = Array.isArray;
24
+ const isArray$1 = Array.isArray;
25
25
  const isString = (val) => typeof val === "string";
26
26
  const isBuiltInDirective = /* @__PURE__ */ makeMap(
27
27
  "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
@@ -66,10 +66,12 @@ const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,asi
66
66
  const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
67
67
  const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics";
68
68
  const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
69
+ const FORMATTING_TAGS = "a,b,big,code,em,font,i,nobr,s,small,strike,strong,tt,u";
69
70
  const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
70
71
  const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
71
72
  const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);
72
73
  const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
74
+ const isFormattingTag = /* @__PURE__ */ makeMap(FORMATTING_TAGS);
73
75
 
74
76
  function shouldSetAsAttr(tagName, key) {
75
77
  if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") {
@@ -133,10 +135,10 @@ function escapeHtml(string) {
133
135
  return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
134
136
  }
135
137
 
136
- const TELEPORT = Symbol(`Teleport` );
137
- const SUSPENSE = Symbol(`Suspense` );
138
- const KEEP_ALIVE = Symbol(`KeepAlive` );
139
- const BASE_TRANSITION = Symbol(
138
+ const TELEPORT = /* @__PURE__ */ Symbol(`Teleport` );
139
+ const SUSPENSE = /* @__PURE__ */ Symbol(`Suspense` );
140
+ const KEEP_ALIVE = /* @__PURE__ */ Symbol(`KeepAlive` );
141
+ const BASE_TRANSITION = /* @__PURE__ */ Symbol(
140
142
  `BaseTransition`
141
143
  );
142
144
  function registerRuntimeHelpers(helpers) {
@@ -175,81 +177,2098 @@ function createSimpleExpression(content, isStatic = false, loc = locStub, constT
175
177
  };
176
178
  }
177
179
 
178
- // Generated using scripts/write-decode-map.ts
179
- var htmlDecodeTree = new Uint16Array(
180
- // prettier-ignore
181
- "\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"
182
- .split("")
183
- .map((c) => c.charCodeAt(0)));
180
+ // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
181
+ var _a;
182
+ const decodeMap = new Map([
183
+ [0, 65533],
184
+ // C1 Unicode control character reference replacements
185
+ [128, 8364],
186
+ [130, 8218],
187
+ [131, 402],
188
+ [132, 8222],
189
+ [133, 8230],
190
+ [134, 8224],
191
+ [135, 8225],
192
+ [136, 710],
193
+ [137, 8240],
194
+ [138, 352],
195
+ [139, 8249],
196
+ [140, 338],
197
+ [142, 381],
198
+ [145, 8216],
199
+ [146, 8217],
200
+ [147, 8220],
201
+ [148, 8221],
202
+ [149, 8226],
203
+ [150, 8211],
204
+ [151, 8212],
205
+ [152, 732],
206
+ [153, 8482],
207
+ [154, 353],
208
+ [155, 8250],
209
+ [156, 339],
210
+ [158, 382],
211
+ [159, 376],
212
+ ]);
213
+ /**
214
+ * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
215
+ */
216
+ const fromCodePoint =
217
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
218
+ (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
219
+ let output = "";
220
+ if (codePoint > 65535) {
221
+ codePoint -= 65536;
222
+ output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
223
+ codePoint = 56320 | (codePoint & 1023);
224
+ }
225
+ output += String.fromCharCode(codePoint);
226
+ return output;
227
+ });
228
+ /**
229
+ * Replace the given code point with a replacement character if it is a
230
+ * surrogate or is outside the valid range. Otherwise return the code
231
+ * point unchanged.
232
+ */
233
+ function replaceCodePoint(codePoint) {
234
+ var _a;
235
+ if ((codePoint >= 55296 && codePoint <= 57343) ||
236
+ codePoint > 1114111) {
237
+ return 65533;
238
+ }
239
+ return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
240
+ }
241
+
242
+ var global$1 = (typeof global !== "undefined" ? global :
243
+ typeof self !== "undefined" ? self :
244
+ typeof window !== "undefined" ? window : {});
245
+
246
+ var lookup = [];
247
+ var revLookup = [];
248
+ var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
249
+ var inited = false;
250
+ function init () {
251
+ inited = true;
252
+ var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
253
+ for (var i = 0, len = code.length; i < len; ++i) {
254
+ lookup[i] = code[i];
255
+ revLookup[code.charCodeAt(i)] = i;
256
+ }
257
+
258
+ revLookup['-'.charCodeAt(0)] = 62;
259
+ revLookup['_'.charCodeAt(0)] = 63;
260
+ }
261
+
262
+ function toByteArray (b64) {
263
+ if (!inited) {
264
+ init();
265
+ }
266
+ var i, j, l, tmp, placeHolders, arr;
267
+ var len = b64.length;
268
+
269
+ if (len % 4 > 0) {
270
+ throw new Error('Invalid string. Length must be a multiple of 4')
271
+ }
272
+
273
+ // the number of equal signs (place holders)
274
+ // if there are two placeholders, than the two characters before it
275
+ // represent one byte
276
+ // if there is only one, then the three characters before it represent 2 bytes
277
+ // this is just a cheap hack to not do indexOf twice
278
+ placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;
279
+
280
+ // base64 is 4/3 + up to two characters of the original data
281
+ arr = new Arr(len * 3 / 4 - placeHolders);
282
+
283
+ // if there are placeholders, only get up to the last complete 4 chars
284
+ l = placeHolders > 0 ? len - 4 : len;
285
+
286
+ var L = 0;
287
+
288
+ for (i = 0, j = 0; i < l; i += 4, j += 3) {
289
+ tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];
290
+ arr[L++] = (tmp >> 16) & 0xFF;
291
+ arr[L++] = (tmp >> 8) & 0xFF;
292
+ arr[L++] = tmp & 0xFF;
293
+ }
294
+
295
+ if (placeHolders === 2) {
296
+ tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);
297
+ arr[L++] = tmp & 0xFF;
298
+ } else if (placeHolders === 1) {
299
+ tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);
300
+ arr[L++] = (tmp >> 8) & 0xFF;
301
+ arr[L++] = tmp & 0xFF;
302
+ }
303
+
304
+ return arr
305
+ }
306
+
307
+ function tripletToBase64 (num) {
308
+ return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
309
+ }
310
+
311
+ function encodeChunk (uint8, start, end) {
312
+ var tmp;
313
+ var output = [];
314
+ for (var i = start; i < end; i += 3) {
315
+ tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);
316
+ output.push(tripletToBase64(tmp));
317
+ }
318
+ return output.join('')
319
+ }
320
+
321
+ function fromByteArray (uint8) {
322
+ if (!inited) {
323
+ init();
324
+ }
325
+ var tmp;
326
+ var len = uint8.length;
327
+ var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
328
+ var output = '';
329
+ var parts = [];
330
+ var maxChunkLength = 16383; // must be multiple of 3
331
+
332
+ // go through the array every three bytes, we'll deal with trailing stuff later
333
+ for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
334
+ parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));
335
+ }
336
+
337
+ // pad the end with zeros, but make sure to not forget the extra bytes
338
+ if (extraBytes === 1) {
339
+ tmp = uint8[len - 1];
340
+ output += lookup[tmp >> 2];
341
+ output += lookup[(tmp << 4) & 0x3F];
342
+ output += '==';
343
+ } else if (extraBytes === 2) {
344
+ tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);
345
+ output += lookup[tmp >> 10];
346
+ output += lookup[(tmp >> 4) & 0x3F];
347
+ output += lookup[(tmp << 2) & 0x3F];
348
+ output += '=';
349
+ }
350
+
351
+ parts.push(output);
352
+
353
+ return parts.join('')
354
+ }
355
+
356
+ function read (buffer, offset, isLE, mLen, nBytes) {
357
+ var e, m;
358
+ var eLen = nBytes * 8 - mLen - 1;
359
+ var eMax = (1 << eLen) - 1;
360
+ var eBias = eMax >> 1;
361
+ var nBits = -7;
362
+ var i = isLE ? (nBytes - 1) : 0;
363
+ var d = isLE ? -1 : 1;
364
+ var s = buffer[offset + i];
365
+
366
+ i += d;
367
+
368
+ e = s & ((1 << (-nBits)) - 1);
369
+ s >>= (-nBits);
370
+ nBits += eLen;
371
+ for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
372
+
373
+ m = e & ((1 << (-nBits)) - 1);
374
+ e >>= (-nBits);
375
+ nBits += mLen;
376
+ for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
377
+
378
+ if (e === 0) {
379
+ e = 1 - eBias;
380
+ } else if (e === eMax) {
381
+ return m ? NaN : ((s ? -1 : 1) * Infinity)
382
+ } else {
383
+ m = m + Math.pow(2, mLen);
384
+ e = e - eBias;
385
+ }
386
+ return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
387
+ }
388
+
389
+ function write (buffer, value, offset, isLE, mLen, nBytes) {
390
+ var e, m, c;
391
+ var eLen = nBytes * 8 - mLen - 1;
392
+ var eMax = (1 << eLen) - 1;
393
+ var eBias = eMax >> 1;
394
+ var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);
395
+ var i = isLE ? 0 : (nBytes - 1);
396
+ var d = isLE ? 1 : -1;
397
+ var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
398
+
399
+ value = Math.abs(value);
400
+
401
+ if (isNaN(value) || value === Infinity) {
402
+ m = isNaN(value) ? 1 : 0;
403
+ e = eMax;
404
+ } else {
405
+ e = Math.floor(Math.log(value) / Math.LN2);
406
+ if (value * (c = Math.pow(2, -e)) < 1) {
407
+ e--;
408
+ c *= 2;
409
+ }
410
+ if (e + eBias >= 1) {
411
+ value += rt / c;
412
+ } else {
413
+ value += rt * Math.pow(2, 1 - eBias);
414
+ }
415
+ if (value * c >= 2) {
416
+ e++;
417
+ c /= 2;
418
+ }
419
+
420
+ if (e + eBias >= eMax) {
421
+ m = 0;
422
+ e = eMax;
423
+ } else if (e + eBias >= 1) {
424
+ m = (value * c - 1) * Math.pow(2, mLen);
425
+ e = e + eBias;
426
+ } else {
427
+ m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
428
+ e = 0;
429
+ }
430
+ }
431
+
432
+ for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
433
+
434
+ e = (e << mLen) | m;
435
+ eLen += mLen;
436
+ for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
437
+
438
+ buffer[offset + i - d] |= s * 128;
439
+ }
440
+
441
+ var toString = {}.toString;
442
+
443
+ var isArray = Array.isArray || function (arr) {
444
+ return toString.call(arr) == '[object Array]';
445
+ };
446
+
447
+ /*!
448
+ * The buffer module from node.js, for the browser.
449
+ *
450
+ * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
451
+ * @license MIT
452
+ */
453
+ /* eslint-disable no-proto */
454
+
455
+
456
+ var INSPECT_MAX_BYTES = 50;
457
+
458
+ /**
459
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
460
+ * === true Use Uint8Array implementation (fastest)
461
+ * === false Use Object implementation (most compatible, even IE6)
462
+ *
463
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
464
+ * Opera 11.6+, iOS 4.2+.
465
+ *
466
+ * Due to various browser bugs, sometimes the Object implementation will be used even
467
+ * when the browser supports typed arrays.
468
+ *
469
+ * Note:
470
+ *
471
+ * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
472
+ * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
473
+ *
474
+ * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
475
+ *
476
+ * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
477
+ * incorrect length in some situations.
478
+
479
+ * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
480
+ * get the Object implementation, which is slower but behaves correctly.
481
+ */
482
+ Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined
483
+ ? global$1.TYPED_ARRAY_SUPPORT
484
+ : true;
485
+
486
+ /*
487
+ * Export kMaxLength after typed array support is determined.
488
+ */
489
+ kMaxLength();
490
+
491
+ function kMaxLength () {
492
+ return Buffer.TYPED_ARRAY_SUPPORT
493
+ ? 0x7fffffff
494
+ : 0x3fffffff
495
+ }
496
+
497
+ function createBuffer (that, length) {
498
+ if (kMaxLength() < length) {
499
+ throw new RangeError('Invalid typed array length')
500
+ }
501
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
502
+ // Return an augmented `Uint8Array` instance, for best performance
503
+ that = new Uint8Array(length);
504
+ that.__proto__ = Buffer.prototype;
505
+ } else {
506
+ // Fallback: Return an object instance of the Buffer class
507
+ if (that === null) {
508
+ that = new Buffer(length);
509
+ }
510
+ that.length = length;
511
+ }
512
+
513
+ return that
514
+ }
515
+
516
+ /**
517
+ * The Buffer constructor returns instances of `Uint8Array` that have their
518
+ * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
519
+ * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
520
+ * and the `Uint8Array` methods. Square bracket notation works as expected -- it
521
+ * returns a single octet.
522
+ *
523
+ * The `Uint8Array` prototype remains unmodified.
524
+ */
525
+
526
+ function Buffer (arg, encodingOrOffset, length) {
527
+ if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
528
+ return new Buffer(arg, encodingOrOffset, length)
529
+ }
530
+
531
+ // Common case.
532
+ if (typeof arg === 'number') {
533
+ if (typeof encodingOrOffset === 'string') {
534
+ throw new Error(
535
+ 'If encoding is specified then the first argument must be a string'
536
+ )
537
+ }
538
+ return allocUnsafe(this, arg)
539
+ }
540
+ return from(this, arg, encodingOrOffset, length)
541
+ }
542
+
543
+ Buffer.poolSize = 8192; // not used by this implementation
544
+
545
+ // TODO: Legacy, not needed anymore. Remove in next major version.
546
+ Buffer._augment = function (arr) {
547
+ arr.__proto__ = Buffer.prototype;
548
+ return arr
549
+ };
550
+
551
+ function from (that, value, encodingOrOffset, length) {
552
+ if (typeof value === 'number') {
553
+ throw new TypeError('"value" argument must not be a number')
554
+ }
555
+
556
+ if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
557
+ return fromArrayBuffer(that, value, encodingOrOffset, length)
558
+ }
559
+
560
+ if (typeof value === 'string') {
561
+ return fromString(that, value, encodingOrOffset)
562
+ }
563
+
564
+ return fromObject(that, value)
565
+ }
566
+
567
+ /**
568
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
569
+ * if value is a number.
570
+ * Buffer.from(str[, encoding])
571
+ * Buffer.from(array)
572
+ * Buffer.from(buffer)
573
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
574
+ **/
575
+ Buffer.from = function (value, encodingOrOffset, length) {
576
+ return from(null, value, encodingOrOffset, length)
577
+ };
578
+
579
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
580
+ Buffer.prototype.__proto__ = Uint8Array.prototype;
581
+ Buffer.__proto__ = Uint8Array;
582
+ if (typeof Symbol !== 'undefined' && Symbol.species &&
583
+ Buffer[Symbol.species] === Buffer) ;
584
+ }
585
+
586
+ function assertSize (size) {
587
+ if (typeof size !== 'number') {
588
+ throw new TypeError('"size" argument must be a number')
589
+ } else if (size < 0) {
590
+ throw new RangeError('"size" argument must not be negative')
591
+ }
592
+ }
593
+
594
+ function alloc (that, size, fill, encoding) {
595
+ assertSize(size);
596
+ if (size <= 0) {
597
+ return createBuffer(that, size)
598
+ }
599
+ if (fill !== undefined) {
600
+ // Only pay attention to encoding if it's a string. This
601
+ // prevents accidentally sending in a number that would
602
+ // be interpretted as a start offset.
603
+ return typeof encoding === 'string'
604
+ ? createBuffer(that, size).fill(fill, encoding)
605
+ : createBuffer(that, size).fill(fill)
606
+ }
607
+ return createBuffer(that, size)
608
+ }
609
+
610
+ /**
611
+ * Creates a new filled Buffer instance.
612
+ * alloc(size[, fill[, encoding]])
613
+ **/
614
+ Buffer.alloc = function (size, fill, encoding) {
615
+ return alloc(null, size, fill, encoding)
616
+ };
617
+
618
+ function allocUnsafe (that, size) {
619
+ assertSize(size);
620
+ that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);
621
+ if (!Buffer.TYPED_ARRAY_SUPPORT) {
622
+ for (var i = 0; i < size; ++i) {
623
+ that[i] = 0;
624
+ }
625
+ }
626
+ return that
627
+ }
628
+
629
+ /**
630
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
631
+ * */
632
+ Buffer.allocUnsafe = function (size) {
633
+ return allocUnsafe(null, size)
634
+ };
635
+ /**
636
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
637
+ */
638
+ Buffer.allocUnsafeSlow = function (size) {
639
+ return allocUnsafe(null, size)
640
+ };
641
+
642
+ function fromString (that, string, encoding) {
643
+ if (typeof encoding !== 'string' || encoding === '') {
644
+ encoding = 'utf8';
645
+ }
646
+
647
+ if (!Buffer.isEncoding(encoding)) {
648
+ throw new TypeError('"encoding" must be a valid string encoding')
649
+ }
650
+
651
+ var length = byteLength(string, encoding) | 0;
652
+ that = createBuffer(that, length);
653
+
654
+ var actual = that.write(string, encoding);
655
+
656
+ if (actual !== length) {
657
+ // Writing a hex string, for example, that contains invalid characters will
658
+ // cause everything after the first invalid character to be ignored. (e.g.
659
+ // 'abxxcd' will be treated as 'ab')
660
+ that = that.slice(0, actual);
661
+ }
662
+
663
+ return that
664
+ }
665
+
666
+ function fromArrayLike (that, array) {
667
+ var length = array.length < 0 ? 0 : checked(array.length) | 0;
668
+ that = createBuffer(that, length);
669
+ for (var i = 0; i < length; i += 1) {
670
+ that[i] = array[i] & 255;
671
+ }
672
+ return that
673
+ }
674
+
675
+ function fromArrayBuffer (that, array, byteOffset, length) {
676
+ array.byteLength; // this throws if `array` is not a valid ArrayBuffer
677
+
678
+ if (byteOffset < 0 || array.byteLength < byteOffset) {
679
+ throw new RangeError('\'offset\' is out of bounds')
680
+ }
681
+
682
+ if (array.byteLength < byteOffset + (length || 0)) {
683
+ throw new RangeError('\'length\' is out of bounds')
684
+ }
685
+
686
+ if (byteOffset === undefined && length === undefined) {
687
+ array = new Uint8Array(array);
688
+ } else if (length === undefined) {
689
+ array = new Uint8Array(array, byteOffset);
690
+ } else {
691
+ array = new Uint8Array(array, byteOffset, length);
692
+ }
693
+
694
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
695
+ // Return an augmented `Uint8Array` instance, for best performance
696
+ that = array;
697
+ that.__proto__ = Buffer.prototype;
698
+ } else {
699
+ // Fallback: Return an object instance of the Buffer class
700
+ that = fromArrayLike(that, array);
701
+ }
702
+ return that
703
+ }
704
+
705
+ function fromObject (that, obj) {
706
+ if (internalIsBuffer(obj)) {
707
+ var len = checked(obj.length) | 0;
708
+ that = createBuffer(that, len);
709
+
710
+ if (that.length === 0) {
711
+ return that
712
+ }
713
+
714
+ obj.copy(that, 0, 0, len);
715
+ return that
716
+ }
717
+
718
+ if (obj) {
719
+ if ((typeof ArrayBuffer !== 'undefined' &&
720
+ obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
721
+ if (typeof obj.length !== 'number' || isnan(obj.length)) {
722
+ return createBuffer(that, 0)
723
+ }
724
+ return fromArrayLike(that, obj)
725
+ }
726
+
727
+ if (obj.type === 'Buffer' && isArray(obj.data)) {
728
+ return fromArrayLike(that, obj.data)
729
+ }
730
+ }
731
+
732
+ throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
733
+ }
734
+
735
+ function checked (length) {
736
+ // Note: cannot use `length < kMaxLength()` here because that fails when
737
+ // length is NaN (which is otherwise coerced to zero.)
738
+ if (length >= kMaxLength()) {
739
+ throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
740
+ 'size: 0x' + kMaxLength().toString(16) + ' bytes')
741
+ }
742
+ return length | 0
743
+ }
744
+ Buffer.isBuffer = isBuffer;
745
+ function internalIsBuffer (b) {
746
+ return !!(b != null && b._isBuffer)
747
+ }
748
+
749
+ Buffer.compare = function compare (a, b) {
750
+ if (!internalIsBuffer(a) || !internalIsBuffer(b)) {
751
+ throw new TypeError('Arguments must be Buffers')
752
+ }
753
+
754
+ if (a === b) return 0
755
+
756
+ var x = a.length;
757
+ var y = b.length;
758
+
759
+ for (var i = 0, len = Math.min(x, y); i < len; ++i) {
760
+ if (a[i] !== b[i]) {
761
+ x = a[i];
762
+ y = b[i];
763
+ break
764
+ }
765
+ }
766
+
767
+ if (x < y) return -1
768
+ if (y < x) return 1
769
+ return 0
770
+ };
771
+
772
+ Buffer.isEncoding = function isEncoding (encoding) {
773
+ switch (String(encoding).toLowerCase()) {
774
+ case 'hex':
775
+ case 'utf8':
776
+ case 'utf-8':
777
+ case 'ascii':
778
+ case 'latin1':
779
+ case 'binary':
780
+ case 'base64':
781
+ case 'ucs2':
782
+ case 'ucs-2':
783
+ case 'utf16le':
784
+ case 'utf-16le':
785
+ return true
786
+ default:
787
+ return false
788
+ }
789
+ };
790
+
791
+ Buffer.concat = function concat (list, length) {
792
+ if (!isArray(list)) {
793
+ throw new TypeError('"list" argument must be an Array of Buffers')
794
+ }
795
+
796
+ if (list.length === 0) {
797
+ return Buffer.alloc(0)
798
+ }
799
+
800
+ var i;
801
+ if (length === undefined) {
802
+ length = 0;
803
+ for (i = 0; i < list.length; ++i) {
804
+ length += list[i].length;
805
+ }
806
+ }
807
+
808
+ var buffer = Buffer.allocUnsafe(length);
809
+ var pos = 0;
810
+ for (i = 0; i < list.length; ++i) {
811
+ var buf = list[i];
812
+ if (!internalIsBuffer(buf)) {
813
+ throw new TypeError('"list" argument must be an Array of Buffers')
814
+ }
815
+ buf.copy(buffer, pos);
816
+ pos += buf.length;
817
+ }
818
+ return buffer
819
+ };
820
+
821
+ function byteLength (string, encoding) {
822
+ if (internalIsBuffer(string)) {
823
+ return string.length
824
+ }
825
+ if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
826
+ (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
827
+ return string.byteLength
828
+ }
829
+ if (typeof string !== 'string') {
830
+ string = '' + string;
831
+ }
832
+
833
+ var len = string.length;
834
+ if (len === 0) return 0
835
+
836
+ // Use a for loop to avoid recursion
837
+ var loweredCase = false;
838
+ for (;;) {
839
+ switch (encoding) {
840
+ case 'ascii':
841
+ case 'latin1':
842
+ case 'binary':
843
+ return len
844
+ case 'utf8':
845
+ case 'utf-8':
846
+ case undefined:
847
+ return utf8ToBytes(string).length
848
+ case 'ucs2':
849
+ case 'ucs-2':
850
+ case 'utf16le':
851
+ case 'utf-16le':
852
+ return len * 2
853
+ case 'hex':
854
+ return len >>> 1
855
+ case 'base64':
856
+ return base64ToBytes(string).length
857
+ default:
858
+ if (loweredCase) return utf8ToBytes(string).length // assume utf8
859
+ encoding = ('' + encoding).toLowerCase();
860
+ loweredCase = true;
861
+ }
862
+ }
863
+ }
864
+ Buffer.byteLength = byteLength;
865
+
866
+ function slowToString (encoding, start, end) {
867
+ var loweredCase = false;
868
+
869
+ // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
870
+ // property of a typed array.
871
+
872
+ // This behaves neither like String nor Uint8Array in that we set start/end
873
+ // to their upper/lower bounds if the value passed is out of range.
874
+ // undefined is handled specially as per ECMA-262 6th Edition,
875
+ // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
876
+ if (start === undefined || start < 0) {
877
+ start = 0;
878
+ }
879
+ // Return early if start > this.length. Done here to prevent potential uint32
880
+ // coercion fail below.
881
+ if (start > this.length) {
882
+ return ''
883
+ }
884
+
885
+ if (end === undefined || end > this.length) {
886
+ end = this.length;
887
+ }
888
+
889
+ if (end <= 0) {
890
+ return ''
891
+ }
892
+
893
+ // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
894
+ end >>>= 0;
895
+ start >>>= 0;
896
+
897
+ if (end <= start) {
898
+ return ''
899
+ }
900
+
901
+ if (!encoding) encoding = 'utf8';
902
+
903
+ while (true) {
904
+ switch (encoding) {
905
+ case 'hex':
906
+ return hexSlice(this, start, end)
907
+
908
+ case 'utf8':
909
+ case 'utf-8':
910
+ return utf8Slice(this, start, end)
911
+
912
+ case 'ascii':
913
+ return asciiSlice(this, start, end)
914
+
915
+ case 'latin1':
916
+ case 'binary':
917
+ return latin1Slice(this, start, end)
918
+
919
+ case 'base64':
920
+ return base64Slice(this, start, end)
921
+
922
+ case 'ucs2':
923
+ case 'ucs-2':
924
+ case 'utf16le':
925
+ case 'utf-16le':
926
+ return utf16leSlice(this, start, end)
927
+
928
+ default:
929
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
930
+ encoding = (encoding + '').toLowerCase();
931
+ loweredCase = true;
932
+ }
933
+ }
934
+ }
935
+
936
+ // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
937
+ // Buffer instances.
938
+ Buffer.prototype._isBuffer = true;
939
+
940
+ function swap (b, n, m) {
941
+ var i = b[n];
942
+ b[n] = b[m];
943
+ b[m] = i;
944
+ }
945
+
946
+ Buffer.prototype.swap16 = function swap16 () {
947
+ var len = this.length;
948
+ if (len % 2 !== 0) {
949
+ throw new RangeError('Buffer size must be a multiple of 16-bits')
950
+ }
951
+ for (var i = 0; i < len; i += 2) {
952
+ swap(this, i, i + 1);
953
+ }
954
+ return this
955
+ };
956
+
957
+ Buffer.prototype.swap32 = function swap32 () {
958
+ var len = this.length;
959
+ if (len % 4 !== 0) {
960
+ throw new RangeError('Buffer size must be a multiple of 32-bits')
961
+ }
962
+ for (var i = 0; i < len; i += 4) {
963
+ swap(this, i, i + 3);
964
+ swap(this, i + 1, i + 2);
965
+ }
966
+ return this
967
+ };
968
+
969
+ Buffer.prototype.swap64 = function swap64 () {
970
+ var len = this.length;
971
+ if (len % 8 !== 0) {
972
+ throw new RangeError('Buffer size must be a multiple of 64-bits')
973
+ }
974
+ for (var i = 0; i < len; i += 8) {
975
+ swap(this, i, i + 7);
976
+ swap(this, i + 1, i + 6);
977
+ swap(this, i + 2, i + 5);
978
+ swap(this, i + 3, i + 4);
979
+ }
980
+ return this
981
+ };
982
+
983
+ Buffer.prototype.toString = function toString () {
984
+ var length = this.length | 0;
985
+ if (length === 0) return ''
986
+ if (arguments.length === 0) return utf8Slice(this, 0, length)
987
+ return slowToString.apply(this, arguments)
988
+ };
989
+
990
+ Buffer.prototype.equals = function equals (b) {
991
+ if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')
992
+ if (this === b) return true
993
+ return Buffer.compare(this, b) === 0
994
+ };
995
+
996
+ Buffer.prototype.inspect = function inspect () {
997
+ var str = '';
998
+ var max = INSPECT_MAX_BYTES;
999
+ if (this.length > 0) {
1000
+ str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');
1001
+ if (this.length > max) str += ' ... ';
1002
+ }
1003
+ return '<Buffer ' + str + '>'
1004
+ };
1005
+
1006
+ Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
1007
+ if (!internalIsBuffer(target)) {
1008
+ throw new TypeError('Argument must be a Buffer')
1009
+ }
1010
+
1011
+ if (start === undefined) {
1012
+ start = 0;
1013
+ }
1014
+ if (end === undefined) {
1015
+ end = target ? target.length : 0;
1016
+ }
1017
+ if (thisStart === undefined) {
1018
+ thisStart = 0;
1019
+ }
1020
+ if (thisEnd === undefined) {
1021
+ thisEnd = this.length;
1022
+ }
1023
+
1024
+ if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
1025
+ throw new RangeError('out of range index')
1026
+ }
1027
+
1028
+ if (thisStart >= thisEnd && start >= end) {
1029
+ return 0
1030
+ }
1031
+ if (thisStart >= thisEnd) {
1032
+ return -1
1033
+ }
1034
+ if (start >= end) {
1035
+ return 1
1036
+ }
1037
+
1038
+ start >>>= 0;
1039
+ end >>>= 0;
1040
+ thisStart >>>= 0;
1041
+ thisEnd >>>= 0;
1042
+
1043
+ if (this === target) return 0
1044
+
1045
+ var x = thisEnd - thisStart;
1046
+ var y = end - start;
1047
+ var len = Math.min(x, y);
1048
+
1049
+ var thisCopy = this.slice(thisStart, thisEnd);
1050
+ var targetCopy = target.slice(start, end);
1051
+
1052
+ for (var i = 0; i < len; ++i) {
1053
+ if (thisCopy[i] !== targetCopy[i]) {
1054
+ x = thisCopy[i];
1055
+ y = targetCopy[i];
1056
+ break
1057
+ }
1058
+ }
1059
+
1060
+ if (x < y) return -1
1061
+ if (y < x) return 1
1062
+ return 0
1063
+ };
1064
+
1065
+ // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
1066
+ // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
1067
+ //
1068
+ // Arguments:
1069
+ // - buffer - a Buffer to search
1070
+ // - val - a string, Buffer, or number
1071
+ // - byteOffset - an index into `buffer`; will be clamped to an int32
1072
+ // - encoding - an optional encoding, relevant is val is a string
1073
+ // - dir - true for indexOf, false for lastIndexOf
1074
+ function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
1075
+ // Empty buffer means no match
1076
+ if (buffer.length === 0) return -1
1077
+
1078
+ // Normalize byteOffset
1079
+ if (typeof byteOffset === 'string') {
1080
+ encoding = byteOffset;
1081
+ byteOffset = 0;
1082
+ } else if (byteOffset > 0x7fffffff) {
1083
+ byteOffset = 0x7fffffff;
1084
+ } else if (byteOffset < -2147483648) {
1085
+ byteOffset = -2147483648;
1086
+ }
1087
+ byteOffset = +byteOffset; // Coerce to Number.
1088
+ if (isNaN(byteOffset)) {
1089
+ // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
1090
+ byteOffset = dir ? 0 : (buffer.length - 1);
1091
+ }
1092
+
1093
+ // Normalize byteOffset: negative offsets start from the end of the buffer
1094
+ if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
1095
+ if (byteOffset >= buffer.length) {
1096
+ if (dir) return -1
1097
+ else byteOffset = buffer.length - 1;
1098
+ } else if (byteOffset < 0) {
1099
+ if (dir) byteOffset = 0;
1100
+ else return -1
1101
+ }
1102
+
1103
+ // Normalize val
1104
+ if (typeof val === 'string') {
1105
+ val = Buffer.from(val, encoding);
1106
+ }
1107
+
1108
+ // Finally, search either indexOf (if dir is true) or lastIndexOf
1109
+ if (internalIsBuffer(val)) {
1110
+ // Special case: looking for empty string/buffer always fails
1111
+ if (val.length === 0) {
1112
+ return -1
1113
+ }
1114
+ return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
1115
+ } else if (typeof val === 'number') {
1116
+ val = val & 0xFF; // Search for a byte value [0-255]
1117
+ if (Buffer.TYPED_ARRAY_SUPPORT &&
1118
+ typeof Uint8Array.prototype.indexOf === 'function') {
1119
+ if (dir) {
1120
+ return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
1121
+ } else {
1122
+ return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
1123
+ }
1124
+ }
1125
+ return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
1126
+ }
1127
+
1128
+ throw new TypeError('val must be string, number or Buffer')
1129
+ }
1130
+
1131
+ function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
1132
+ var indexSize = 1;
1133
+ var arrLength = arr.length;
1134
+ var valLength = val.length;
1135
+
1136
+ if (encoding !== undefined) {
1137
+ encoding = String(encoding).toLowerCase();
1138
+ if (encoding === 'ucs2' || encoding === 'ucs-2' ||
1139
+ encoding === 'utf16le' || encoding === 'utf-16le') {
1140
+ if (arr.length < 2 || val.length < 2) {
1141
+ return -1
1142
+ }
1143
+ indexSize = 2;
1144
+ arrLength /= 2;
1145
+ valLength /= 2;
1146
+ byteOffset /= 2;
1147
+ }
1148
+ }
1149
+
1150
+ function read (buf, i) {
1151
+ if (indexSize === 1) {
1152
+ return buf[i]
1153
+ } else {
1154
+ return buf.readUInt16BE(i * indexSize)
1155
+ }
1156
+ }
1157
+
1158
+ var i;
1159
+ if (dir) {
1160
+ var foundIndex = -1;
1161
+ for (i = byteOffset; i < arrLength; i++) {
1162
+ if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
1163
+ if (foundIndex === -1) foundIndex = i;
1164
+ if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
1165
+ } else {
1166
+ if (foundIndex !== -1) i -= i - foundIndex;
1167
+ foundIndex = -1;
1168
+ }
1169
+ }
1170
+ } else {
1171
+ if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
1172
+ for (i = byteOffset; i >= 0; i--) {
1173
+ var found = true;
1174
+ for (var j = 0; j < valLength; j++) {
1175
+ if (read(arr, i + j) !== read(val, j)) {
1176
+ found = false;
1177
+ break
1178
+ }
1179
+ }
1180
+ if (found) return i
1181
+ }
1182
+ }
1183
+
1184
+ return -1
1185
+ }
1186
+
1187
+ Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
1188
+ return this.indexOf(val, byteOffset, encoding) !== -1
1189
+ };
1190
+
1191
+ Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
1192
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
1193
+ };
1194
+
1195
+ Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
1196
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
1197
+ };
1198
+
1199
+ function hexWrite (buf, string, offset, length) {
1200
+ offset = Number(offset) || 0;
1201
+ var remaining = buf.length - offset;
1202
+ if (!length) {
1203
+ length = remaining;
1204
+ } else {
1205
+ length = Number(length);
1206
+ if (length > remaining) {
1207
+ length = remaining;
1208
+ }
1209
+ }
1210
+
1211
+ // must be an even number of digits
1212
+ var strLen = string.length;
1213
+ if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
1214
+
1215
+ if (length > strLen / 2) {
1216
+ length = strLen / 2;
1217
+ }
1218
+ for (var i = 0; i < length; ++i) {
1219
+ var parsed = parseInt(string.substr(i * 2, 2), 16);
1220
+ if (isNaN(parsed)) return i
1221
+ buf[offset + i] = parsed;
1222
+ }
1223
+ return i
1224
+ }
1225
+
1226
+ function utf8Write (buf, string, offset, length) {
1227
+ return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
1228
+ }
1229
+
1230
+ function asciiWrite (buf, string, offset, length) {
1231
+ return blitBuffer(asciiToBytes(string), buf, offset, length)
1232
+ }
1233
+
1234
+ function latin1Write (buf, string, offset, length) {
1235
+ return asciiWrite(buf, string, offset, length)
1236
+ }
1237
+
1238
+ function base64Write (buf, string, offset, length) {
1239
+ return blitBuffer(base64ToBytes(string), buf, offset, length)
1240
+ }
1241
+
1242
+ function ucs2Write (buf, string, offset, length) {
1243
+ return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
1244
+ }
1245
+
1246
+ Buffer.prototype.write = function write (string, offset, length, encoding) {
1247
+ // Buffer#write(string)
1248
+ if (offset === undefined) {
1249
+ encoding = 'utf8';
1250
+ length = this.length;
1251
+ offset = 0;
1252
+ // Buffer#write(string, encoding)
1253
+ } else if (length === undefined && typeof offset === 'string') {
1254
+ encoding = offset;
1255
+ length = this.length;
1256
+ offset = 0;
1257
+ // Buffer#write(string, offset[, length][, encoding])
1258
+ } else if (isFinite(offset)) {
1259
+ offset = offset | 0;
1260
+ if (isFinite(length)) {
1261
+ length = length | 0;
1262
+ if (encoding === undefined) encoding = 'utf8';
1263
+ } else {
1264
+ encoding = length;
1265
+ length = undefined;
1266
+ }
1267
+ // legacy write(string, encoding, offset, length) - remove in v0.13
1268
+ } else {
1269
+ throw new Error(
1270
+ 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
1271
+ )
1272
+ }
1273
+
1274
+ var remaining = this.length - offset;
1275
+ if (length === undefined || length > remaining) length = remaining;
1276
+
1277
+ if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
1278
+ throw new RangeError('Attempt to write outside buffer bounds')
1279
+ }
1280
+
1281
+ if (!encoding) encoding = 'utf8';
1282
+
1283
+ var loweredCase = false;
1284
+ for (;;) {
1285
+ switch (encoding) {
1286
+ case 'hex':
1287
+ return hexWrite(this, string, offset, length)
1288
+
1289
+ case 'utf8':
1290
+ case 'utf-8':
1291
+ return utf8Write(this, string, offset, length)
1292
+
1293
+ case 'ascii':
1294
+ return asciiWrite(this, string, offset, length)
1295
+
1296
+ case 'latin1':
1297
+ case 'binary':
1298
+ return latin1Write(this, string, offset, length)
1299
+
1300
+ case 'base64':
1301
+ // Warning: maxLength not taken into account in base64Write
1302
+ return base64Write(this, string, offset, length)
1303
+
1304
+ case 'ucs2':
1305
+ case 'ucs-2':
1306
+ case 'utf16le':
1307
+ case 'utf-16le':
1308
+ return ucs2Write(this, string, offset, length)
1309
+
1310
+ default:
1311
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
1312
+ encoding = ('' + encoding).toLowerCase();
1313
+ loweredCase = true;
1314
+ }
1315
+ }
1316
+ };
1317
+
1318
+ Buffer.prototype.toJSON = function toJSON () {
1319
+ return {
1320
+ type: 'Buffer',
1321
+ data: Array.prototype.slice.call(this._arr || this, 0)
1322
+ }
1323
+ };
1324
+
1325
+ function base64Slice (buf, start, end) {
1326
+ if (start === 0 && end === buf.length) {
1327
+ return fromByteArray(buf)
1328
+ } else {
1329
+ return fromByteArray(buf.slice(start, end))
1330
+ }
1331
+ }
1332
+
1333
+ function utf8Slice (buf, start, end) {
1334
+ end = Math.min(buf.length, end);
1335
+ var res = [];
1336
+
1337
+ var i = start;
1338
+ while (i < end) {
1339
+ var firstByte = buf[i];
1340
+ var codePoint = null;
1341
+ var bytesPerSequence = (firstByte > 0xEF) ? 4
1342
+ : (firstByte > 0xDF) ? 3
1343
+ : (firstByte > 0xBF) ? 2
1344
+ : 1;
1345
+
1346
+ if (i + bytesPerSequence <= end) {
1347
+ var secondByte, thirdByte, fourthByte, tempCodePoint;
1348
+
1349
+ switch (bytesPerSequence) {
1350
+ case 1:
1351
+ if (firstByte < 0x80) {
1352
+ codePoint = firstByte;
1353
+ }
1354
+ break
1355
+ case 2:
1356
+ secondByte = buf[i + 1];
1357
+ if ((secondByte & 0xC0) === 0x80) {
1358
+ tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);
1359
+ if (tempCodePoint > 0x7F) {
1360
+ codePoint = tempCodePoint;
1361
+ }
1362
+ }
1363
+ break
1364
+ case 3:
1365
+ secondByte = buf[i + 1];
1366
+ thirdByte = buf[i + 2];
1367
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
1368
+ tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);
1369
+ if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
1370
+ codePoint = tempCodePoint;
1371
+ }
1372
+ }
1373
+ break
1374
+ case 4:
1375
+ secondByte = buf[i + 1];
1376
+ thirdByte = buf[i + 2];
1377
+ fourthByte = buf[i + 3];
1378
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
1379
+ tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);
1380
+ if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
1381
+ codePoint = tempCodePoint;
1382
+ }
1383
+ }
1384
+ }
1385
+ }
1386
+
1387
+ if (codePoint === null) {
1388
+ // we did not generate a valid codePoint so insert a
1389
+ // replacement char (U+FFFD) and advance only 1 byte
1390
+ codePoint = 0xFFFD;
1391
+ bytesPerSequence = 1;
1392
+ } else if (codePoint > 0xFFFF) {
1393
+ // encode to utf16 (surrogate pair dance)
1394
+ codePoint -= 0x10000;
1395
+ res.push(codePoint >>> 10 & 0x3FF | 0xD800);
1396
+ codePoint = 0xDC00 | codePoint & 0x3FF;
1397
+ }
1398
+
1399
+ res.push(codePoint);
1400
+ i += bytesPerSequence;
1401
+ }
1402
+
1403
+ return decodeCodePointsArray(res)
1404
+ }
1405
+
1406
+ // Based on http://stackoverflow.com/a/22747272/680742, the browser with
1407
+ // the lowest limit is Chrome, with 0x10000 args.
1408
+ // We go 1 magnitude less, for safety
1409
+ var MAX_ARGUMENTS_LENGTH = 0x1000;
1410
+
1411
+ function decodeCodePointsArray (codePoints) {
1412
+ var len = codePoints.length;
1413
+ if (len <= MAX_ARGUMENTS_LENGTH) {
1414
+ return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
1415
+ }
1416
+
1417
+ // Decode in chunks to avoid "call stack size exceeded".
1418
+ var res = '';
1419
+ var i = 0;
1420
+ while (i < len) {
1421
+ res += String.fromCharCode.apply(
1422
+ String,
1423
+ codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
1424
+ );
1425
+ }
1426
+ return res
1427
+ }
1428
+
1429
+ function asciiSlice (buf, start, end) {
1430
+ var ret = '';
1431
+ end = Math.min(buf.length, end);
1432
+
1433
+ for (var i = start; i < end; ++i) {
1434
+ ret += String.fromCharCode(buf[i] & 0x7F);
1435
+ }
1436
+ return ret
1437
+ }
1438
+
1439
+ function latin1Slice (buf, start, end) {
1440
+ var ret = '';
1441
+ end = Math.min(buf.length, end);
1442
+
1443
+ for (var i = start; i < end; ++i) {
1444
+ ret += String.fromCharCode(buf[i]);
1445
+ }
1446
+ return ret
1447
+ }
1448
+
1449
+ function hexSlice (buf, start, end) {
1450
+ var len = buf.length;
1451
+
1452
+ if (!start || start < 0) start = 0;
1453
+ if (!end || end < 0 || end > len) end = len;
1454
+
1455
+ var out = '';
1456
+ for (var i = start; i < end; ++i) {
1457
+ out += toHex(buf[i]);
1458
+ }
1459
+ return out
1460
+ }
1461
+
1462
+ function utf16leSlice (buf, start, end) {
1463
+ var bytes = buf.slice(start, end);
1464
+ var res = '';
1465
+ for (var i = 0; i < bytes.length; i += 2) {
1466
+ res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
1467
+ }
1468
+ return res
1469
+ }
1470
+
1471
+ Buffer.prototype.slice = function slice (start, end) {
1472
+ var len = this.length;
1473
+ start = ~~start;
1474
+ end = end === undefined ? len : ~~end;
1475
+
1476
+ if (start < 0) {
1477
+ start += len;
1478
+ if (start < 0) start = 0;
1479
+ } else if (start > len) {
1480
+ start = len;
1481
+ }
1482
+
1483
+ if (end < 0) {
1484
+ end += len;
1485
+ if (end < 0) end = 0;
1486
+ } else if (end > len) {
1487
+ end = len;
1488
+ }
1489
+
1490
+ if (end < start) end = start;
1491
+
1492
+ var newBuf;
1493
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1494
+ newBuf = this.subarray(start, end);
1495
+ newBuf.__proto__ = Buffer.prototype;
1496
+ } else {
1497
+ var sliceLen = end - start;
1498
+ newBuf = new Buffer(sliceLen, undefined);
1499
+ for (var i = 0; i < sliceLen; ++i) {
1500
+ newBuf[i] = this[i + start];
1501
+ }
1502
+ }
1503
+
1504
+ return newBuf
1505
+ };
1506
+
1507
+ /*
1508
+ * Need to make sure that buffer isn't trying to write out of bounds.
1509
+ */
1510
+ function checkOffset (offset, ext, length) {
1511
+ if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
1512
+ if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
1513
+ }
1514
+
1515
+ Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
1516
+ offset = offset | 0;
1517
+ byteLength = byteLength | 0;
1518
+ if (!noAssert) checkOffset(offset, byteLength, this.length);
1519
+
1520
+ var val = this[offset];
1521
+ var mul = 1;
1522
+ var i = 0;
1523
+ while (++i < byteLength && (mul *= 0x100)) {
1524
+ val += this[offset + i] * mul;
1525
+ }
1526
+
1527
+ return val
1528
+ };
1529
+
1530
+ Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
1531
+ offset = offset | 0;
1532
+ byteLength = byteLength | 0;
1533
+ if (!noAssert) {
1534
+ checkOffset(offset, byteLength, this.length);
1535
+ }
1536
+
1537
+ var val = this[offset + --byteLength];
1538
+ var mul = 1;
1539
+ while (byteLength > 0 && (mul *= 0x100)) {
1540
+ val += this[offset + --byteLength] * mul;
1541
+ }
1542
+
1543
+ return val
1544
+ };
1545
+
1546
+ Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
1547
+ if (!noAssert) checkOffset(offset, 1, this.length);
1548
+ return this[offset]
1549
+ };
1550
+
1551
+ Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
1552
+ if (!noAssert) checkOffset(offset, 2, this.length);
1553
+ return this[offset] | (this[offset + 1] << 8)
1554
+ };
1555
+
1556
+ Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
1557
+ if (!noAssert) checkOffset(offset, 2, this.length);
1558
+ return (this[offset] << 8) | this[offset + 1]
1559
+ };
1560
+
1561
+ Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
1562
+ if (!noAssert) checkOffset(offset, 4, this.length);
1563
+
1564
+ return ((this[offset]) |
1565
+ (this[offset + 1] << 8) |
1566
+ (this[offset + 2] << 16)) +
1567
+ (this[offset + 3] * 0x1000000)
1568
+ };
1569
+
1570
+ Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
1571
+ if (!noAssert) checkOffset(offset, 4, this.length);
1572
+
1573
+ return (this[offset] * 0x1000000) +
1574
+ ((this[offset + 1] << 16) |
1575
+ (this[offset + 2] << 8) |
1576
+ this[offset + 3])
1577
+ };
1578
+
1579
+ Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
1580
+ offset = offset | 0;
1581
+ byteLength = byteLength | 0;
1582
+ if (!noAssert) checkOffset(offset, byteLength, this.length);
1583
+
1584
+ var val = this[offset];
1585
+ var mul = 1;
1586
+ var i = 0;
1587
+ while (++i < byteLength && (mul *= 0x100)) {
1588
+ val += this[offset + i] * mul;
1589
+ }
1590
+ mul *= 0x80;
1591
+
1592
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength);
1593
+
1594
+ return val
1595
+ };
1596
+
1597
+ Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
1598
+ offset = offset | 0;
1599
+ byteLength = byteLength | 0;
1600
+ if (!noAssert) checkOffset(offset, byteLength, this.length);
1601
+
1602
+ var i = byteLength;
1603
+ var mul = 1;
1604
+ var val = this[offset + --i];
1605
+ while (i > 0 && (mul *= 0x100)) {
1606
+ val += this[offset + --i] * mul;
1607
+ }
1608
+ mul *= 0x80;
1609
+
1610
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength);
1611
+
1612
+ return val
1613
+ };
1614
+
1615
+ Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
1616
+ if (!noAssert) checkOffset(offset, 1, this.length);
1617
+ if (!(this[offset] & 0x80)) return (this[offset])
1618
+ return ((0xff - this[offset] + 1) * -1)
1619
+ };
1620
+
1621
+ Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
1622
+ if (!noAssert) checkOffset(offset, 2, this.length);
1623
+ var val = this[offset] | (this[offset + 1] << 8);
1624
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
1625
+ };
1626
+
1627
+ Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
1628
+ if (!noAssert) checkOffset(offset, 2, this.length);
1629
+ var val = this[offset + 1] | (this[offset] << 8);
1630
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
1631
+ };
1632
+
1633
+ Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
1634
+ if (!noAssert) checkOffset(offset, 4, this.length);
1635
+
1636
+ return (this[offset]) |
1637
+ (this[offset + 1] << 8) |
1638
+ (this[offset + 2] << 16) |
1639
+ (this[offset + 3] << 24)
1640
+ };
1641
+
1642
+ Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
1643
+ if (!noAssert) checkOffset(offset, 4, this.length);
1644
+
1645
+ return (this[offset] << 24) |
1646
+ (this[offset + 1] << 16) |
1647
+ (this[offset + 2] << 8) |
1648
+ (this[offset + 3])
1649
+ };
1650
+
1651
+ Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
1652
+ if (!noAssert) checkOffset(offset, 4, this.length);
1653
+ return read(this, offset, true, 23, 4)
1654
+ };
1655
+
1656
+ Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
1657
+ if (!noAssert) checkOffset(offset, 4, this.length);
1658
+ return read(this, offset, false, 23, 4)
1659
+ };
1660
+
1661
+ Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
1662
+ if (!noAssert) checkOffset(offset, 8, this.length);
1663
+ return read(this, offset, true, 52, 8)
1664
+ };
1665
+
1666
+ Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
1667
+ if (!noAssert) checkOffset(offset, 8, this.length);
1668
+ return read(this, offset, false, 52, 8)
1669
+ };
1670
+
1671
+ function checkInt (buf, value, offset, ext, max, min) {
1672
+ if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
1673
+ if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
1674
+ if (offset + ext > buf.length) throw new RangeError('Index out of range')
1675
+ }
1676
+
1677
+ Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
1678
+ value = +value;
1679
+ offset = offset | 0;
1680
+ byteLength = byteLength | 0;
1681
+ if (!noAssert) {
1682
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1;
1683
+ checkInt(this, value, offset, byteLength, maxBytes, 0);
1684
+ }
1685
+
1686
+ var mul = 1;
1687
+ var i = 0;
1688
+ this[offset] = value & 0xFF;
1689
+ while (++i < byteLength && (mul *= 0x100)) {
1690
+ this[offset + i] = (value / mul) & 0xFF;
1691
+ }
1692
+
1693
+ return offset + byteLength
1694
+ };
1695
+
1696
+ Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
1697
+ value = +value;
1698
+ offset = offset | 0;
1699
+ byteLength = byteLength | 0;
1700
+ if (!noAssert) {
1701
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1;
1702
+ checkInt(this, value, offset, byteLength, maxBytes, 0);
1703
+ }
1704
+
1705
+ var i = byteLength - 1;
1706
+ var mul = 1;
1707
+ this[offset + i] = value & 0xFF;
1708
+ while (--i >= 0 && (mul *= 0x100)) {
1709
+ this[offset + i] = (value / mul) & 0xFF;
1710
+ }
1711
+
1712
+ return offset + byteLength
1713
+ };
1714
+
1715
+ Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
1716
+ value = +value;
1717
+ offset = offset | 0;
1718
+ if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
1719
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
1720
+ this[offset] = (value & 0xff);
1721
+ return offset + 1
1722
+ };
1723
+
1724
+ function objectWriteUInt16 (buf, value, offset, littleEndian) {
1725
+ if (value < 0) value = 0xffff + value + 1;
1726
+ for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
1727
+ buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
1728
+ (littleEndian ? i : 1 - i) * 8;
1729
+ }
1730
+ }
1731
+
1732
+ Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
1733
+ value = +value;
1734
+ offset = offset | 0;
1735
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
1736
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1737
+ this[offset] = (value & 0xff);
1738
+ this[offset + 1] = (value >>> 8);
1739
+ } else {
1740
+ objectWriteUInt16(this, value, offset, true);
1741
+ }
1742
+ return offset + 2
1743
+ };
1744
+
1745
+ Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
1746
+ value = +value;
1747
+ offset = offset | 0;
1748
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
1749
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1750
+ this[offset] = (value >>> 8);
1751
+ this[offset + 1] = (value & 0xff);
1752
+ } else {
1753
+ objectWriteUInt16(this, value, offset, false);
1754
+ }
1755
+ return offset + 2
1756
+ };
1757
+
1758
+ function objectWriteUInt32 (buf, value, offset, littleEndian) {
1759
+ if (value < 0) value = 0xffffffff + value + 1;
1760
+ for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
1761
+ buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;
1762
+ }
1763
+ }
1764
+
1765
+ Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
1766
+ value = +value;
1767
+ offset = offset | 0;
1768
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
1769
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1770
+ this[offset + 3] = (value >>> 24);
1771
+ this[offset + 2] = (value >>> 16);
1772
+ this[offset + 1] = (value >>> 8);
1773
+ this[offset] = (value & 0xff);
1774
+ } else {
1775
+ objectWriteUInt32(this, value, offset, true);
1776
+ }
1777
+ return offset + 4
1778
+ };
1779
+
1780
+ Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
1781
+ value = +value;
1782
+ offset = offset | 0;
1783
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
1784
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1785
+ this[offset] = (value >>> 24);
1786
+ this[offset + 1] = (value >>> 16);
1787
+ this[offset + 2] = (value >>> 8);
1788
+ this[offset + 3] = (value & 0xff);
1789
+ } else {
1790
+ objectWriteUInt32(this, value, offset, false);
1791
+ }
1792
+ return offset + 4
1793
+ };
1794
+
1795
+ Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
1796
+ value = +value;
1797
+ offset = offset | 0;
1798
+ if (!noAssert) {
1799
+ var limit = Math.pow(2, 8 * byteLength - 1);
1800
+
1801
+ checkInt(this, value, offset, byteLength, limit - 1, -limit);
1802
+ }
1803
+
1804
+ var i = 0;
1805
+ var mul = 1;
1806
+ var sub = 0;
1807
+ this[offset] = value & 0xFF;
1808
+ while (++i < byteLength && (mul *= 0x100)) {
1809
+ if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
1810
+ sub = 1;
1811
+ }
1812
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
1813
+ }
1814
+
1815
+ return offset + byteLength
1816
+ };
1817
+
1818
+ Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
1819
+ value = +value;
1820
+ offset = offset | 0;
1821
+ if (!noAssert) {
1822
+ var limit = Math.pow(2, 8 * byteLength - 1);
1823
+
1824
+ checkInt(this, value, offset, byteLength, limit - 1, -limit);
1825
+ }
1826
+
1827
+ var i = byteLength - 1;
1828
+ var mul = 1;
1829
+ var sub = 0;
1830
+ this[offset + i] = value & 0xFF;
1831
+ while (--i >= 0 && (mul *= 0x100)) {
1832
+ if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
1833
+ sub = 1;
1834
+ }
1835
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
1836
+ }
184
1837
 
185
- // Generated using scripts/write-decode-map.ts
186
- var xmlDecodeTree = new Uint16Array(
187
- // prettier-ignore
188
- "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
189
- .split("")
190
- .map((c) => c.charCodeAt(0)));
1838
+ return offset + byteLength
1839
+ };
191
1840
 
192
- // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
193
- var _a;
194
- const decodeMap = new Map([
195
- [0, 65533],
196
- // C1 Unicode control character reference replacements
197
- [128, 8364],
198
- [130, 8218],
199
- [131, 402],
200
- [132, 8222],
201
- [133, 8230],
202
- [134, 8224],
203
- [135, 8225],
204
- [136, 710],
205
- [137, 8240],
206
- [138, 352],
207
- [139, 8249],
208
- [140, 338],
209
- [142, 381],
210
- [145, 8216],
211
- [146, 8217],
212
- [147, 8220],
213
- [148, 8221],
214
- [149, 8226],
215
- [150, 8211],
216
- [151, 8212],
217
- [152, 732],
218
- [153, 8482],
219
- [154, 353],
220
- [155, 8250],
221
- [156, 339],
222
- [158, 382],
223
- [159, 376],
224
- ]);
225
- /**
226
- * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
227
- */
228
- const fromCodePoint =
229
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
230
- (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {
231
- let output = "";
232
- if (codePoint > 0xffff) {
233
- codePoint -= 0x10000;
234
- output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
235
- codePoint = 0xdc00 | (codePoint & 0x3ff);
1841
+ Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
1842
+ value = +value;
1843
+ offset = offset | 0;
1844
+ if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -128);
1845
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
1846
+ if (value < 0) value = 0xff + value + 1;
1847
+ this[offset] = (value & 0xff);
1848
+ return offset + 1
1849
+ };
1850
+
1851
+ Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
1852
+ value = +value;
1853
+ offset = offset | 0;
1854
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);
1855
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1856
+ this[offset] = (value & 0xff);
1857
+ this[offset + 1] = (value >>> 8);
1858
+ } else {
1859
+ objectWriteUInt16(this, value, offset, true);
1860
+ }
1861
+ return offset + 2
1862
+ };
1863
+
1864
+ Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
1865
+ value = +value;
1866
+ offset = offset | 0;
1867
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);
1868
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1869
+ this[offset] = (value >>> 8);
1870
+ this[offset + 1] = (value & 0xff);
1871
+ } else {
1872
+ objectWriteUInt16(this, value, offset, false);
1873
+ }
1874
+ return offset + 2
1875
+ };
1876
+
1877
+ Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
1878
+ value = +value;
1879
+ offset = offset | 0;
1880
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);
1881
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1882
+ this[offset] = (value & 0xff);
1883
+ this[offset + 1] = (value >>> 8);
1884
+ this[offset + 2] = (value >>> 16);
1885
+ this[offset + 3] = (value >>> 24);
1886
+ } else {
1887
+ objectWriteUInt32(this, value, offset, true);
1888
+ }
1889
+ return offset + 4
1890
+ };
1891
+
1892
+ Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
1893
+ value = +value;
1894
+ offset = offset | 0;
1895
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);
1896
+ if (value < 0) value = 0xffffffff + value + 1;
1897
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1898
+ this[offset] = (value >>> 24);
1899
+ this[offset + 1] = (value >>> 16);
1900
+ this[offset + 2] = (value >>> 8);
1901
+ this[offset + 3] = (value & 0xff);
1902
+ } else {
1903
+ objectWriteUInt32(this, value, offset, false);
1904
+ }
1905
+ return offset + 4
1906
+ };
1907
+
1908
+ function checkIEEE754 (buf, value, offset, ext, max, min) {
1909
+ if (offset + ext > buf.length) throw new RangeError('Index out of range')
1910
+ if (offset < 0) throw new RangeError('Index out of range')
1911
+ }
1912
+
1913
+ function writeFloat (buf, value, offset, littleEndian, noAssert) {
1914
+ if (!noAssert) {
1915
+ checkIEEE754(buf, value, offset, 4);
1916
+ }
1917
+ write(buf, value, offset, littleEndian, 23, 4);
1918
+ return offset + 4
1919
+ }
1920
+
1921
+ Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
1922
+ return writeFloat(this, value, offset, true, noAssert)
1923
+ };
1924
+
1925
+ Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
1926
+ return writeFloat(this, value, offset, false, noAssert)
1927
+ };
1928
+
1929
+ function writeDouble (buf, value, offset, littleEndian, noAssert) {
1930
+ if (!noAssert) {
1931
+ checkIEEE754(buf, value, offset, 8);
1932
+ }
1933
+ write(buf, value, offset, littleEndian, 52, 8);
1934
+ return offset + 8
1935
+ }
1936
+
1937
+ Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
1938
+ return writeDouble(this, value, offset, true, noAssert)
1939
+ };
1940
+
1941
+ Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
1942
+ return writeDouble(this, value, offset, false, noAssert)
1943
+ };
1944
+
1945
+ // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
1946
+ Buffer.prototype.copy = function copy (target, targetStart, start, end) {
1947
+ if (!start) start = 0;
1948
+ if (!end && end !== 0) end = this.length;
1949
+ if (targetStart >= target.length) targetStart = target.length;
1950
+ if (!targetStart) targetStart = 0;
1951
+ if (end > 0 && end < start) end = start;
1952
+
1953
+ // Copy 0 bytes; we're done
1954
+ if (end === start) return 0
1955
+ if (target.length === 0 || this.length === 0) return 0
1956
+
1957
+ // Fatal error conditions
1958
+ if (targetStart < 0) {
1959
+ throw new RangeError('targetStart out of bounds')
1960
+ }
1961
+ if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
1962
+ if (end < 0) throw new RangeError('sourceEnd out of bounds')
1963
+
1964
+ // Are we oob?
1965
+ if (end > this.length) end = this.length;
1966
+ if (target.length - targetStart < end - start) {
1967
+ end = target.length - targetStart + start;
1968
+ }
1969
+
1970
+ var len = end - start;
1971
+ var i;
1972
+
1973
+ if (this === target && start < targetStart && targetStart < end) {
1974
+ // descending copy from end
1975
+ for (i = len - 1; i >= 0; --i) {
1976
+ target[i + targetStart] = this[i + start];
236
1977
  }
237
- output += String.fromCharCode(codePoint);
238
- return output;
1978
+ } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
1979
+ // ascending copy from start
1980
+ for (i = 0; i < len; ++i) {
1981
+ target[i + targetStart] = this[i + start];
1982
+ }
1983
+ } else {
1984
+ Uint8Array.prototype.set.call(
1985
+ target,
1986
+ this.subarray(start, start + len),
1987
+ targetStart
1988
+ );
1989
+ }
1990
+
1991
+ return len
239
1992
  };
240
- /**
241
- * Replace the given code point with a replacement character if it is a
242
- * surrogate or is outside the valid range. Otherwise return the code
243
- * point unchanged.
1993
+
1994
+ // Usage:
1995
+ // buffer.fill(number[, offset[, end]])
1996
+ // buffer.fill(buffer[, offset[, end]])
1997
+ // buffer.fill(string[, offset[, end]][, encoding])
1998
+ Buffer.prototype.fill = function fill (val, start, end, encoding) {
1999
+ // Handle string cases:
2000
+ if (typeof val === 'string') {
2001
+ if (typeof start === 'string') {
2002
+ encoding = start;
2003
+ start = 0;
2004
+ end = this.length;
2005
+ } else if (typeof end === 'string') {
2006
+ encoding = end;
2007
+ end = this.length;
2008
+ }
2009
+ if (val.length === 1) {
2010
+ var code = val.charCodeAt(0);
2011
+ if (code < 256) {
2012
+ val = code;
2013
+ }
2014
+ }
2015
+ if (encoding !== undefined && typeof encoding !== 'string') {
2016
+ throw new TypeError('encoding must be a string')
2017
+ }
2018
+ if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
2019
+ throw new TypeError('Unknown encoding: ' + encoding)
2020
+ }
2021
+ } else if (typeof val === 'number') {
2022
+ val = val & 255;
2023
+ }
2024
+
2025
+ // Invalid ranges are not set to a default, so can range check early.
2026
+ if (start < 0 || this.length < start || this.length < end) {
2027
+ throw new RangeError('Out of range index')
2028
+ }
2029
+
2030
+ if (end <= start) {
2031
+ return this
2032
+ }
2033
+
2034
+ start = start >>> 0;
2035
+ end = end === undefined ? this.length : end >>> 0;
2036
+
2037
+ if (!val) val = 0;
2038
+
2039
+ var i;
2040
+ if (typeof val === 'number') {
2041
+ for (i = start; i < end; ++i) {
2042
+ this[i] = val;
2043
+ }
2044
+ } else {
2045
+ var bytes = internalIsBuffer(val)
2046
+ ? val
2047
+ : utf8ToBytes(new Buffer(val, encoding).toString());
2048
+ var len = bytes.length;
2049
+ for (i = 0; i < end - start; ++i) {
2050
+ this[i + start] = bytes[i % len];
2051
+ }
2052
+ }
2053
+
2054
+ return this
2055
+ };
2056
+
2057
+ // HELPER FUNCTIONS
2058
+ // ================
2059
+
2060
+ var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g;
2061
+
2062
+ function base64clean (str) {
2063
+ // Node strips out invalid characters like \n and \t from the string, base64-js does not
2064
+ str = stringtrim(str).replace(INVALID_BASE64_RE, '');
2065
+ // Node converts strings with length < 2 to ''
2066
+ if (str.length < 2) return ''
2067
+ // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
2068
+ while (str.length % 4 !== 0) {
2069
+ str = str + '=';
2070
+ }
2071
+ return str
2072
+ }
2073
+
2074
+ function stringtrim (str) {
2075
+ if (str.trim) return str.trim()
2076
+ return str.replace(/^\s+|\s+$/g, '')
2077
+ }
2078
+
2079
+ function toHex (n) {
2080
+ if (n < 16) return '0' + n.toString(16)
2081
+ return n.toString(16)
2082
+ }
2083
+
2084
+ function utf8ToBytes (string, units) {
2085
+ units = units || Infinity;
2086
+ var codePoint;
2087
+ var length = string.length;
2088
+ var leadSurrogate = null;
2089
+ var bytes = [];
2090
+
2091
+ for (var i = 0; i < length; ++i) {
2092
+ codePoint = string.charCodeAt(i);
2093
+
2094
+ // is surrogate component
2095
+ if (codePoint > 0xD7FF && codePoint < 0xE000) {
2096
+ // last char was a lead
2097
+ if (!leadSurrogate) {
2098
+ // no lead yet
2099
+ if (codePoint > 0xDBFF) {
2100
+ // unexpected trail
2101
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
2102
+ continue
2103
+ } else if (i + 1 === length) {
2104
+ // unpaired lead
2105
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
2106
+ continue
2107
+ }
2108
+
2109
+ // valid lead
2110
+ leadSurrogate = codePoint;
2111
+
2112
+ continue
2113
+ }
2114
+
2115
+ // 2 leads in a row
2116
+ if (codePoint < 0xDC00) {
2117
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
2118
+ leadSurrogate = codePoint;
2119
+ continue
2120
+ }
2121
+
2122
+ // valid surrogate pair
2123
+ codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
2124
+ } else if (leadSurrogate) {
2125
+ // valid bmp char, but last char was a lead
2126
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
2127
+ }
2128
+
2129
+ leadSurrogate = null;
2130
+
2131
+ // encode utf8
2132
+ if (codePoint < 0x80) {
2133
+ if ((units -= 1) < 0) break
2134
+ bytes.push(codePoint);
2135
+ } else if (codePoint < 0x800) {
2136
+ if ((units -= 2) < 0) break
2137
+ bytes.push(
2138
+ codePoint >> 0x6 | 0xC0,
2139
+ codePoint & 0x3F | 0x80
2140
+ );
2141
+ } else if (codePoint < 0x10000) {
2142
+ if ((units -= 3) < 0) break
2143
+ bytes.push(
2144
+ codePoint >> 0xC | 0xE0,
2145
+ codePoint >> 0x6 & 0x3F | 0x80,
2146
+ codePoint & 0x3F | 0x80
2147
+ );
2148
+ } else if (codePoint < 0x110000) {
2149
+ if ((units -= 4) < 0) break
2150
+ bytes.push(
2151
+ codePoint >> 0x12 | 0xF0,
2152
+ codePoint >> 0xC & 0x3F | 0x80,
2153
+ codePoint >> 0x6 & 0x3F | 0x80,
2154
+ codePoint & 0x3F | 0x80
2155
+ );
2156
+ } else {
2157
+ throw new Error('Invalid code point')
2158
+ }
2159
+ }
2160
+
2161
+ return bytes
2162
+ }
2163
+
2164
+ function asciiToBytes (str) {
2165
+ var byteArray = [];
2166
+ for (var i = 0; i < str.length; ++i) {
2167
+ // Node's code seems to be doing this and not & 0x7F..
2168
+ byteArray.push(str.charCodeAt(i) & 0xFF);
2169
+ }
2170
+ return byteArray
2171
+ }
2172
+
2173
+ function utf16leToBytes (str, units) {
2174
+ var c, hi, lo;
2175
+ var byteArray = [];
2176
+ for (var i = 0; i < str.length; ++i) {
2177
+ if ((units -= 2) < 0) break
2178
+
2179
+ c = str.charCodeAt(i);
2180
+ hi = c >> 8;
2181
+ lo = c % 256;
2182
+ byteArray.push(lo);
2183
+ byteArray.push(hi);
2184
+ }
2185
+
2186
+ return byteArray
2187
+ }
2188
+
2189
+
2190
+ function base64ToBytes (str) {
2191
+ return toByteArray(base64clean(str))
2192
+ }
2193
+
2194
+ function blitBuffer (src, dst, offset, length) {
2195
+ for (var i = 0; i < length; ++i) {
2196
+ if ((i + offset >= dst.length) || (i >= src.length)) break
2197
+ dst[i + offset] = src[i];
2198
+ }
2199
+ return i
2200
+ }
2201
+
2202
+ function isnan (val) {
2203
+ return val !== val // eslint-disable-line no-self-compare
2204
+ }
2205
+
2206
+
2207
+ // the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence
2208
+ // The _isBuffer check is for Safari 5-7 support, because it's missing
2209
+ // Object.prototype.constructor. Remove this eventually
2210
+ function isBuffer(obj) {
2211
+ return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))
2212
+ }
2213
+
2214
+ function isFastBuffer (obj) {
2215
+ return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
2216
+ }
2217
+
2218
+ // For Node v0.10 support. Remove this eventually.
2219
+ function isSlowBuffer (obj) {
2220
+ return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))
2221
+ }
2222
+
2223
+ /*
2224
+ * Shared base64 decode helper for generated decode data.
2225
+ * Assumes global atob is available.
244
2226
  */
245
- function replaceCodePoint(codePoint) {
246
- var _a;
247
- if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
248
- return 0xfffd;
2227
+ function decodeBase64(input) {
2228
+ const binary =
2229
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
2230
+ typeof atob === "function"
2231
+ ? // Browser (and Node >=16)
2232
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
2233
+ atob(input)
2234
+ : // Older Node versions (<16)
2235
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
2236
+ typeof Buffer.from === "function"
2237
+ ? // eslint-disable-next-line n/no-unsupported-features/node-builtins
2238
+ Buffer.from(input, "base64").toString("binary")
2239
+ : // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
2240
+ new Buffer(input, "base64").toString("binary");
2241
+ const evenLength = binary.length & -2; // Round down to even length
2242
+ const out = new Uint16Array(evenLength / 2);
2243
+ for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
2244
+ const lo = binary.charCodeAt(index);
2245
+ const hi = binary.charCodeAt(index + 1);
2246
+ out[outIndex++] = lo | (hi << 8);
249
2247
  }
250
- return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
2248
+ return out;
251
2249
  }
252
2250
 
2251
+ // Generated using scripts/write-decode-map.ts
2252
+ const htmlDecodeTree = /* #__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
2253
+
2254
+ /**
2255
+ * Bit flags & masks for the binary trie encoding used for entity decoding.
2256
+ *
2257
+ * Bit layout (16 bits total):
2258
+ * 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)
2259
+ * 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').
2260
+ * If valueLength==0: compact run flag.
2261
+ * 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)
2262
+ * 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char
2263
+ */
2264
+ var BinTrieFlags;
2265
+ (function (BinTrieFlags) {
2266
+ BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
2267
+ BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13";
2268
+ BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
2269
+ BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
2270
+ })(BinTrieFlags || (BinTrieFlags = {}));
2271
+
253
2272
  var CharCodes;
254
2273
  (function (CharCodes) {
255
2274
  CharCodes[CharCodes["NUM"] = 35] = "NUM";
@@ -266,13 +2285,7 @@ var CharCodes;
266
2285
  CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
267
2286
  })(CharCodes || (CharCodes = {}));
268
2287
  /** Bit that needs to be set to convert an upper case ASCII character to lower case */
269
- const TO_LOWER_BIT = 0b100000;
270
- var BinTrieFlags;
271
- (function (BinTrieFlags) {
272
- BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
273
- BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
274
- BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
275
- })(BinTrieFlags || (BinTrieFlags = {}));
2288
+ const TO_LOWER_BIT = 32;
276
2289
  function isNumber(code) {
277
2290
  return code >= CharCodes.ZERO && code <= CharCodes.NINE;
278
2291
  }
@@ -317,6 +2330,7 @@ var DecodingMode;
317
2330
  class EntityDecoder {
318
2331
  constructor(
319
2332
  /** The tree used to decode entities. */
2333
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive
320
2334
  decodeTree,
321
2335
  /**
322
2336
  * The function that is called when a codepoint is decoded.
@@ -367,32 +2381,32 @@ class EntityDecoder {
367
2381
  * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
368
2382
  * entity is incomplete, and resume when the next string is written.
369
2383
  *
370
- * @param string The string containing the entity (or a continuation of the entity).
2384
+ * @param input The string containing the entity (or a continuation of the entity).
371
2385
  * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
372
2386
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
373
2387
  */
374
- write(str, offset) {
2388
+ write(input, offset) {
375
2389
  switch (this.state) {
376
2390
  case EntityDecoderState.EntityStart: {
377
- if (str.charCodeAt(offset) === CharCodes.NUM) {
2391
+ if (input.charCodeAt(offset) === CharCodes.NUM) {
378
2392
  this.state = EntityDecoderState.NumericStart;
379
2393
  this.consumed += 1;
380
- return this.stateNumericStart(str, offset + 1);
2394
+ return this.stateNumericStart(input, offset + 1);
381
2395
  }
382
2396
  this.state = EntityDecoderState.NamedEntity;
383
- return this.stateNamedEntity(str, offset);
2397
+ return this.stateNamedEntity(input, offset);
384
2398
  }
385
2399
  case EntityDecoderState.NumericStart: {
386
- return this.stateNumericStart(str, offset);
2400
+ return this.stateNumericStart(input, offset);
387
2401
  }
388
2402
  case EntityDecoderState.NumericDecimal: {
389
- return this.stateNumericDecimal(str, offset);
2403
+ return this.stateNumericDecimal(input, offset);
390
2404
  }
391
2405
  case EntityDecoderState.NumericHex: {
392
- return this.stateNumericHex(str, offset);
2406
+ return this.stateNumericHex(input, offset);
393
2407
  }
394
2408
  case EntityDecoderState.NamedEntity: {
395
- return this.stateNamedEntity(str, offset);
2409
+ return this.stateNamedEntity(input, offset);
396
2410
  }
397
2411
  }
398
2412
  }
@@ -401,78 +2415,71 @@ class EntityDecoder {
401
2415
  *
402
2416
  * Equivalent to the `Numeric character reference state` in the HTML spec.
403
2417
  *
404
- * @param str The string containing the entity (or a continuation of the entity).
2418
+ * @param input The string containing the entity (or a continuation of the entity).
405
2419
  * @param offset The current offset.
406
2420
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
407
2421
  */
408
- stateNumericStart(str, offset) {
409
- if (offset >= str.length) {
2422
+ stateNumericStart(input, offset) {
2423
+ if (offset >= input.length) {
410
2424
  return -1;
411
2425
  }
412
- if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
2426
+ if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
413
2427
  this.state = EntityDecoderState.NumericHex;
414
2428
  this.consumed += 1;
415
- return this.stateNumericHex(str, offset + 1);
2429
+ return this.stateNumericHex(input, offset + 1);
416
2430
  }
417
2431
  this.state = EntityDecoderState.NumericDecimal;
418
- return this.stateNumericDecimal(str, offset);
419
- }
420
- addToNumericResult(str, start, end, base) {
421
- if (start !== end) {
422
- const digitCount = end - start;
423
- this.result =
424
- this.result * Math.pow(base, digitCount) +
425
- parseInt(str.substr(start, digitCount), base);
426
- this.consumed += digitCount;
427
- }
2432
+ return this.stateNumericDecimal(input, offset);
428
2433
  }
429
2434
  /**
430
2435
  * Parses a hexadecimal numeric entity.
431
2436
  *
432
2437
  * Equivalent to the `Hexademical character reference state` in the HTML spec.
433
2438
  *
434
- * @param str The string containing the entity (or a continuation of the entity).
2439
+ * @param input The string containing the entity (or a continuation of the entity).
435
2440
  * @param offset The current offset.
436
2441
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
437
2442
  */
438
- stateNumericHex(str, offset) {
439
- const startIdx = offset;
440
- while (offset < str.length) {
441
- const char = str.charCodeAt(offset);
2443
+ stateNumericHex(input, offset) {
2444
+ while (offset < input.length) {
2445
+ const char = input.charCodeAt(offset);
442
2446
  if (isNumber(char) || isHexadecimalCharacter(char)) {
443
- offset += 1;
2447
+ // Convert hex digit to value (0-15); 'a'/'A' -> 10.
2448
+ const digit = char <= CharCodes.NINE
2449
+ ? char - CharCodes.ZERO
2450
+ : (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10;
2451
+ this.result = this.result * 16 + digit;
2452
+ this.consumed++;
2453
+ offset++;
444
2454
  }
445
2455
  else {
446
- this.addToNumericResult(str, startIdx, offset, 16);
447
2456
  return this.emitNumericEntity(char, 3);
448
2457
  }
449
2458
  }
450
- this.addToNumericResult(str, startIdx, offset, 16);
451
- return -1;
2459
+ return -1; // Incomplete entity
452
2460
  }
453
2461
  /**
454
2462
  * Parses a decimal numeric entity.
455
2463
  *
456
2464
  * Equivalent to the `Decimal character reference state` in the HTML spec.
457
2465
  *
458
- * @param str The string containing the entity (or a continuation of the entity).
2466
+ * @param input The string containing the entity (or a continuation of the entity).
459
2467
  * @param offset The current offset.
460
2468
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
461
2469
  */
462
- stateNumericDecimal(str, offset) {
463
- const startIdx = offset;
464
- while (offset < str.length) {
465
- const char = str.charCodeAt(offset);
2470
+ stateNumericDecimal(input, offset) {
2471
+ while (offset < input.length) {
2472
+ const char = input.charCodeAt(offset);
466
2473
  if (isNumber(char)) {
467
- offset += 1;
2474
+ this.result = this.result * 10 + (char - CharCodes.ZERO);
2475
+ this.consumed++;
2476
+ offset++;
468
2477
  }
469
2478
  else {
470
- this.addToNumericResult(str, startIdx, offset, 10);
471
2479
  return this.emitNumericEntity(char, 2);
472
2480
  }
473
2481
  }
474
- this.addToNumericResult(str, startIdx, offset, 10);
475
- return -1;
2482
+ return -1; // Incomplete entity
476
2483
  }
477
2484
  /**
478
2485
  * Validate and emit a numeric entity.
@@ -515,17 +2522,74 @@ class EntityDecoder {
515
2522
  *
516
2523
  * Equivalent to the `Named character reference state` in the HTML spec.
517
2524
  *
518
- * @param str The string containing the entity (or a continuation of the entity).
2525
+ * @param input The string containing the entity (or a continuation of the entity).
519
2526
  * @param offset The current offset.
520
2527
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
521
2528
  */
522
- stateNamedEntity(str, offset) {
2529
+ stateNamedEntity(input, offset) {
523
2530
  const { decodeTree } = this;
524
2531
  let current = decodeTree[this.treeIndex];
525
- // The mask is the number of bytes of the value, including the current byte.
2532
+ // The length is the number of bytes of the value, including the current byte.
526
2533
  let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
527
- for (; offset < str.length; offset++, this.excess++) {
528
- const char = str.charCodeAt(offset);
2534
+ while (offset < input.length) {
2535
+ // Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set.
2536
+ if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) {
2537
+ const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */
2538
+ const firstChar = current & BinTrieFlags.JUMP_TABLE;
2539
+ // Fast-fail if we don't have enough remaining input for the full run (incomplete entity)
2540
+ if (offset + runLength > input.length)
2541
+ return -1;
2542
+ // Verify first char
2543
+ if (input.charCodeAt(offset) !== firstChar) {
2544
+ return this.result === 0
2545
+ ? 0
2546
+ : this.emitNotTerminatedNamedEntity();
2547
+ }
2548
+ offset++;
2549
+ this.excess++;
2550
+ // Remaining characters after the first
2551
+ const remaining = runLength - 1;
2552
+ // Iterate over packed 2-char words
2553
+ for (let runPos = 1; runPos < runLength; runPos += 2) {
2554
+ const packedWord = decodeTree[this.treeIndex + 1 + ((runPos - 1) >> 1)];
2555
+ const low = packedWord & 0xff;
2556
+ if (input.charCodeAt(offset) !== low) {
2557
+ return this.result === 0
2558
+ ? 0
2559
+ : this.emitNotTerminatedNamedEntity();
2560
+ }
2561
+ offset++;
2562
+ this.excess++;
2563
+ const high = (packedWord >> 8) & 0xff;
2564
+ if (runPos + 1 < runLength) {
2565
+ if (input.charCodeAt(offset) !== high) {
2566
+ return this.result === 0
2567
+ ? 0
2568
+ : this.emitNotTerminatedNamedEntity();
2569
+ }
2570
+ offset++;
2571
+ this.excess++;
2572
+ }
2573
+ }
2574
+ this.treeIndex += 1 + ((remaining + 1) >> 1);
2575
+ current = decodeTree[this.treeIndex];
2576
+ valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
2577
+ }
2578
+ if (offset >= input.length)
2579
+ break;
2580
+ const char = input.charCodeAt(offset);
2581
+ /*
2582
+ * Implicit semicolon handling for nodes that require a semicolon but
2583
+ * don't have an explicit ';' branch stored in the trie. If we have
2584
+ * a value on the current node, it requires a semicolon, and the
2585
+ * current input character is a semicolon, emit the entity using the
2586
+ * current node (without descending further).
2587
+ */
2588
+ if (char === CharCodes.SEMI &&
2589
+ valueLength !== 0 &&
2590
+ (current & BinTrieFlags.FLAG13) !== 0) {
2591
+ return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
2592
+ }
529
2593
  this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
530
2594
  if (this.treeIndex < 0) {
531
2595
  return this.result === 0 ||
@@ -547,12 +2611,16 @@ class EntityDecoder {
547
2611
  return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
548
2612
  }
549
2613
  // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
550
- if (this.decodeMode !== DecodingMode.Strict) {
2614
+ if (this.decodeMode !== DecodingMode.Strict &&
2615
+ (current & BinTrieFlags.FLAG13) === 0) {
551
2616
  this.result = this.treeIndex;
552
2617
  this.consumed += this.excess;
553
2618
  this.excess = 0;
554
2619
  }
555
2620
  }
2621
+ // Increment offset & excess for next iteration
2622
+ offset++;
2623
+ this.excess++;
556
2624
  }
557
2625
  return -1;
558
2626
  }
@@ -581,7 +2649,8 @@ class EntityDecoder {
581
2649
  emitNamedEntityData(result, valueLength, consumed) {
582
2650
  const { decodeTree } = this;
583
2651
  this.emitCodePoint(valueLength === 1
584
- ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH
2652
+ ? decodeTree[result] &
2653
+ ~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)
585
2654
  : decodeTree[result + 1], consumed);
586
2655
  if (valueLength === 3) {
587
2656
  // For multi-byte values, we need to emit the second byte.
@@ -632,28 +2701,28 @@ class EntityDecoder {
632
2701
  * @returns A function that decodes entities in a string.
633
2702
  */
634
2703
  function getDecoder(decodeTree) {
635
- let ret = "";
636
- const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));
637
- return function decodeWithTrie(str, decodeMode) {
2704
+ let returnValue = "";
2705
+ const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));
2706
+ return function decodeWithTrie(input, decodeMode) {
638
2707
  let lastIndex = 0;
639
2708
  let offset = 0;
640
- while ((offset = str.indexOf("&", offset)) >= 0) {
641
- ret += str.slice(lastIndex, offset);
2709
+ while ((offset = input.indexOf("&", offset)) >= 0) {
2710
+ returnValue += input.slice(lastIndex, offset);
642
2711
  decoder.startEntity(decodeMode);
643
- const len = decoder.write(str,
2712
+ const length = decoder.write(input,
644
2713
  // Skip the "&"
645
2714
  offset + 1);
646
- if (len < 0) {
2715
+ if (length < 0) {
647
2716
  lastIndex = offset + decoder.end();
648
2717
  break;
649
2718
  }
650
- lastIndex = offset + len;
651
- // If `len` is 0, skip the current `&` and continue.
652
- offset = len === 0 ? lastIndex + 1 : lastIndex;
2719
+ lastIndex = offset + length;
2720
+ // If `length` is 0, skip the current `&` and continue.
2721
+ offset = length === 0 ? lastIndex + 1 : lastIndex;
653
2722
  }
654
- const result = ret + str.slice(lastIndex);
2723
+ const result = returnValue + input.slice(lastIndex);
655
2724
  // Make sure we don't keep a reference to the final string.
656
- ret = "";
2725
+ returnValue = "";
657
2726
  return result;
658
2727
  };
659
2728
  }
@@ -667,50 +2736,55 @@ function getDecoder(decodeTree) {
667
2736
  * @param char The current character.
668
2737
  * @returns The index of the next node, or -1 if no branch is taken.
669
2738
  */
670
- function determineBranch(decodeTree, current, nodeIdx, char) {
2739
+ function determineBranch(decodeTree, current, nodeIndex, char) {
671
2740
  const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
672
2741
  const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
673
2742
  // Case 1: Single branch encoded in jump offset
674
2743
  if (branchCount === 0) {
675
- return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
2744
+ return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
676
2745
  }
677
2746
  // Case 2: Multiple branches encoded in jump table
678
2747
  if (jumpOffset) {
679
2748
  const value = char - jumpOffset;
680
2749
  return value < 0 || value >= branchCount
681
2750
  ? -1
682
- : decodeTree[nodeIdx + value] - 1;
2751
+ : decodeTree[nodeIndex + value] - 1;
683
2752
  }
684
- // Case 3: Multiple branches encoded in dictionary
685
- // Binary search for the character.
686
- let lo = nodeIdx;
687
- let hi = lo + branchCount - 1;
2753
+ // Case 3: Multiple branches encoded in packed dictionary (two keys per uint16)
2754
+ const packedKeySlots = (branchCount + 1) >> 1;
2755
+ /*
2756
+ * Treat packed keys as a virtual sorted array of length `branchCount`.
2757
+ * Key(i) = low byte for even i, high byte for odd i in slot i>>1.
2758
+ */
2759
+ let lo = 0;
2760
+ let hi = branchCount - 1;
688
2761
  while (lo <= hi) {
689
2762
  const mid = (lo + hi) >>> 1;
690
- const midVal = decodeTree[mid];
691
- if (midVal < char) {
2763
+ const slot = mid >> 1;
2764
+ const packed = decodeTree[nodeIndex + slot];
2765
+ const midKey = (packed >> ((mid & 1) * 8)) & 0xff;
2766
+ if (midKey < char) {
692
2767
  lo = mid + 1;
693
2768
  }
694
- else if (midVal > char) {
2769
+ else if (midKey > char) {
695
2770
  hi = mid - 1;
696
2771
  }
697
2772
  else {
698
- return decodeTree[mid + branchCount];
2773
+ return decodeTree[nodeIndex + packedKeySlots + mid];
699
2774
  }
700
2775
  }
701
2776
  return -1;
702
2777
  }
703
- const htmlDecoder = getDecoder(htmlDecodeTree);
704
- getDecoder(xmlDecodeTree);
2778
+ const htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);
705
2779
  /**
706
2780
  * Decodes an HTML string.
707
2781
  *
708
- * @param str The string to decode.
2782
+ * @param htmlString The string to decode.
709
2783
  * @param mode The decoding mode.
710
2784
  * @returns The decoded string.
711
2785
  */
712
- function decodeHTML(str, mode = DecodingMode.Legacy) {
713
- return htmlDecoder(str, mode);
2786
+ function decodeHTML(htmlString, mode = DecodingMode.Legacy) {
2787
+ return htmlDecoder(htmlString, mode);
714
2788
  }
715
2789
 
716
2790
  const defaultDelimitersOpen = new Uint8Array([123, 123]);
@@ -820,14 +2894,28 @@ class Tokenizer {
820
2894
  getPos(index) {
821
2895
  let line = 1;
822
2896
  let column = index + 1;
823
- for (let i = this.newlines.length - 1; i >= 0; i--) {
824
- const newlineIndex = this.newlines[i];
825
- if (index > newlineIndex) {
826
- line = i + 2;
827
- column = index - newlineIndex;
828
- break;
2897
+ const length = this.newlines.length;
2898
+ let j = -1;
2899
+ if (length > 100) {
2900
+ let l = -1;
2901
+ let r = length;
2902
+ while (l + 1 < r) {
2903
+ const m = l + r >>> 1;
2904
+ this.newlines[m] < index ? l = m : r = m;
2905
+ }
2906
+ j = l;
2907
+ } else {
2908
+ for (let i = length - 1; i >= 0; i--) {
2909
+ if (index > this.newlines[i]) {
2910
+ j = i;
2911
+ break;
2912
+ }
829
2913
  }
830
2914
  }
2915
+ if (j >= 0) {
2916
+ line = j + 2;
2917
+ column = index - this.newlines[j];
2918
+ }
831
2919
  return {
832
2920
  column,
833
2921
  line,
@@ -1631,7 +3719,7 @@ const errorMessages = {
1631
3719
  [32]: `v-for has invalid expression.`,
1632
3720
  [33]: `<template v-for> key should be placed on the <template> tag.`,
1633
3721
  [34]: `v-bind is missing expression.`,
1634
- [52]: `v-bind with same-name shorthand only allows static argument.`,
3722
+ [53]: `v-bind with same-name shorthand only allows static argument.`,
1635
3723
  [35]: `v-on is missing expression.`,
1636
3724
  [36]: `Unexpected custom directive on <slot> outlet.`,
1637
3725
  [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,
@@ -1643,16 +3731,17 @@ const errorMessages = {
1643
3731
  [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
1644
3732
  [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.
1645
3733
  Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,
1646
- [45]: `Error parsing JavaScript expression: `,
1647
- [46]: `<KeepAlive> expects exactly one child component.`,
1648
- [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`,
3734
+ [45]: `v-model cannot be used on a const binding because it is not writable.`,
3735
+ [46]: `Error parsing JavaScript expression: `,
3736
+ [47]: `<KeepAlive> expects exactly one child component.`,
3737
+ [52]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`,
1649
3738
  // generic errors
1650
- [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
1651
- [48]: `ES module mode is not supported in this build of compiler.`,
1652
- [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
1653
- [50]: `"scopeId" option is only supported in module mode.`,
3739
+ [48]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
3740
+ [49]: `ES module mode is not supported in this build of compiler.`,
3741
+ [50]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
3742
+ [51]: `"scopeId" option is only supported in module mode.`,
1654
3743
  // just to fulfill types
1655
- [53]: ``
3744
+ [54]: ``
1656
3745
  };
1657
3746
 
1658
3747
  var lib = {};
@@ -16542,8 +18631,7 @@ function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [
16542
18631
  if (includeAll || isRefed && !isLocal) {
16543
18632
  onIdentifier(node, parent, parentStack, isRefed, isLocal);
16544
18633
  }
16545
- } else if (node.type === "ObjectProperty" && // eslint-disable-next-line no-restricted-syntax
16546
- (parent == null ? void 0 : parent.type) === "ObjectPattern") {
18634
+ } else if (node.type === "ObjectProperty" && (parent == null ? void 0 : parent.type) === "ObjectPattern") {
16547
18635
  node.inPattern = true;
16548
18636
  } else if (isFunctionType(node)) {
16549
18637
  if (node.scopeIds) {
@@ -17085,7 +19173,7 @@ function toValidAssetId(name, type) {
17085
19173
  })}`;
17086
19174
  }
17087
19175
  function filterNonCommentChildren(node) {
17088
- return node.children.filter((n) => n.type !== 3);
19176
+ return node.children.filter((n) => !isCommentOrWhitespace(n));
17089
19177
  }
17090
19178
  function hasSingleChild(node) {
17091
19179
  return filterNonCommentChildren(node).length === 1;
@@ -17746,7 +19834,7 @@ function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0
17746
19834
  }
17747
19835
  } catch (e) {
17748
19836
  exp.ast = false;
17749
- emitError(45, loc.start.offset, e.message);
19837
+ emitError(46, loc.start.offset, e.message);
17750
19838
  }
17751
19839
  }
17752
19840
  return exp;
@@ -18046,7 +20134,7 @@ var hasRequiredUtil;
18046
20134
  function requireUtil () {
18047
20135
  if (hasRequiredUtil) return util;
18048
20136
  hasRequiredUtil = 1;
18049
- (function (exports) {
20137
+ (function (exports$1) {
18050
20138
  /*
18051
20139
  * Copyright 2011 Mozilla Foundation and contributors
18052
20140
  * Licensed under the New BSD license. See LICENSE or:
@@ -18072,7 +20160,7 @@ function requireUtil () {
18072
20160
  throw new Error('"' + aName + '" is a required argument.');
18073
20161
  }
18074
20162
  }
18075
- exports.getArg = getArg;
20163
+ exports$1.getArg = getArg;
18076
20164
 
18077
20165
  var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
18078
20166
  var dataUrlRegexp = /^data:.+\,.+$/;
@@ -18090,7 +20178,7 @@ function requireUtil () {
18090
20178
  path: match[5]
18091
20179
  };
18092
20180
  }
18093
- exports.urlParse = urlParse;
20181
+ exports$1.urlParse = urlParse;
18094
20182
 
18095
20183
  function urlGenerate(aParsedUrl) {
18096
20184
  var url = '';
@@ -18112,7 +20200,7 @@ function requireUtil () {
18112
20200
  }
18113
20201
  return url;
18114
20202
  }
18115
- exports.urlGenerate = urlGenerate;
20203
+ exports$1.urlGenerate = urlGenerate;
18116
20204
 
18117
20205
  var MAX_CACHED_INPUTS = 32;
18118
20206
 
@@ -18171,7 +20259,7 @@ function requireUtil () {
18171
20259
  }
18172
20260
  path = url.path;
18173
20261
  }
18174
- var isAbsolute = exports.isAbsolute(path);
20262
+ var isAbsolute = exports$1.isAbsolute(path);
18175
20263
  // Split the path into parts between `/` characters. This is much faster than
18176
20264
  // using `.split(/\/+/g)`.
18177
20265
  var parts = [];
@@ -18222,7 +20310,7 @@ function requireUtil () {
18222
20310
  }
18223
20311
  return path;
18224
20312
  });
18225
- exports.normalize = normalize;
20313
+ exports$1.normalize = normalize;
18226
20314
 
18227
20315
  /**
18228
20316
  * Joins two paths/URLs.
@@ -18281,9 +20369,9 @@ function requireUtil () {
18281
20369
  }
18282
20370
  return joined;
18283
20371
  }
18284
- exports.join = join;
20372
+ exports$1.join = join;
18285
20373
 
18286
- exports.isAbsolute = function (aPath) {
20374
+ exports$1.isAbsolute = function (aPath) {
18287
20375
  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);
18288
20376
  };
18289
20377
 
@@ -18325,7 +20413,7 @@ function requireUtil () {
18325
20413
  // Make sure we add a "../" for each component we removed from the root.
18326
20414
  return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
18327
20415
  }
18328
- exports.relative = relative;
20416
+ exports$1.relative = relative;
18329
20417
 
18330
20418
  var supportsNullProto = (function () {
18331
20419
  var obj = Object.create(null);
@@ -18352,7 +20440,7 @@ function requireUtil () {
18352
20440
 
18353
20441
  return aStr;
18354
20442
  }
18355
- exports.toSetString = supportsNullProto ? identity : toSetString;
20443
+ exports$1.toSetString = supportsNullProto ? identity : toSetString;
18356
20444
 
18357
20445
  function fromSetString(aStr) {
18358
20446
  if (isProtoString(aStr)) {
@@ -18361,7 +20449,7 @@ function requireUtil () {
18361
20449
 
18362
20450
  return aStr;
18363
20451
  }
18364
- exports.fromSetString = supportsNullProto ? identity : fromSetString;
20452
+ exports$1.fromSetString = supportsNullProto ? identity : fromSetString;
18365
20453
 
18366
20454
  function isProtoString(s) {
18367
20455
  if (!s) {
@@ -18431,7 +20519,7 @@ function requireUtil () {
18431
20519
 
18432
20520
  return strcmp(mappingA.name, mappingB.name);
18433
20521
  }
18434
- exports.compareByOriginalPositions = compareByOriginalPositions;
20522
+ exports$1.compareByOriginalPositions = compareByOriginalPositions;
18435
20523
 
18436
20524
  function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {
18437
20525
  var cmp;
@@ -18458,7 +20546,7 @@ function requireUtil () {
18458
20546
 
18459
20547
  return strcmp(mappingA.name, mappingB.name);
18460
20548
  }
18461
- exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
20549
+ exports$1.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
18462
20550
 
18463
20551
  /**
18464
20552
  * Comparator between two mappings with deflated source and name indices where
@@ -18497,7 +20585,7 @@ function requireUtil () {
18497
20585
 
18498
20586
  return strcmp(mappingA.name, mappingB.name);
18499
20587
  }
18500
- exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
20588
+ exports$1.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
18501
20589
 
18502
20590
  function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {
18503
20591
  var cmp = mappingA.generatedColumn - mappingB.generatedColumn;
@@ -18522,7 +20610,7 @@ function requireUtil () {
18522
20610
 
18523
20611
  return strcmp(mappingA.name, mappingB.name);
18524
20612
  }
18525
- exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
20613
+ exports$1.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
18526
20614
 
18527
20615
  function strcmp(aStr1, aStr2) {
18528
20616
  if (aStr1 === aStr2) {
@@ -18576,7 +20664,7 @@ function requireUtil () {
18576
20664
 
18577
20665
  return strcmp(mappingA.name, mappingB.name);
18578
20666
  }
18579
- exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
20667
+ exports$1.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
18580
20668
 
18581
20669
  /**
18582
20670
  * Strip any JSON XSSI avoidance prefix from the string (as documented
@@ -18586,7 +20674,7 @@ function requireUtil () {
18586
20674
  function parseSourceMapInput(str) {
18587
20675
  return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
18588
20676
  }
18589
- exports.parseSourceMapInput = parseSourceMapInput;
20677
+ exports$1.parseSourceMapInput = parseSourceMapInput;
18590
20678
 
18591
20679
  /**
18592
20680
  * Compute the URL of a source given the the source root, the source's
@@ -18639,7 +20727,7 @@ function requireUtil () {
18639
20727
 
18640
20728
  return normalize(sourceURL);
18641
20729
  }
18642
- exports.computeSourceURL = computeSourceURL;
20730
+ exports$1.computeSourceURL = computeSourceURL;
18643
20731
  } (util));
18644
20732
  return util;
18645
20733
  }
@@ -19330,15 +21418,15 @@ var hasRequiredBinarySearch;
19330
21418
  function requireBinarySearch () {
19331
21419
  if (hasRequiredBinarySearch) return binarySearch;
19332
21420
  hasRequiredBinarySearch = 1;
19333
- (function (exports) {
21421
+ (function (exports$1) {
19334
21422
  /*
19335
21423
  * Copyright 2011 Mozilla Foundation and contributors
19336
21424
  * Licensed under the New BSD license. See LICENSE or:
19337
21425
  * http://opensource.org/licenses/BSD-3-Clause
19338
21426
  */
19339
21427
 
19340
- exports.GREATEST_LOWER_BOUND = 1;
19341
- exports.LEAST_UPPER_BOUND = 2;
21428
+ exports$1.GREATEST_LOWER_BOUND = 1;
21429
+ exports$1.LEAST_UPPER_BOUND = 2;
19342
21430
 
19343
21431
  /**
19344
21432
  * Recursive implementation of binary search.
@@ -19378,7 +21466,7 @@ function requireBinarySearch () {
19378
21466
 
19379
21467
  // The exact needle element was not found in this haystack. Determine if
19380
21468
  // we are in termination case (3) or (2) and return the appropriate thing.
19381
- if (aBias == exports.LEAST_UPPER_BOUND) {
21469
+ if (aBias == exports$1.LEAST_UPPER_BOUND) {
19382
21470
  return aHigh < aHaystack.length ? aHigh : -1;
19383
21471
  } else {
19384
21472
  return mid;
@@ -19392,7 +21480,7 @@ function requireBinarySearch () {
19392
21480
  }
19393
21481
 
19394
21482
  // we are in termination case (3) or (2) and return the appropriate thing.
19395
- if (aBias == exports.LEAST_UPPER_BOUND) {
21483
+ if (aBias == exports$1.LEAST_UPPER_BOUND) {
19396
21484
  return mid;
19397
21485
  } else {
19398
21486
  return aLow < 0 ? -1 : aLow;
@@ -19418,13 +21506,13 @@ function requireBinarySearch () {
19418
21506
  * searching for, respectively, if the exact element cannot be found.
19419
21507
  * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
19420
21508
  */
19421
- exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
21509
+ exports$1.search = function search(aNeedle, aHaystack, aCompare, aBias) {
19422
21510
  if (aHaystack.length === 0) {
19423
21511
  return -1;
19424
21512
  }
19425
21513
 
19426
21514
  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
19427
- aCompare, aBias || exports.GREATEST_LOWER_BOUND);
21515
+ aCompare, aBias || exports$1.GREATEST_LOWER_BOUND);
19428
21516
  if (index < 0) {
19429
21517
  return -1;
19430
21518
  }
@@ -21229,26 +23317,26 @@ var sourceMapExports = /*@__PURE__*/ requireSourceMap();
21229
23317
 
21230
23318
  const isLiteralWhitelisted = /* @__PURE__ */ makeMap("true,false,null,this");
21231
23319
 
21232
- const V_MODEL_RADIO = Symbol(`vModelRadio` );
21233
- const V_MODEL_CHECKBOX = Symbol(
23320
+ const V_MODEL_RADIO = /* @__PURE__ */ Symbol(`vModelRadio` );
23321
+ const V_MODEL_CHECKBOX = /* @__PURE__ */ Symbol(
21234
23322
  `vModelCheckbox`
21235
23323
  );
21236
- const V_MODEL_TEXT = Symbol(`vModelText` );
21237
- const V_MODEL_SELECT = Symbol(
23324
+ const V_MODEL_TEXT = /* @__PURE__ */ Symbol(`vModelText` );
23325
+ const V_MODEL_SELECT = /* @__PURE__ */ Symbol(
21238
23326
  `vModelSelect`
21239
23327
  );
21240
- const V_MODEL_DYNAMIC = Symbol(
23328
+ const V_MODEL_DYNAMIC = /* @__PURE__ */ Symbol(
21241
23329
  `vModelDynamic`
21242
23330
  );
21243
- const V_ON_WITH_MODIFIERS = Symbol(
23331
+ const V_ON_WITH_MODIFIERS = /* @__PURE__ */ Symbol(
21244
23332
  `vOnModifiersGuard`
21245
23333
  );
21246
- const V_ON_WITH_KEYS = Symbol(
23334
+ const V_ON_WITH_KEYS = /* @__PURE__ */ Symbol(
21247
23335
  `vOnKeysGuard`
21248
23336
  );
21249
- const V_SHOW = Symbol(`vShow` );
21250
- const TRANSITION = Symbol(`Transition` );
21251
- const TRANSITION_GROUP = Symbol(
23337
+ const V_SHOW = /* @__PURE__ */ Symbol(`vShow` );
23338
+ const TRANSITION = /* @__PURE__ */ Symbol(`Transition` );
23339
+ const TRANSITION_GROUP = /* @__PURE__ */ Symbol(
21252
23340
  `TransitionGroup`
21253
23341
  );
21254
23342
  registerRuntimeHelpers({
@@ -21319,19 +23407,19 @@ function createDOMCompilerError(code, loc) {
21319
23407
  );
21320
23408
  }
21321
23409
  const DOMErrorMessages = {
21322
- [53]: `v-html is missing expression.`,
21323
- [54]: `v-html will override element children.`,
21324
- [55]: `v-text is missing expression.`,
21325
- [56]: `v-text will override element children.`,
21326
- [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
21327
- [58]: `v-model argument is not supported on plain elements.`,
21328
- [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
21329
- [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
21330
- [61]: `v-show is missing expression.`,
21331
- [62]: `<Transition> expects exactly one child element or component.`,
21332
- [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`,
23410
+ [54]: `v-html is missing expression.`,
23411
+ [55]: `v-html will override element children.`,
23412
+ [56]: `v-text is missing expression.`,
23413
+ [57]: `v-text will override element children.`,
23414
+ [58]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
23415
+ [59]: `v-model argument is not supported on plain elements.`,
23416
+ [60]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
23417
+ [61]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
23418
+ [62]: `v-show is missing expression.`,
23419
+ [63]: `<Transition> expects exactly one child element or component.`,
23420
+ [64]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`,
21333
23421
  // just to fulfill types
21334
- [64]: ``
23422
+ [65]: ``
21335
23423
  };
21336
23424
 
21337
23425
  const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);
@@ -21387,7 +23475,7 @@ function postTransformTransition(node, onError, hasMultipleChildren = defaultHas
21387
23475
  }
21388
23476
  if (hasMultipleChildren(node)) {
21389
23477
  onError(
21390
- createDOMCompilerError(62, {
23478
+ createDOMCompilerError(63, {
21391
23479
  start: node.children[0].loc.start,
21392
23480
  end: node.children[node.children.length - 1].loc.end,
21393
23481
  source: ""
@@ -21723,6 +23811,8 @@ class TransformContext {
21723
23811
  this.node = node;
21724
23812
  this.selfName = null;
21725
23813
  this.parent = null;
23814
+ // cached parent that skips template tags
23815
+ this.effectiveParent = null;
21726
23816
  this.index = 0;
21727
23817
  this.block = this.ir.block;
21728
23818
  this.template = "";
@@ -21735,6 +23825,12 @@ class TransformContext {
21735
23825
  this.component = this.ir.component;
21736
23826
  this.directive = this.ir.directive;
21737
23827
  this.slots = [];
23828
+ // whether this node is the last effective child of its parent
23829
+ // (all siblings after it are components, which don't appear in HTML template)
23830
+ this.isLastEffectiveChild = true;
23831
+ // whether this node is on the rightmost path of the tree
23832
+ // (all ancestors are also last effective children)
23833
+ this.isOnRightmostPath = true;
21738
23834
  this.globalId = 0;
21739
23835
  this.nextIdMap = null;
21740
23836
  this.increaseId = () => {
@@ -21815,15 +23911,31 @@ class TransformContext {
21815
23911
  this.block.operation.push(...node);
21816
23912
  }
21817
23913
  create(node, index) {
23914
+ let effectiveParent = this;
23915
+ while (effectiveParent && effectiveParent.node.type === 1 && effectiveParent.node.tagType === 3) {
23916
+ effectiveParent = effectiveParent.parent;
23917
+ }
23918
+ const isLastEffectiveChild = this.isEffectivelyLastChild(index);
23919
+ const isOnRightmostPath = this.isOnRightmostPath && isLastEffectiveChild;
21818
23920
  return Object.assign(Object.create(TransformContext.prototype), this, {
21819
23921
  node,
21820
23922
  parent: this,
21821
23923
  index,
21822
23924
  template: "",
21823
23925
  childrenTemplate: [],
21824
- dynamic: newDynamic()
23926
+ dynamic: newDynamic(),
23927
+ effectiveParent,
23928
+ isLastEffectiveChild,
23929
+ isOnRightmostPath
21825
23930
  });
21826
23931
  }
23932
+ isEffectivelyLastChild(index) {
23933
+ const children = this.node.children;
23934
+ if (!children) return true;
23935
+ return children.every(
23936
+ (c, i) => i <= index || c.type === 1 && c.tagType === 1
23937
+ );
23938
+ }
21827
23939
  }
21828
23940
  const defaultOptions = {
21829
23941
  filename: "",
@@ -21874,7 +23986,7 @@ function transformNode(context) {
21874
23986
  for (const nodeTransform of nodeTransforms) {
21875
23987
  const onExit = nodeTransform(node, context);
21876
23988
  if (onExit) {
21877
- if (isArray(onExit)) {
23989
+ if (isArray$1(onExit)) {
21878
23990
  exitFns.push(...onExit);
21879
23991
  } else {
21880
23992
  exitFns.push(onExit);
@@ -21944,10 +24056,10 @@ const IMPORT_EXPR_RE = new RegExp(
21944
24056
  `${IMPORT_EXP_START}(.*?)${IMPORT_EXP_END}`,
21945
24057
  "g"
21946
24058
  );
21947
- const NEWLINE = Symbol(`newline` );
21948
- const LF = Symbol(`line feed` );
21949
- const INDENT_START = Symbol(`indent start` );
21950
- const INDENT_END = Symbol(`indent end` );
24059
+ const NEWLINE = /* @__PURE__ */ Symbol(`newline` );
24060
+ const LF = /* @__PURE__ */ Symbol(`line feed` );
24061
+ const INDENT_START = /* @__PURE__ */ Symbol(`indent start` );
24062
+ const INDENT_END = /* @__PURE__ */ Symbol(`indent end` );
21951
24063
  function buildCodeFragment(...frag) {
21952
24064
  const push = frag.push.bind(frag);
21953
24065
  const unshift = frag.unshift.bind(frag);
@@ -21971,7 +24083,7 @@ function genMulti([left, right, seg, placeholder], ...frags) {
21971
24083
  push(right);
21972
24084
  return frag;
21973
24085
  function push(fn) {
21974
- if (!isArray(fn)) fn = [fn];
24086
+ if (!isArray$1(fn)) fn = [fn];
21975
24087
  frag.push(...fn);
21976
24088
  }
21977
24089
  }
@@ -21988,7 +24100,7 @@ const DELIMITERS_OBJECT_NEWLINE = [
21988
24100
  [",", NEWLINE]
21989
24101
  ];
21990
24102
  function genCall(name, ...frags) {
21991
- const hasPlaceholder = isArray(name);
24103
+ const hasPlaceholder = isArray$1(name);
21992
24104
  const fnName = hasPlaceholder ? name[0] : name;
21993
24105
  const placeholder = hasPlaceholder ? name[1] : "null";
21994
24106
  return [fnName, ...genMulti(["(", ")", ", ", placeholder], ...frags)];
@@ -22363,6 +24475,10 @@ function analyzeExpressions(expressions) {
22363
24475
  end: id.end
22364
24476
  });
22365
24477
  });
24478
+ const parentOfMemberExp = parentStack[parentStack.length - 2];
24479
+ if (parentOfMemberExp && isCallExpression(parentOfMemberExp)) {
24480
+ return;
24481
+ }
22366
24482
  registerVariable(
22367
24483
  memberExp,
22368
24484
  exp,
@@ -22579,6 +24695,8 @@ function extractMemberExpression(exp, onIdentifier) {
22579
24695
  return `${extractMemberExpression(exp.left, onIdentifier)} ${exp.operator} ${extractMemberExpression(exp.right, onIdentifier)}`;
22580
24696
  case "CallExpression":
22581
24697
  return `${extractMemberExpression(exp.callee, onIdentifier)}(${exp.arguments.map((arg) => extractMemberExpression(arg, onIdentifier)).join(", ")})`;
24698
+ case "OptionalCallExpression":
24699
+ return `${extractMemberExpression(exp.callee, onIdentifier)}?.(${exp.arguments.map((arg) => extractMemberExpression(arg, onIdentifier)).join(", ")})`;
22582
24700
  case "MemberExpression":
22583
24701
  // foo[bar.baz]
22584
24702
  case "OptionalMemberExpression":
@@ -22591,6 +24709,9 @@ function extractMemberExpression(exp, onIdentifier) {
22591
24709
  return "";
22592
24710
  }
22593
24711
  }
24712
+ const isCallExpression = (node) => {
24713
+ return node.type === "CallExpression" || node.type === "OptionalCallExpression";
24714
+ };
22594
24715
  const isMemberExpression = (node) => {
22595
24716
  return node.type === "MemberExpression" || node.type === "OptionalMemberExpression" || node.type === "TSNonNullExpression";
22596
24717
  };
@@ -22658,7 +24779,7 @@ function genSetDynamicEvents(oper, context) {
22658
24779
  )
22659
24780
  ];
22660
24781
  }
22661
- function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] }, extraWrap = false) {
24782
+ function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] }, asComponentProp = false, extraWrap = false) {
22662
24783
  let handlerExp = [];
22663
24784
  if (values) {
22664
24785
  values.forEach((value, index) => {
@@ -22666,7 +24787,7 @@ function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] },
22666
24787
  if (value && value.content.trim()) {
22667
24788
  if (isMemberExpression$1(value, context.options)) {
22668
24789
  exp = genExpression(value, context);
22669
- if (!isConstantBinding(value, context) && !extraWrap) {
24790
+ if (!isConstantBinding(value, context) && !asComponentProp) {
22670
24791
  const isTSNode = value.ast && TS_NODE_TYPES.includes(value.ast.type);
22671
24792
  exp = [
22672
24793
  `e => `,
@@ -23196,7 +25317,7 @@ function genPropKey({ key: node, modifier, runtimeCamelize, handler, handlerModi
23196
25317
  const { helper } = context;
23197
25318
  const handlerModifierPostfix = handlerModifiers && handlerModifiers.options ? handlerModifiers.options.map(capitalize).join("") : "";
23198
25319
  if (node.isStatic) {
23199
- const keyName = (handler ? toHandlerKey(node.content) : node.content) + handlerModifierPostfix;
25320
+ const keyName = (handler ? toHandlerKey(camelize(node.content)) : node.content) + handlerModifierPostfix;
23200
25321
  return [
23201
25322
  [
23202
25323
  isSimpleIdentifier(keyName) ? keyName : JSON.stringify(keyName),
@@ -23449,7 +25570,7 @@ function genCreateComponent(operation, context) {
23449
25570
  const rawProps = context.withId(() => genRawProps(props, context), ids);
23450
25571
  const inlineHandlers = handlers.reduce(
23451
25572
  (acc, { name, value }) => {
23452
- const handler = genEventHandler(context, [value], void 0, false);
25573
+ const handler = genEventHandler(context, [value], void 0, false, false);
23453
25574
  return [...acc, `const ${name} = `, ...handler, NEWLINE];
23454
25575
  },
23455
25576
  []
@@ -23507,7 +25628,7 @@ function processInlineHandlers(props, context) {
23507
25628
  const ids = /* @__PURE__ */ Object.create(null);
23508
25629
  const handlers = [];
23509
25630
  const staticProps = props[0];
23510
- if (isArray(staticProps)) {
25631
+ if (isArray$1(staticProps)) {
23511
25632
  for (let i = 0; i < staticProps.length; i++) {
23512
25633
  const prop = staticProps[i];
23513
25634
  if (!prop.handler) continue;
@@ -23529,7 +25650,7 @@ function processInlineHandlers(props, context) {
23529
25650
  }
23530
25651
  function genRawProps(props, context) {
23531
25652
  const staticProps = props[0];
23532
- if (isArray(staticProps)) {
25653
+ if (isArray$1(staticProps)) {
23533
25654
  if (!staticProps.length && props.length === 1) {
23534
25655
  return;
23535
25656
  }
@@ -23543,7 +25664,89 @@ function genRawProps(props, context) {
23543
25664
  }
23544
25665
  }
23545
25666
  function genStaticProps(props, context, dynamicProps) {
23546
- const args = props.map((prop) => genProp(prop, context, true));
25667
+ const args = [];
25668
+ const handlerGroups = /* @__PURE__ */ new Map();
25669
+ const ensureHandlerGroup = (keyName, keyFrag) => {
25670
+ let group = handlerGroups.get(keyName);
25671
+ if (!group) {
25672
+ const index = args.length;
25673
+ args.push([]);
25674
+ group = { keyFrag, handlers: [], index };
25675
+ handlerGroups.set(keyName, group);
25676
+ }
25677
+ return group;
25678
+ };
25679
+ const addHandler = (keyName, keyFrag, handlerExp) => {
25680
+ ensureHandlerGroup(keyName, keyFrag).handlers.push(handlerExp);
25681
+ };
25682
+ const getStaticPropKeyName = (prop) => {
25683
+ if (!prop.key.isStatic) return;
25684
+ const handlerModifierPostfix = prop.handlerModifiers && prop.handlerModifiers.options ? prop.handlerModifiers.options.map((m) => m.charAt(0).toUpperCase() + m.slice(1)).join("") : "";
25685
+ const keyName = (prop.handler ? toHandlerKey(camelize(prop.key.content)) : prop.key.content) + handlerModifierPostfix;
25686
+ return keyName;
25687
+ };
25688
+ for (const prop of props) {
25689
+ if (prop.handler) {
25690
+ const keyName = getStaticPropKeyName(prop);
25691
+ if (!keyName) {
25692
+ args.push(genProp(prop, context, true));
25693
+ continue;
25694
+ }
25695
+ const keyFrag = genPropKey(prop, context);
25696
+ const hasModifiers = !!prop.handlerModifiers && (prop.handlerModifiers.keys.length > 0 || prop.handlerModifiers.nonKeys.length > 0);
25697
+ if (hasModifiers || prop.values.length <= 1) {
25698
+ const handlerExp = genEventHandler(
25699
+ context,
25700
+ prop.values,
25701
+ prop.handlerModifiers,
25702
+ true,
25703
+ false
25704
+ );
25705
+ addHandler(keyName, keyFrag, handlerExp);
25706
+ } else {
25707
+ for (const value of prop.values) {
25708
+ const handlerExp = genEventHandler(
25709
+ context,
25710
+ [value],
25711
+ prop.handlerModifiers,
25712
+ true,
25713
+ false
25714
+ );
25715
+ addHandler(keyName, keyFrag, handlerExp);
25716
+ }
25717
+ }
25718
+ continue;
25719
+ }
25720
+ args.push(genProp(prop, context, true));
25721
+ if (prop.model) {
25722
+ if (prop.key.isStatic) {
25723
+ const keyName = `onUpdate:${camelize(prop.key.content)}`;
25724
+ const keyFrag = [JSON.stringify(keyName)];
25725
+ addHandler(keyName, keyFrag, genModelHandler(prop.values[0], context));
25726
+ } else {
25727
+ const keyFrag = [
25728
+ '["onUpdate:" + ',
25729
+ ...genExpression(prop.key, context),
25730
+ "]"
25731
+ ];
25732
+ args.push([
25733
+ ...keyFrag,
25734
+ ": () => ",
25735
+ ...genModelHandler(prop.values[0], context)
25736
+ ]);
25737
+ }
25738
+ const { key, modelModifiers } = prop;
25739
+ if (modelModifiers && modelModifiers.length) {
25740
+ const modifiersKey = key.isStatic ? [getModifierPropName(key.content)] : ["[", ...genExpression(key, context), ' + "Modifiers"]'];
25741
+ const modifiersVal = genDirectiveModifiers(modelModifiers);
25742
+ args.push([...modifiersKey, `: () => ({ ${modifiersVal} })`]);
25743
+ }
25744
+ }
25745
+ }
25746
+ for (const group of handlerGroups.values()) {
25747
+ const handlerValue = group.handlers.length > 1 ? genMulti(DELIMITERS_ARRAY_NEWLINE, ...group.handlers) : group.handlers[0];
25748
+ args[group.index] = [...group.keyFrag, ": () => ", ...handlerValue];
25749
+ }
23547
25750
  if (dynamicProps) {
23548
25751
  args.push([`$: `, ...dynamicProps]);
23549
25752
  }
@@ -23557,17 +25760,52 @@ function genDynamicProps(props, context) {
23557
25760
  const frags = [];
23558
25761
  for (const p of props) {
23559
25762
  let expr;
23560
- if (isArray(p)) {
25763
+ if (isArray$1(p)) {
23561
25764
  if (p.length) {
23562
25765
  frags.push(genStaticProps(p, context));
23563
25766
  }
23564
25767
  continue;
23565
25768
  } else {
23566
- if (p.kind === 1)
23567
- expr = genMulti(DELIMITERS_OBJECT, genProp(p, context));
23568
- else {
25769
+ if (p.kind === 1) {
25770
+ if (p.model) {
25771
+ const entries = [genProp(p, context)];
25772
+ const updateKey = p.key.isStatic ? [
25773
+ JSON.stringify(`onUpdate:${camelize(p.key.content)}`)
25774
+ ] : [
25775
+ '["onUpdate:" + ',
25776
+ ...genExpression(p.key, context),
25777
+ "]"
25778
+ ];
25779
+ entries.push([
25780
+ ...updateKey,
25781
+ ": () => ",
25782
+ ...genModelHandler(p.values[0], context)
25783
+ ]);
25784
+ const { modelModifiers } = p;
25785
+ if (modelModifiers && modelModifiers.length) {
25786
+ const modifiersKey = p.key.isStatic ? [getModifierPropName(p.key.content)] : [
25787
+ "[",
25788
+ ...genExpression(p.key, context),
25789
+ ' + "Modifiers"]'
25790
+ ];
25791
+ const modifiersVal = genDirectiveModifiers(modelModifiers);
25792
+ entries.push([...modifiersKey, `: () => ({ ${modifiersVal} })`]);
25793
+ }
25794
+ expr = genMulti(DELIMITERS_OBJECT_NEWLINE, ...entries);
25795
+ } else {
25796
+ expr = genMulti(DELIMITERS_OBJECT, genProp(p, context));
25797
+ }
25798
+ } else {
23569
25799
  expr = genExpression(p.value, context);
23570
- if (p.handler) expr = genCall(helper("toHandlers"), expr);
25800
+ if (p.handler)
25801
+ expr = genCall(
25802
+ helper("toHandlers"),
25803
+ expr,
25804
+ `false`,
25805
+ // preserveCaseIfNecessary: false, not needed for component
25806
+ `true`
25807
+ // wrap handler values in functions
25808
+ );
23571
25809
  }
23572
25810
  }
23573
25811
  frags.push(["() => (", ...expr, ")"]);
@@ -23585,23 +25823,11 @@ function genProp(prop, context, isStatic) {
23585
25823
  context,
23586
25824
  prop.values,
23587
25825
  prop.handlerModifiers,
25826
+ true,
23588
25827
  true
23589
- ) : isStatic ? ["() => (", ...values, ")"] : values,
23590
- ...prop.model ? [...genModelEvent(prop, context), ...genModelModifiers(prop, context)] : []
25828
+ ) : isStatic ? ["() => (", ...values, ")"] : values
23591
25829
  ];
23592
25830
  }
23593
- function genModelEvent(prop, context) {
23594
- const name = prop.key.isStatic ? [JSON.stringify(`onUpdate:${camelize(prop.key.content)}`)] : ['["onUpdate:" + ', ...genExpression(prop.key, context), "]"];
23595
- const handler = genModelHandler(prop.values[0], context);
23596
- return [",", NEWLINE, ...name, ": () => ", ...handler];
23597
- }
23598
- function genModelModifiers(prop, context) {
23599
- const { key, modelModifiers } = prop;
23600
- if (!modelModifiers || !modelModifiers.length) return [];
23601
- const modifiersKey = key.isStatic ? [getModifierPropName(key.content)] : ["[", ...genExpression(key, context), ' + "Modifiers"]'];
23602
- const modifiersVal = genDirectiveModifiers(modelModifiers);
23603
- return [",", NEWLINE, ...modifiersKey, `: () => ({ ${modifiersVal} })`];
23604
- }
23605
25831
  function genRawSlots(slots, context) {
23606
25832
  if (!slots.length) return;
23607
25833
  const staticSlots = slots[0];
@@ -24040,7 +26266,13 @@ function genChildren(dynamic, context, pushBlock, from = `n${dynamic.id}`) {
24040
26266
  }
24041
26267
  } else {
24042
26268
  if (elementIndex === 0) {
24043
- pushBlock(...genCall(helper("child"), from, String(logicalIndex)));
26269
+ pushBlock(
26270
+ ...genCall(
26271
+ helper("child"),
26272
+ from,
26273
+ logicalIndex !== 0 ? String(logicalIndex) : void 0
26274
+ )
26275
+ );
24044
26276
  } else {
24045
26277
  let init = genCall(helper("child"), from);
24046
26278
  if (elementIndex === 1) {
@@ -24459,7 +26691,10 @@ const transformElement = (node, context) => {
24459
26691
  propsResult,
24460
26692
  singleRoot,
24461
26693
  context,
24462
- getEffectIndex
26694
+ getEffectIndex,
26695
+ // Root-level elements generate dedicated templates
26696
+ // so closing tags can be omitted
26697
+ context.root === context.effectiveParent || canOmitEndTag(node, context)
24463
26698
  );
24464
26699
  }
24465
26700
  if (parentSlots) {
@@ -24467,6 +26702,17 @@ const transformElement = (node, context) => {
24467
26702
  }
24468
26703
  };
24469
26704
  };
26705
+ function canOmitEndTag(node, context) {
26706
+ const { block, parent } = context;
26707
+ if (!parent) return false;
26708
+ if (block !== parent.block) {
26709
+ return true;
26710
+ }
26711
+ if (isFormattingTag(node.tag) || parent.node.type === 1 && node.tag === parent.node.tag) {
26712
+ return context.isOnRightmostPath;
26713
+ }
26714
+ return context.isLastEffectiveChild;
26715
+ }
24470
26716
  function isSingleRoot(context) {
24471
26717
  if (context.inVFor) {
24472
26718
  return false;
@@ -24556,7 +26802,8 @@ function resolveSetupReference(name, context) {
24556
26802
  return bindings[name] ? name : bindings[camelName] ? camelName : bindings[PascalName] ? PascalName : void 0;
24557
26803
  }
24558
26804
  const dynamicKeys = ["indeterminate"];
24559
- function transformNativeElement(node, propsResult, singleRoot, context, getEffectIndex) {
26805
+ const NEEDS_QUOTES_RE = /[\s"'`=<>]/;
26806
+ function transformNativeElement(node, propsResult, singleRoot, context, getEffectIndex, omitEndTag) {
24560
26807
  const { tag } = node;
24561
26808
  const { scopeId } = context.options;
24562
26809
  let template = "";
@@ -24576,16 +26823,24 @@ function transformNativeElement(node, propsResult, singleRoot, context, getEffec
24576
26823
  getEffectIndex
24577
26824
  );
24578
26825
  } else {
26826
+ let prevWasQuoted = false;
24579
26827
  for (const prop of propsResult[1]) {
24580
26828
  const { key, values } = prop;
24581
26829
  if (context.imports.some(
24582
26830
  (imported) => values[0].content.includes(imported.exp.content)
24583
26831
  )) {
24584
- template += ` ${key.content}="${IMPORT_EXP_START}${values[0].content}${IMPORT_EXP_END}"`;
26832
+ if (!prevWasQuoted) template += ` `;
26833
+ template += `${key.content}="${IMPORT_EXP_START}${values[0].content}${IMPORT_EXP_END}"`;
26834
+ prevWasQuoted = true;
24585
26835
  } else if (key.isStatic && values.length === 1 && (values[0].isStatic || values[0].content === "''") && !dynamicKeys.includes(key.content)) {
24586
- template += ` ${key.content}`;
24587
- if (values[0].content)
24588
- template += `="${values[0].content === "''" ? "" : values[0].content}"`;
26836
+ if (!prevWasQuoted) template += ` `;
26837
+ const value = values[0].content === "''" ? "" : values[0].content;
26838
+ template += key.content;
26839
+ if (value) {
26840
+ template += (prevWasQuoted = NEEDS_QUOTES_RE.test(value)) ? `="${value.replace(/"/g, "&quot;")}"` : `=${value}`;
26841
+ } else {
26842
+ prevWasQuoted = false;
26843
+ }
24589
26844
  } else {
24590
26845
  dynamicProps.push(key.content);
24591
26846
  context.registerEffect(
@@ -24602,7 +26857,7 @@ function transformNativeElement(node, propsResult, singleRoot, context, getEffec
24602
26857
  }
24603
26858
  }
24604
26859
  template += `>` + context.childrenTemplate.join("");
24605
- if (!isVoidTag(tag)) {
26860
+ if (!isVoidTag(tag) && !omitEndTag) {
24606
26861
  template += `</${tag}>`;
24607
26862
  }
24608
26863
  if (singleRoot) {
@@ -24767,13 +27022,13 @@ const transformVHtml = (dir, node, context) => {
24767
27022
  let { exp, loc } = dir;
24768
27023
  if (!exp) {
24769
27024
  context.options.onError(
24770
- createDOMCompilerError(53, loc)
27025
+ createDOMCompilerError(54, loc)
24771
27026
  );
24772
27027
  exp = EMPTY_EXPRESSION;
24773
27028
  }
24774
27029
  if (node.children.length) {
24775
27030
  context.options.onError(
24776
- createDOMCompilerError(54, loc)
27031
+ createDOMCompilerError(55, loc)
24777
27032
  );
24778
27033
  context.childrenTemplate.length = 0;
24779
27034
  }
@@ -24789,13 +27044,13 @@ const transformVText = (dir, node, context) => {
24789
27044
  let { exp, loc } = dir;
24790
27045
  if (!exp) {
24791
27046
  context.options.onError(
24792
- createDOMCompilerError(55, loc)
27047
+ createDOMCompilerError(56, loc)
24793
27048
  );
24794
27049
  exp = EMPTY_EXPRESSION;
24795
27050
  }
24796
27051
  if (node.children.length) {
24797
27052
  context.options.onError(
24798
- createDOMCompilerError(56, loc)
27053
+ createDOMCompilerError(57, loc)
24799
27054
  );
24800
27055
  context.childrenTemplate.length = 0;
24801
27056
  }
@@ -24828,7 +27083,7 @@ function normalizeBindShorthand(arg, context) {
24828
27083
  if (arg.type !== 4 || !arg.isStatic) {
24829
27084
  context.options.onError(
24830
27085
  createCompilerError(
24831
- 52,
27086
+ 53,
24832
27087
  arg.loc
24833
27088
  )
24834
27089
  );
@@ -24942,7 +27197,7 @@ const transformVShow = (dir, node, context) => {
24942
27197
  const { exp, loc } = dir;
24943
27198
  if (!exp) {
24944
27199
  context.options.onError(
24945
- createDOMCompilerError(61, loc)
27200
+ createDOMCompilerError(62, loc)
24946
27201
  );
24947
27202
  return;
24948
27203
  }
@@ -25141,7 +27396,7 @@ const transformVModel = (dir, node, context) => {
25141
27396
  if (dir.arg)
25142
27397
  context.options.onError(
25143
27398
  createDOMCompilerError(
25144
- 58,
27399
+ 59,
25145
27400
  dir.arg.loc
25146
27401
  )
25147
27402
  );
@@ -25166,7 +27421,7 @@ const transformVModel = (dir, node, context) => {
25166
27421
  modelType = void 0;
25167
27422
  context.options.onError(
25168
27423
  createDOMCompilerError(
25169
- 59,
27424
+ 60,
25170
27425
  dir.loc
25171
27426
  )
25172
27427
  );
@@ -25189,7 +27444,7 @@ const transformVModel = (dir, node, context) => {
25189
27444
  } else {
25190
27445
  context.options.onError(
25191
27446
  createDOMCompilerError(
25192
- 57,
27447
+ 58,
25193
27448
  dir.loc
25194
27449
  )
25195
27450
  );
@@ -25208,7 +27463,7 @@ const transformVModel = (dir, node, context) => {
25208
27463
  if (value && isStaticArgOf(value.arg, "value")) {
25209
27464
  context.options.onError(
25210
27465
  createDOMCompilerError(
25211
- 60,
27466
+ 61,
25212
27467
  value.loc
25213
27468
  )
25214
27469
  );