@qwickapps/react-framework 1.9.0 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -4
- package/dist/components/forms/FormField.d.ts.map +1 -1
- package/dist/components/forms/FormSelect.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +2179 -1517
- package/dist/index.js +2179 -1517
- package/dist/palettes/manifest.json +22 -22
- package/dist/palettes/{palette-boutique.1.8.0.css → palette-boutique.1.9.2.css} +29 -29
- package/dist/palettes/{palette-boutique.1.8.0.min.css → palette-boutique.1.9.2.min.css} +1 -1
- package/dist/palettes/palette-boutique.latest.css +29 -29
- package/dist/palettes/palette-boutique.latest.min.css +1 -1
- package/dist/schemas/FormFieldSchema.d.ts +0 -1
- package/dist/schemas/FormFieldSchema.d.ts.map +1 -1
- package/dist/schemas/FormSelectSchema.d.ts +0 -1
- package/dist/schemas/FormSelectSchema.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Html.tsx +1 -7
- package/src/components/Logo.tsx +1 -1
- package/src/components/QwickApp.css +2 -2
- package/src/components/blocks/index.ts +0 -2
- package/src/components/forms/FormField.tsx +0 -6
- package/src/components/forms/FormSelect.tsx +0 -6
- package/src/components/layout/GridCellWrapper.tsx +4 -4
- package/src/palettes/PaletteBoutique.css +29 -29
- package/src/schemas/FormFieldSchema.ts +0 -11
- package/src/schemas/FormSelectSchema.ts +0 -11
- package/src/schemas/transformers/ReactNodeTransformer.ts +1 -1
- package/dist/palettes/palette-autumn.1.8.1.css +0 -174
- package/dist/palettes/palette-autumn.1.8.1.min.css +0 -1
- package/dist/palettes/palette-boutique.1.8.1.css +0 -176
- package/dist/palettes/palette-boutique.1.8.1.min.css +0 -1
- package/dist/palettes/palette-cosmic.1.8.1.css +0 -174
- package/dist/palettes/palette-cosmic.1.8.1.min.css +0 -1
- package/dist/palettes/palette-default.1.8.1.css +0 -178
- package/dist/palettes/palette-default.1.8.1.min.css +0 -1
- package/dist/palettes/palette-ocean.1.8.1.css +0 -174
- package/dist/palettes/palette-ocean.1.8.1.min.css +0 -1
- package/dist/palettes/palette-spring.1.8.1.css +0 -168
- package/dist/palettes/palette-spring.1.8.1.min.css +0 -1
- package/dist/palettes/palette-winter.1.8.1.css +0 -174
- package/dist/palettes/palette-winter.1.8.1.min.css +0 -1
- package/src/components/blocks/HeroSlideshow.tsx +0 -156
- package/src/stories/HeroSlideshow.stories.tsx +0 -164
- /package/dist/palettes/{palette-autumn.1.8.0.css → palette-autumn.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-autumn.1.8.0.min.css → palette-autumn.1.9.2.min.css} +0 -0
- /package/dist/palettes/{palette-cosmic.1.8.0.css → palette-cosmic.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-cosmic.1.8.0.min.css → palette-cosmic.1.9.2.min.css} +0 -0
- /package/dist/palettes/{palette-default.1.8.0.css → palette-default.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-default.1.8.0.min.css → palette-default.1.9.2.min.css} +0 -0
- /package/dist/palettes/{palette-ocean.1.8.0.css → palette-ocean.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-ocean.1.8.0.min.css → palette-ocean.1.9.2.min.css} +0 -0
- /package/dist/palettes/{palette-spring.1.8.0.css → palette-spring.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-spring.1.8.0.min.css → palette-spring.1.9.2.min.css} +0 -0
- /package/dist/palettes/{palette-winter.1.8.0.css → palette-winter.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-winter.1.8.0.min.css → palette-winter.1.9.2.min.css} +0 -0
package/dist/index.esm.js
CHANGED
|
@@ -6324,42 +6324,24 @@ function getAugmentedNamespace(n) {
|
|
|
6324
6324
|
return a;
|
|
6325
6325
|
}
|
|
6326
6326
|
|
|
6327
|
-
var
|
|
6327
|
+
var commonjs = {};
|
|
6328
6328
|
|
|
6329
6329
|
var Parser$4 = {};
|
|
6330
6330
|
|
|
6331
|
-
var Tokenizer$
|
|
6331
|
+
var Tokenizer$2 = {};
|
|
6332
6332
|
|
|
6333
|
-
var decode = {};
|
|
6334
|
-
|
|
6335
|
-
var decodeDataHtml = {};
|
|
6336
|
-
|
|
6337
|
-
// Generated using scripts/write-decode-map.ts
|
|
6338
|
-
Object.defineProperty(decodeDataHtml, "__esModule", { value: true });
|
|
6339
|
-
decodeDataHtml.default = new Uint16Array(
|
|
6340
|
-
// prettier-ignore
|
|
6341
|
-
"\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"
|
|
6342
|
-
.split("")
|
|
6343
|
-
.map(function (c) { return c.charCodeAt(0); }));
|
|
6344
|
-
|
|
6345
|
-
var decodeDataXml = {};
|
|
6346
|
-
|
|
6347
|
-
// Generated using scripts/write-decode-map.ts
|
|
6348
|
-
Object.defineProperty(decodeDataXml, "__esModule", { value: true });
|
|
6349
|
-
decodeDataXml.default = new Uint16Array(
|
|
6350
|
-
// prettier-ignore
|
|
6351
|
-
"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
6352
|
-
.split("")
|
|
6353
|
-
.map(function (c) { return c.charCodeAt(0); }));
|
|
6333
|
+
var decode$1 = {};
|
|
6354
6334
|
|
|
6355
|
-
var
|
|
6335
|
+
var decodeCodepoint = {};
|
|
6356
6336
|
|
|
6357
6337
|
(function (exports) {
|
|
6358
6338
|
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
6359
6339
|
var _a;
|
|
6360
6340
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6361
|
-
exports.
|
|
6362
|
-
|
|
6341
|
+
exports.fromCodePoint = void 0;
|
|
6342
|
+
exports.replaceCodePoint = replaceCodePoint;
|
|
6343
|
+
exports.decodeCodePoint = decodeCodePoint;
|
|
6344
|
+
const decodeMap = new Map([
|
|
6363
6345
|
[0, 65533],
|
|
6364
6346
|
// C1 Unicode control character reference replacements
|
|
6365
6347
|
[128, 8364],
|
|
@@ -6394,17 +6376,17 @@ var decode_codepoint = {};
|
|
|
6394
6376
|
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
6395
6377
|
*/
|
|
6396
6378
|
exports.fromCodePoint =
|
|
6397
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition,
|
|
6398
|
-
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a :
|
|
6399
|
-
|
|
6400
|
-
if (codePoint >
|
|
6401
|
-
codePoint -=
|
|
6402
|
-
output += String.fromCharCode(((codePoint >>> 10) &
|
|
6403
|
-
codePoint =
|
|
6379
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
6380
|
+
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
|
|
6381
|
+
let output = "";
|
|
6382
|
+
if (codePoint > 65535) {
|
|
6383
|
+
codePoint -= 65536;
|
|
6384
|
+
output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
|
|
6385
|
+
codePoint = 56320 | (codePoint & 1023);
|
|
6404
6386
|
}
|
|
6405
6387
|
output += String.fromCharCode(codePoint);
|
|
6406
6388
|
return output;
|
|
6407
|
-
};
|
|
6389
|
+
});
|
|
6408
6390
|
/**
|
|
6409
6391
|
* Replace the given code point with a replacement character if it is a
|
|
6410
6392
|
* surrogate or is outside the valid range. Otherwise return the code
|
|
@@ -6412,12 +6394,12 @@ var decode_codepoint = {};
|
|
|
6412
6394
|
*/
|
|
6413
6395
|
function replaceCodePoint(codePoint) {
|
|
6414
6396
|
var _a;
|
|
6415
|
-
if ((codePoint >=
|
|
6416
|
-
|
|
6397
|
+
if ((codePoint >= 55296 && codePoint <= 57343) ||
|
|
6398
|
+
codePoint > 1114111) {
|
|
6399
|
+
return 65533;
|
|
6417
6400
|
}
|
|
6418
6401
|
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
6419
6402
|
}
|
|
6420
|
-
exports.replaceCodePoint = replaceCodePoint;
|
|
6421
6403
|
/**
|
|
6422
6404
|
* Replace the code point if relevant, then convert it to a string.
|
|
6423
6405
|
*
|
|
@@ -6428,48 +6410,91 @@ var decode_codepoint = {};
|
|
|
6428
6410
|
function decodeCodePoint(codePoint) {
|
|
6429
6411
|
return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));
|
|
6430
6412
|
}
|
|
6431
|
-
exports.default = decodeCodePoint;
|
|
6432
6413
|
|
|
6433
|
-
} (
|
|
6414
|
+
} (decodeCodepoint));
|
|
6415
|
+
|
|
6416
|
+
var decodeDataHtml$1 = {};
|
|
6417
|
+
|
|
6418
|
+
var decodeShared = {};
|
|
6419
|
+
|
|
6420
|
+
Object.defineProperty(decodeShared, "__esModule", { value: true });
|
|
6421
|
+
decodeShared.decodeBase64 = decodeBase64;
|
|
6422
|
+
/*
|
|
6423
|
+
* Shared base64 decode helper for generated decode data.
|
|
6424
|
+
* Assumes global atob is available.
|
|
6425
|
+
*/
|
|
6426
|
+
function decodeBase64(input) {
|
|
6427
|
+
const binary =
|
|
6428
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
6429
|
+
typeof atob === "function"
|
|
6430
|
+
? // Browser (and Node >=16)
|
|
6431
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
6432
|
+
atob(input)
|
|
6433
|
+
: // Older Node versions (<16)
|
|
6434
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
6435
|
+
typeof Buffer.from === "function"
|
|
6436
|
+
? // eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
6437
|
+
Buffer.from(input, "base64").toString("binary")
|
|
6438
|
+
: // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
|
|
6439
|
+
new Buffer(input, "base64").toString("binary");
|
|
6440
|
+
const evenLength = binary.length & ~1; // Round down to even length
|
|
6441
|
+
const out = new Uint16Array(evenLength / 2);
|
|
6442
|
+
for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
|
|
6443
|
+
const lo = binary.charCodeAt(index);
|
|
6444
|
+
const hi = binary.charCodeAt(index + 1);
|
|
6445
|
+
out[outIndex++] = lo | (hi << 8);
|
|
6446
|
+
}
|
|
6447
|
+
return out;
|
|
6448
|
+
}
|
|
6449
|
+
|
|
6450
|
+
// Generated using scripts/write-decode-map.ts
|
|
6451
|
+
Object.defineProperty(decodeDataHtml$1, "__esModule", { value: true });
|
|
6452
|
+
decodeDataHtml$1.htmlDecodeTree = void 0;
|
|
6453
|
+
const decode_shared_js_1$1 = decodeShared;
|
|
6454
|
+
decodeDataHtml$1.htmlDecodeTree = (0, decode_shared_js_1$1.decodeBase64)("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/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/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
|
|
6455
|
+
|
|
6456
|
+
var decodeDataXml$1 = {};
|
|
6457
|
+
|
|
6458
|
+
// Generated using scripts/write-decode-map.ts
|
|
6459
|
+
Object.defineProperty(decodeDataXml$1, "__esModule", { value: true });
|
|
6460
|
+
decodeDataXml$1.xmlDecodeTree = void 0;
|
|
6461
|
+
const decode_shared_js_1 = decodeShared;
|
|
6462
|
+
decodeDataXml$1.xmlDecodeTree = (0, decode_shared_js_1.decodeBase64)("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg");
|
|
6463
|
+
|
|
6464
|
+
var binTrieFlags = {};
|
|
6465
|
+
|
|
6466
|
+
Object.defineProperty(binTrieFlags, "__esModule", { value: true });
|
|
6467
|
+
binTrieFlags.BinTrieFlags = void 0;
|
|
6468
|
+
/**
|
|
6469
|
+
* Bit flags & masks for the binary trie encoding used for entity decoding.
|
|
6470
|
+
*
|
|
6471
|
+
* Bit layout (16 bits total):
|
|
6472
|
+
* 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)
|
|
6473
|
+
* 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').
|
|
6474
|
+
* If valueLength==0: compact run flag.
|
|
6475
|
+
* 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)
|
|
6476
|
+
* 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char
|
|
6477
|
+
*/
|
|
6478
|
+
var BinTrieFlags;
|
|
6479
|
+
(function (BinTrieFlags) {
|
|
6480
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
6481
|
+
BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13";
|
|
6482
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
|
|
6483
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
6484
|
+
})(BinTrieFlags || (binTrieFlags.BinTrieFlags = BinTrieFlags = {}));
|
|
6434
6485
|
|
|
6435
6486
|
(function (exports) {
|
|
6436
|
-
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6437
|
-
if (k2 === undefined) k2 = k;
|
|
6438
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6439
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6440
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
6441
|
-
}
|
|
6442
|
-
Object.defineProperty(o, k2, desc);
|
|
6443
|
-
}) : (function(o, m, k, k2) {
|
|
6444
|
-
if (k2 === undefined) k2 = k;
|
|
6445
|
-
o[k2] = m[k];
|
|
6446
|
-
}));
|
|
6447
|
-
var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
6448
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
6449
|
-
}) : function(o, v) {
|
|
6450
|
-
o["default"] = v;
|
|
6451
|
-
});
|
|
6452
|
-
var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {
|
|
6453
|
-
if (mod && mod.__esModule) return mod;
|
|
6454
|
-
var result = {};
|
|
6455
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
6456
|
-
__setModuleDefault(result, mod);
|
|
6457
|
-
return result;
|
|
6458
|
-
};
|
|
6459
|
-
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
|
|
6460
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6461
|
-
};
|
|
6462
6487
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6463
|
-
exports.
|
|
6464
|
-
|
|
6465
|
-
exports.
|
|
6466
|
-
|
|
6467
|
-
exports.
|
|
6468
|
-
|
|
6469
|
-
|
|
6470
|
-
|
|
6471
|
-
|
|
6472
|
-
|
|
6488
|
+
exports.xmlDecodeTree = exports.htmlDecodeTree = exports.replaceCodePoint = exports.fromCodePoint = exports.decodeCodePoint = exports.EntityDecoder = exports.DecodingMode = void 0;
|
|
6489
|
+
exports.determineBranch = determineBranch;
|
|
6490
|
+
exports.decodeHTML = decodeHTML;
|
|
6491
|
+
exports.decodeHTMLAttribute = decodeHTMLAttribute;
|
|
6492
|
+
exports.decodeHTMLStrict = decodeHTMLStrict;
|
|
6493
|
+
exports.decodeXML = decodeXML;
|
|
6494
|
+
const decode_codepoint_js_1 = decodeCodepoint;
|
|
6495
|
+
const decode_data_html_js_1 = decodeDataHtml$1;
|
|
6496
|
+
const decode_data_xml_js_1 = decodeDataXml$1;
|
|
6497
|
+
const bin_trie_flags_js_1 = binTrieFlags;
|
|
6473
6498
|
var CharCodes;
|
|
6474
6499
|
(function (CharCodes) {
|
|
6475
6500
|
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
@@ -6486,13 +6511,7 @@ var decode_codepoint = {};
|
|
|
6486
6511
|
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
6487
6512
|
})(CharCodes || (CharCodes = {}));
|
|
6488
6513
|
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
6489
|
-
|
|
6490
|
-
var BinTrieFlags;
|
|
6491
|
-
(function (BinTrieFlags) {
|
|
6492
|
-
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
6493
|
-
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
6494
|
-
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
6495
|
-
})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));
|
|
6514
|
+
const TO_LOWER_BIT = 32;
|
|
6496
6515
|
function isNumber(code) {
|
|
6497
6516
|
return code >= CharCodes.ZERO && code <= CharCodes.NINE;
|
|
6498
6517
|
}
|
|
@@ -6530,13 +6549,14 @@ var decode_codepoint = {};
|
|
|
6530
6549
|
DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
|
|
6531
6550
|
/** Entities in attributes have limitations on ending characters. */
|
|
6532
6551
|
DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
|
|
6533
|
-
})(DecodingMode
|
|
6552
|
+
})(DecodingMode || (exports.DecodingMode = DecodingMode = {}));
|
|
6534
6553
|
/**
|
|
6535
6554
|
* Token decoder with support of writing partial entities.
|
|
6536
6555
|
*/
|
|
6537
|
-
|
|
6538
|
-
|
|
6556
|
+
class EntityDecoder {
|
|
6557
|
+
constructor(
|
|
6539
6558
|
/** The tree used to decode entities. */
|
|
6559
|
+
// biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive
|
|
6540
6560
|
decodeTree,
|
|
6541
6561
|
/**
|
|
6542
6562
|
* The function that is called when a codepoint is decoded.
|
|
@@ -6570,16 +6590,19 @@ var decode_codepoint = {};
|
|
|
6570
6590
|
this.excess = 1;
|
|
6571
6591
|
/** The mode in which the decoder is operating. */
|
|
6572
6592
|
this.decodeMode = DecodingMode.Strict;
|
|
6593
|
+
/** The number of characters that have been consumed in the current run. */
|
|
6594
|
+
this.runConsumed = 0;
|
|
6573
6595
|
}
|
|
6574
6596
|
/** Resets the instance to make it reusable. */
|
|
6575
|
-
|
|
6597
|
+
startEntity(decodeMode) {
|
|
6576
6598
|
this.decodeMode = decodeMode;
|
|
6577
6599
|
this.state = EntityDecoderState.EntityStart;
|
|
6578
6600
|
this.result = 0;
|
|
6579
6601
|
this.treeIndex = 0;
|
|
6580
6602
|
this.excess = 1;
|
|
6581
6603
|
this.consumed = 1;
|
|
6582
|
-
|
|
6604
|
+
this.runConsumed = 0;
|
|
6605
|
+
}
|
|
6583
6606
|
/**
|
|
6584
6607
|
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
6585
6608
|
* If the entity is incomplete, the decoder will return -1.
|
|
@@ -6587,113 +6610,106 @@ var decode_codepoint = {};
|
|
|
6587
6610
|
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
6588
6611
|
* entity is incomplete, and resume when the next string is written.
|
|
6589
6612
|
*
|
|
6590
|
-
* @param
|
|
6613
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
6591
6614
|
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
6592
6615
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6593
6616
|
*/
|
|
6594
|
-
|
|
6617
|
+
write(input, offset) {
|
|
6595
6618
|
switch (this.state) {
|
|
6596
6619
|
case EntityDecoderState.EntityStart: {
|
|
6597
|
-
if (
|
|
6620
|
+
if (input.charCodeAt(offset) === CharCodes.NUM) {
|
|
6598
6621
|
this.state = EntityDecoderState.NumericStart;
|
|
6599
6622
|
this.consumed += 1;
|
|
6600
|
-
return this.stateNumericStart(
|
|
6623
|
+
return this.stateNumericStart(input, offset + 1);
|
|
6601
6624
|
}
|
|
6602
6625
|
this.state = EntityDecoderState.NamedEntity;
|
|
6603
|
-
return this.stateNamedEntity(
|
|
6626
|
+
return this.stateNamedEntity(input, offset);
|
|
6604
6627
|
}
|
|
6605
6628
|
case EntityDecoderState.NumericStart: {
|
|
6606
|
-
return this.stateNumericStart(
|
|
6629
|
+
return this.stateNumericStart(input, offset);
|
|
6607
6630
|
}
|
|
6608
6631
|
case EntityDecoderState.NumericDecimal: {
|
|
6609
|
-
return this.stateNumericDecimal(
|
|
6632
|
+
return this.stateNumericDecimal(input, offset);
|
|
6610
6633
|
}
|
|
6611
6634
|
case EntityDecoderState.NumericHex: {
|
|
6612
|
-
return this.stateNumericHex(
|
|
6635
|
+
return this.stateNumericHex(input, offset);
|
|
6613
6636
|
}
|
|
6614
6637
|
case EntityDecoderState.NamedEntity: {
|
|
6615
|
-
return this.stateNamedEntity(
|
|
6638
|
+
return this.stateNamedEntity(input, offset);
|
|
6616
6639
|
}
|
|
6617
6640
|
}
|
|
6618
|
-
}
|
|
6641
|
+
}
|
|
6619
6642
|
/**
|
|
6620
6643
|
* Switches between the numeric decimal and hexadecimal states.
|
|
6621
6644
|
*
|
|
6622
6645
|
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
6623
6646
|
*
|
|
6624
|
-
* @param
|
|
6647
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
6625
6648
|
* @param offset The current offset.
|
|
6626
6649
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6627
6650
|
*/
|
|
6628
|
-
|
|
6629
|
-
if (offset >=
|
|
6651
|
+
stateNumericStart(input, offset) {
|
|
6652
|
+
if (offset >= input.length) {
|
|
6630
6653
|
return -1;
|
|
6631
6654
|
}
|
|
6632
|
-
if ((
|
|
6655
|
+
if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
|
|
6633
6656
|
this.state = EntityDecoderState.NumericHex;
|
|
6634
6657
|
this.consumed += 1;
|
|
6635
|
-
return this.stateNumericHex(
|
|
6658
|
+
return this.stateNumericHex(input, offset + 1);
|
|
6636
6659
|
}
|
|
6637
6660
|
this.state = EntityDecoderState.NumericDecimal;
|
|
6638
|
-
return this.stateNumericDecimal(
|
|
6639
|
-
}
|
|
6640
|
-
EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) {
|
|
6641
|
-
if (start !== end) {
|
|
6642
|
-
var digitCount = end - start;
|
|
6643
|
-
this.result =
|
|
6644
|
-
this.result * Math.pow(base, digitCount) +
|
|
6645
|
-
parseInt(str.substr(start, digitCount), base);
|
|
6646
|
-
this.consumed += digitCount;
|
|
6647
|
-
}
|
|
6648
|
-
};
|
|
6661
|
+
return this.stateNumericDecimal(input, offset);
|
|
6662
|
+
}
|
|
6649
6663
|
/**
|
|
6650
6664
|
* Parses a hexadecimal numeric entity.
|
|
6651
6665
|
*
|
|
6652
6666
|
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
6653
6667
|
*
|
|
6654
|
-
* @param
|
|
6668
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
6655
6669
|
* @param offset The current offset.
|
|
6656
6670
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6657
6671
|
*/
|
|
6658
|
-
|
|
6659
|
-
|
|
6660
|
-
|
|
6661
|
-
var char = str.charCodeAt(offset);
|
|
6672
|
+
stateNumericHex(input, offset) {
|
|
6673
|
+
while (offset < input.length) {
|
|
6674
|
+
const char = input.charCodeAt(offset);
|
|
6662
6675
|
if (isNumber(char) || isHexadecimalCharacter(char)) {
|
|
6663
|
-
|
|
6676
|
+
// Convert hex digit to value (0-15); 'a'/'A' -> 10.
|
|
6677
|
+
const digit = char <= CharCodes.NINE
|
|
6678
|
+
? char - CharCodes.ZERO
|
|
6679
|
+
: (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10;
|
|
6680
|
+
this.result = this.result * 16 + digit;
|
|
6681
|
+
this.consumed++;
|
|
6682
|
+
offset++;
|
|
6664
6683
|
}
|
|
6665
6684
|
else {
|
|
6666
|
-
this.addToNumericResult(str, startIdx, offset, 16);
|
|
6667
6685
|
return this.emitNumericEntity(char, 3);
|
|
6668
6686
|
}
|
|
6669
6687
|
}
|
|
6670
|
-
|
|
6671
|
-
|
|
6672
|
-
};
|
|
6688
|
+
return -1; // Incomplete entity
|
|
6689
|
+
}
|
|
6673
6690
|
/**
|
|
6674
6691
|
* Parses a decimal numeric entity.
|
|
6675
6692
|
*
|
|
6676
6693
|
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
6677
6694
|
*
|
|
6678
|
-
* @param
|
|
6695
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
6679
6696
|
* @param offset The current offset.
|
|
6680
6697
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6681
6698
|
*/
|
|
6682
|
-
|
|
6683
|
-
|
|
6684
|
-
|
|
6685
|
-
var char = str.charCodeAt(offset);
|
|
6699
|
+
stateNumericDecimal(input, offset) {
|
|
6700
|
+
while (offset < input.length) {
|
|
6701
|
+
const char = input.charCodeAt(offset);
|
|
6686
6702
|
if (isNumber(char)) {
|
|
6687
|
-
|
|
6703
|
+
this.result = this.result * 10 + (char - CharCodes.ZERO);
|
|
6704
|
+
this.consumed++;
|
|
6705
|
+
offset++;
|
|
6688
6706
|
}
|
|
6689
6707
|
else {
|
|
6690
|
-
this.addToNumericResult(str, startIdx, offset, 10);
|
|
6691
6708
|
return this.emitNumericEntity(char, 2);
|
|
6692
6709
|
}
|
|
6693
6710
|
}
|
|
6694
|
-
|
|
6695
|
-
|
|
6696
|
-
};
|
|
6711
|
+
return -1; // Incomplete entity
|
|
6712
|
+
}
|
|
6697
6713
|
/**
|
|
6698
6714
|
* Validate and emit a numeric entity.
|
|
6699
6715
|
*
|
|
@@ -6707,7 +6723,7 @@ var decode_codepoint = {};
|
|
|
6707
6723
|
* was consumed.
|
|
6708
6724
|
* @returns The number of characters that were consumed.
|
|
6709
6725
|
*/
|
|
6710
|
-
|
|
6726
|
+
emitNumericEntity(lastCp, expectedLength) {
|
|
6711
6727
|
var _a;
|
|
6712
6728
|
// Ensure we consumed at least one digit.
|
|
6713
6729
|
if (this.consumed <= expectedLength) {
|
|
@@ -6729,23 +6745,77 @@ var decode_codepoint = {};
|
|
|
6729
6745
|
this.errors.validateNumericCharacterReference(this.result);
|
|
6730
6746
|
}
|
|
6731
6747
|
return this.consumed;
|
|
6732
|
-
}
|
|
6748
|
+
}
|
|
6733
6749
|
/**
|
|
6734
6750
|
* Parses a named entity.
|
|
6735
6751
|
*
|
|
6736
6752
|
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
6737
6753
|
*
|
|
6738
|
-
* @param
|
|
6754
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
6739
6755
|
* @param offset The current offset.
|
|
6740
6756
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6741
6757
|
*/
|
|
6742
|
-
|
|
6743
|
-
|
|
6744
|
-
|
|
6745
|
-
// The
|
|
6746
|
-
|
|
6747
|
-
|
|
6748
|
-
|
|
6758
|
+
stateNamedEntity(input, offset) {
|
|
6759
|
+
const { decodeTree } = this;
|
|
6760
|
+
let current = decodeTree[this.treeIndex];
|
|
6761
|
+
// The length is the number of bytes of the value, including the current byte.
|
|
6762
|
+
let valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6763
|
+
while (offset < input.length) {
|
|
6764
|
+
// Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set.
|
|
6765
|
+
if (valueLength === 0 && (current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) !== 0) {
|
|
6766
|
+
const runLength = (current & bin_trie_flags_js_1.BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */
|
|
6767
|
+
// If we are starting a run, check the first char.
|
|
6768
|
+
if (this.runConsumed === 0) {
|
|
6769
|
+
const firstChar = current & bin_trie_flags_js_1.BinTrieFlags.JUMP_TABLE;
|
|
6770
|
+
if (input.charCodeAt(offset) !== firstChar) {
|
|
6771
|
+
return this.result === 0
|
|
6772
|
+
? 0
|
|
6773
|
+
: this.emitNotTerminatedNamedEntity();
|
|
6774
|
+
}
|
|
6775
|
+
offset++;
|
|
6776
|
+
this.excess++;
|
|
6777
|
+
this.runConsumed++;
|
|
6778
|
+
}
|
|
6779
|
+
// Check remaining characters in the run.
|
|
6780
|
+
while (this.runConsumed < runLength) {
|
|
6781
|
+
if (offset >= input.length) {
|
|
6782
|
+
return -1;
|
|
6783
|
+
}
|
|
6784
|
+
const charIndexInPacked = this.runConsumed - 1;
|
|
6785
|
+
const packedWord = decodeTree[this.treeIndex + 1 + (charIndexInPacked >> 1)];
|
|
6786
|
+
const expectedChar = charIndexInPacked % 2 === 0
|
|
6787
|
+
? packedWord & 0xff
|
|
6788
|
+
: (packedWord >> 8) & 0xff;
|
|
6789
|
+
if (input.charCodeAt(offset) !== expectedChar) {
|
|
6790
|
+
this.runConsumed = 0;
|
|
6791
|
+
return this.result === 0
|
|
6792
|
+
? 0
|
|
6793
|
+
: this.emitNotTerminatedNamedEntity();
|
|
6794
|
+
}
|
|
6795
|
+
offset++;
|
|
6796
|
+
this.excess++;
|
|
6797
|
+
this.runConsumed++;
|
|
6798
|
+
}
|
|
6799
|
+
this.runConsumed = 0;
|
|
6800
|
+
this.treeIndex += 1 + (runLength >> 1);
|
|
6801
|
+
current = decodeTree[this.treeIndex];
|
|
6802
|
+
valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6803
|
+
}
|
|
6804
|
+
if (offset >= input.length)
|
|
6805
|
+
break;
|
|
6806
|
+
const char = input.charCodeAt(offset);
|
|
6807
|
+
/*
|
|
6808
|
+
* Implicit semicolon handling for nodes that require a semicolon but
|
|
6809
|
+
* don't have an explicit ';' branch stored in the trie. If we have
|
|
6810
|
+
* a value on the current node, it requires a semicolon, and the
|
|
6811
|
+
* current input character is a semicolon, emit the entity using the
|
|
6812
|
+
* current node (without descending further).
|
|
6813
|
+
*/
|
|
6814
|
+
if (char === CharCodes.SEMI &&
|
|
6815
|
+
valueLength !== 0 &&
|
|
6816
|
+
(current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) !== 0) {
|
|
6817
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
6818
|
+
}
|
|
6749
6819
|
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
6750
6820
|
if (this.treeIndex < 0) {
|
|
6751
6821
|
return this.result === 0 ||
|
|
@@ -6759,7 +6829,7 @@ var decode_codepoint = {};
|
|
|
6759
6829
|
: this.emitNotTerminatedNamedEntity();
|
|
6760
6830
|
}
|
|
6761
6831
|
current = decodeTree[this.treeIndex];
|
|
6762
|
-
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6832
|
+
valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6763
6833
|
// If the branch is a value, store it and continue
|
|
6764
6834
|
if (valueLength !== 0) {
|
|
6765
6835
|
// If the entity is terminated by a semicolon, we are done.
|
|
@@ -6767,28 +6837,32 @@ var decode_codepoint = {};
|
|
|
6767
6837
|
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
6768
6838
|
}
|
|
6769
6839
|
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
6770
|
-
if (this.decodeMode !== DecodingMode.Strict
|
|
6840
|
+
if (this.decodeMode !== DecodingMode.Strict &&
|
|
6841
|
+
(current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) === 0) {
|
|
6771
6842
|
this.result = this.treeIndex;
|
|
6772
6843
|
this.consumed += this.excess;
|
|
6773
6844
|
this.excess = 0;
|
|
6774
6845
|
}
|
|
6775
6846
|
}
|
|
6847
|
+
// Increment offset & excess for next iteration
|
|
6848
|
+
offset++;
|
|
6849
|
+
this.excess++;
|
|
6776
6850
|
}
|
|
6777
6851
|
return -1;
|
|
6778
|
-
}
|
|
6852
|
+
}
|
|
6779
6853
|
/**
|
|
6780
6854
|
* Emit a named entity that was not terminated with a semicolon.
|
|
6781
6855
|
*
|
|
6782
6856
|
* @returns The number of characters consumed.
|
|
6783
6857
|
*/
|
|
6784
|
-
|
|
6858
|
+
emitNotTerminatedNamedEntity() {
|
|
6785
6859
|
var _a;
|
|
6786
|
-
|
|
6787
|
-
|
|
6860
|
+
const { result, decodeTree } = this;
|
|
6861
|
+
const valueLength = (decodeTree[result] & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6788
6862
|
this.emitNamedEntityData(result, valueLength, this.consumed);
|
|
6789
6863
|
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
|
|
6790
6864
|
return this.consumed;
|
|
6791
|
-
}
|
|
6865
|
+
}
|
|
6792
6866
|
/**
|
|
6793
6867
|
* Emit a named entity.
|
|
6794
6868
|
*
|
|
@@ -6798,17 +6872,18 @@ var decode_codepoint = {};
|
|
|
6798
6872
|
*
|
|
6799
6873
|
* @returns The number of characters consumed.
|
|
6800
6874
|
*/
|
|
6801
|
-
|
|
6802
|
-
|
|
6875
|
+
emitNamedEntityData(result, valueLength, consumed) {
|
|
6876
|
+
const { decodeTree } = this;
|
|
6803
6877
|
this.emitCodePoint(valueLength === 1
|
|
6804
|
-
? decodeTree[result] &
|
|
6878
|
+
? decodeTree[result] &
|
|
6879
|
+
~(bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH | bin_trie_flags_js_1.BinTrieFlags.FLAG13)
|
|
6805
6880
|
: decodeTree[result + 1], consumed);
|
|
6806
6881
|
if (valueLength === 3) {
|
|
6807
6882
|
// For multi-byte values, we need to emit the second byte.
|
|
6808
6883
|
this.emitCodePoint(decodeTree[result + 2], consumed);
|
|
6809
6884
|
}
|
|
6810
6885
|
return consumed;
|
|
6811
|
-
}
|
|
6886
|
+
}
|
|
6812
6887
|
/**
|
|
6813
6888
|
* Signal to the parser that the end of the input was reached.
|
|
6814
6889
|
*
|
|
@@ -6816,7 +6891,7 @@ var decode_codepoint = {};
|
|
|
6816
6891
|
*
|
|
6817
6892
|
* @returns The number of characters consumed.
|
|
6818
6893
|
*/
|
|
6819
|
-
|
|
6894
|
+
end() {
|
|
6820
6895
|
var _a;
|
|
6821
6896
|
switch (this.state) {
|
|
6822
6897
|
case EntityDecoderState.NamedEntity: {
|
|
@@ -6843,9 +6918,8 @@ var decode_codepoint = {};
|
|
|
6843
6918
|
return 0;
|
|
6844
6919
|
}
|
|
6845
6920
|
}
|
|
6846
|
-
}
|
|
6847
|
-
|
|
6848
|
-
}());
|
|
6921
|
+
}
|
|
6922
|
+
}
|
|
6849
6923
|
exports.EntityDecoder = EntityDecoder;
|
|
6850
6924
|
/**
|
|
6851
6925
|
* Creates a function that decodes entities in a string.
|
|
@@ -6854,28 +6928,28 @@ var decode_codepoint = {};
|
|
|
6854
6928
|
* @returns A function that decodes entities in a string.
|
|
6855
6929
|
*/
|
|
6856
6930
|
function getDecoder(decodeTree) {
|
|
6857
|
-
|
|
6858
|
-
|
|
6859
|
-
return function decodeWithTrie(
|
|
6860
|
-
|
|
6861
|
-
|
|
6862
|
-
while ((offset =
|
|
6863
|
-
|
|
6931
|
+
let returnValue = "";
|
|
6932
|
+
const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += (0, decode_codepoint_js_1.fromCodePoint)(data)));
|
|
6933
|
+
return function decodeWithTrie(input, decodeMode) {
|
|
6934
|
+
let lastIndex = 0;
|
|
6935
|
+
let offset = 0;
|
|
6936
|
+
while ((offset = input.indexOf("&", offset)) >= 0) {
|
|
6937
|
+
returnValue += input.slice(lastIndex, offset);
|
|
6864
6938
|
decoder.startEntity(decodeMode);
|
|
6865
|
-
|
|
6939
|
+
const length = decoder.write(input,
|
|
6866
6940
|
// Skip the "&"
|
|
6867
6941
|
offset + 1);
|
|
6868
|
-
if (
|
|
6942
|
+
if (length < 0) {
|
|
6869
6943
|
lastIndex = offset + decoder.end();
|
|
6870
6944
|
break;
|
|
6871
6945
|
}
|
|
6872
|
-
lastIndex = offset +
|
|
6873
|
-
// If `
|
|
6874
|
-
offset =
|
|
6946
|
+
lastIndex = offset + length;
|
|
6947
|
+
// If `length` is 0, skip the current `&` and continue.
|
|
6948
|
+
offset = length === 0 ? lastIndex + 1 : lastIndex;
|
|
6875
6949
|
}
|
|
6876
|
-
|
|
6950
|
+
const result = returnValue + input.slice(lastIndex);
|
|
6877
6951
|
// Make sure we don't keep a reference to the final string.
|
|
6878
|
-
|
|
6952
|
+
returnValue = "";
|
|
6879
6953
|
return result;
|
|
6880
6954
|
};
|
|
6881
6955
|
}
|
|
@@ -6889,1017 +6963,892 @@ var decode_codepoint = {};
|
|
|
6889
6963
|
* @param char The current character.
|
|
6890
6964
|
* @returns The index of the next node, or -1 if no branch is taken.
|
|
6891
6965
|
*/
|
|
6892
|
-
function determineBranch(decodeTree, current,
|
|
6893
|
-
|
|
6894
|
-
|
|
6966
|
+
function determineBranch(decodeTree, current, nodeIndex, char) {
|
|
6967
|
+
const branchCount = (current & bin_trie_flags_js_1.BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
6968
|
+
const jumpOffset = current & bin_trie_flags_js_1.BinTrieFlags.JUMP_TABLE;
|
|
6895
6969
|
// Case 1: Single branch encoded in jump offset
|
|
6896
6970
|
if (branchCount === 0) {
|
|
6897
|
-
return jumpOffset !== 0 && char === jumpOffset ?
|
|
6971
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
|
|
6898
6972
|
}
|
|
6899
6973
|
// Case 2: Multiple branches encoded in jump table
|
|
6900
6974
|
if (jumpOffset) {
|
|
6901
|
-
|
|
6975
|
+
const value = char - jumpOffset;
|
|
6902
6976
|
return value < 0 || value >= branchCount
|
|
6903
6977
|
? -1
|
|
6904
|
-
: decodeTree[
|
|
6978
|
+
: decodeTree[nodeIndex + value] - 1;
|
|
6905
6979
|
}
|
|
6906
|
-
// Case 3: Multiple branches encoded in dictionary
|
|
6907
|
-
|
|
6908
|
-
|
|
6909
|
-
|
|
6980
|
+
// Case 3: Multiple branches encoded in packed dictionary (two keys per uint16)
|
|
6981
|
+
const packedKeySlots = (branchCount + 1) >> 1;
|
|
6982
|
+
/*
|
|
6983
|
+
* Treat packed keys as a virtual sorted array of length `branchCount`.
|
|
6984
|
+
* Key(i) = low byte for even i, high byte for odd i in slot i>>1.
|
|
6985
|
+
*/
|
|
6986
|
+
let lo = 0;
|
|
6987
|
+
let hi = branchCount - 1;
|
|
6910
6988
|
while (lo <= hi) {
|
|
6911
|
-
|
|
6912
|
-
|
|
6913
|
-
|
|
6989
|
+
const mid = (lo + hi) >>> 1;
|
|
6990
|
+
const slot = mid >> 1;
|
|
6991
|
+
const packed = decodeTree[nodeIndex + slot];
|
|
6992
|
+
const midKey = (packed >> ((mid & 1) * 8)) & 0xff;
|
|
6993
|
+
if (midKey < char) {
|
|
6914
6994
|
lo = mid + 1;
|
|
6915
6995
|
}
|
|
6916
|
-
else if (
|
|
6996
|
+
else if (midKey > char) {
|
|
6917
6997
|
hi = mid - 1;
|
|
6918
6998
|
}
|
|
6919
6999
|
else {
|
|
6920
|
-
return decodeTree[
|
|
7000
|
+
return decodeTree[nodeIndex + packedKeySlots + mid];
|
|
6921
7001
|
}
|
|
6922
7002
|
}
|
|
6923
7003
|
return -1;
|
|
6924
7004
|
}
|
|
6925
|
-
|
|
6926
|
-
|
|
6927
|
-
var xmlDecoder = getDecoder(decode_data_xml_js_1.default);
|
|
7005
|
+
const htmlDecoder = /* #__PURE__ */ getDecoder(decode_data_html_js_1.htmlDecodeTree);
|
|
7006
|
+
const xmlDecoder = /* #__PURE__ */ getDecoder(decode_data_xml_js_1.xmlDecodeTree);
|
|
6928
7007
|
/**
|
|
6929
7008
|
* Decodes an HTML string.
|
|
6930
7009
|
*
|
|
6931
|
-
* @param
|
|
7010
|
+
* @param htmlString The string to decode.
|
|
6932
7011
|
* @param mode The decoding mode.
|
|
6933
7012
|
* @returns The decoded string.
|
|
6934
7013
|
*/
|
|
6935
|
-
function decodeHTML(
|
|
6936
|
-
|
|
6937
|
-
return htmlDecoder(str, mode);
|
|
7014
|
+
function decodeHTML(htmlString, mode = DecodingMode.Legacy) {
|
|
7015
|
+
return htmlDecoder(htmlString, mode);
|
|
6938
7016
|
}
|
|
6939
|
-
exports.decodeHTML = decodeHTML;
|
|
6940
7017
|
/**
|
|
6941
7018
|
* Decodes an HTML string in an attribute.
|
|
6942
7019
|
*
|
|
6943
|
-
* @param
|
|
7020
|
+
* @param htmlAttribute The string to decode.
|
|
6944
7021
|
* @returns The decoded string.
|
|
6945
7022
|
*/
|
|
6946
|
-
function decodeHTMLAttribute(
|
|
6947
|
-
return htmlDecoder(
|
|
7023
|
+
function decodeHTMLAttribute(htmlAttribute) {
|
|
7024
|
+
return htmlDecoder(htmlAttribute, DecodingMode.Attribute);
|
|
6948
7025
|
}
|
|
6949
|
-
exports.decodeHTMLAttribute = decodeHTMLAttribute;
|
|
6950
7026
|
/**
|
|
6951
7027
|
* Decodes an HTML string, requiring all entities to be terminated by a semicolon.
|
|
6952
7028
|
*
|
|
6953
|
-
* @param
|
|
7029
|
+
* @param htmlString The string to decode.
|
|
6954
7030
|
* @returns The decoded string.
|
|
6955
7031
|
*/
|
|
6956
|
-
function decodeHTMLStrict(
|
|
6957
|
-
return htmlDecoder(
|
|
7032
|
+
function decodeHTMLStrict(htmlString) {
|
|
7033
|
+
return htmlDecoder(htmlString, DecodingMode.Strict);
|
|
6958
7034
|
}
|
|
6959
|
-
exports.decodeHTMLStrict = decodeHTMLStrict;
|
|
6960
7035
|
/**
|
|
6961
7036
|
* Decodes an XML string, requiring all entities to be terminated by a semicolon.
|
|
6962
7037
|
*
|
|
6963
|
-
* @param
|
|
7038
|
+
* @param xmlString The string to decode.
|
|
6964
7039
|
* @returns The decoded string.
|
|
6965
7040
|
*/
|
|
6966
|
-
function decodeXML(
|
|
6967
|
-
return xmlDecoder(
|
|
7041
|
+
function decodeXML(xmlString) {
|
|
7042
|
+
return xmlDecoder(xmlString, DecodingMode.Strict);
|
|
6968
7043
|
}
|
|
6969
|
-
|
|
7044
|
+
var decode_codepoint_js_2 = decodeCodepoint;
|
|
7045
|
+
Object.defineProperty(exports, "decodeCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.decodeCodePoint; } });
|
|
7046
|
+
Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } });
|
|
7047
|
+
Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } });
|
|
7048
|
+
// Re-export for use by eg. htmlparser2
|
|
7049
|
+
var decode_data_html_js_2 = decodeDataHtml$1;
|
|
7050
|
+
Object.defineProperty(exports, "htmlDecodeTree", { enumerable: true, get: function () { return decode_data_html_js_2.htmlDecodeTree; } });
|
|
7051
|
+
var decode_data_xml_js_2 = decodeDataXml$1;
|
|
7052
|
+
Object.defineProperty(exports, "xmlDecodeTree", { enumerable: true, get: function () { return decode_data_xml_js_2.xmlDecodeTree; } });
|
|
6970
7053
|
|
|
6971
|
-
} (decode));
|
|
6972
|
-
|
|
6973
|
-
(
|
|
6974
|
-
|
|
6975
|
-
|
|
6976
|
-
|
|
6977
|
-
|
|
6978
|
-
|
|
6979
|
-
|
|
6980
|
-
|
|
6981
|
-
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
|
|
6988
|
-
|
|
6989
|
-
|
|
6990
|
-
|
|
6991
|
-
|
|
6992
|
-
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
|
|
6996
|
-
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
|
|
7001
|
-
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
|
|
7008
|
-
|
|
7009
|
-
|
|
7010
|
-
|
|
7011
|
-
|
|
7012
|
-
|
|
7013
|
-
|
|
7014
|
-
|
|
7015
|
-
|
|
7016
|
-
|
|
7017
|
-
|
|
7018
|
-
|
|
7019
|
-
|
|
7020
|
-
|
|
7021
|
-
|
|
7022
|
-
|
|
7023
|
-
|
|
7024
|
-
|
|
7025
|
-
|
|
7026
|
-
|
|
7027
|
-
|
|
7028
|
-
|
|
7029
|
-
|
|
7030
|
-
|
|
7031
|
-
|
|
7032
|
-
|
|
7033
|
-
|
|
7034
|
-
|
|
7035
|
-
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7041
|
-
|
|
7042
|
-
|
|
7043
|
-
|
|
7044
|
-
|
|
7045
|
-
|
|
7046
|
-
|
|
7047
|
-
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7053
|
-
|
|
7054
|
-
|
|
7055
|
-
|
|
7056
|
-
|
|
7057
|
-
|
|
7058
|
-
|
|
7059
|
-
|
|
7060
|
-
|
|
7061
|
-
|
|
7062
|
-
|
|
7063
|
-
|
|
7064
|
-
|
|
7065
|
-
|
|
7066
|
-
|
|
7067
|
-
|
|
7068
|
-
|
|
7069
|
-
|
|
7070
|
-
|
|
7071
|
-
|
|
7072
|
-
|
|
7073
|
-
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
|
|
7077
|
-
|
|
7078
|
-
|
|
7079
|
-
|
|
7080
|
-
|
|
7081
|
-
|
|
7082
|
-
|
|
7083
|
-
|
|
7084
|
-
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
|
|
7089
|
-
|
|
7090
|
-
|
|
7091
|
-
|
|
7092
|
-
|
|
7093
|
-
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
|
|
7097
|
-
|
|
7098
|
-
|
|
7099
|
-
|
|
7100
|
-
|
|
7101
|
-
|
|
7102
|
-
|
|
7103
|
-
|
|
7104
|
-
|
|
7105
|
-
|
|
7106
|
-
|
|
7107
|
-
|
|
7108
|
-
|
|
7109
|
-
|
|
7110
|
-
|
|
7111
|
-
|
|
7112
|
-
|
|
7113
|
-
|
|
7114
|
-
|
|
7115
|
-
|
|
7116
|
-
|
|
7117
|
-
|
|
7118
|
-
|
|
7119
|
-
|
|
7120
|
-
|
|
7121
|
-
|
|
7122
|
-
|
|
7123
|
-
|
|
7124
|
-
|
|
7125
|
-
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
|
|
7129
|
-
|
|
7130
|
-
|
|
7131
|
-
|
|
7132
|
-
|
|
7133
|
-
|
|
7134
|
-
|
|
7135
|
-
|
|
7136
|
-
|
|
7137
|
-
|
|
7138
|
-
|
|
7139
|
-
|
|
7140
|
-
|
|
7141
|
-
|
|
7142
|
-
|
|
7143
|
-
|
|
7144
|
-
|
|
7145
|
-
|
|
7146
|
-
|
|
7147
|
-
|
|
7148
|
-
|
|
7149
|
-
|
|
7150
|
-
|
|
7151
|
-
|
|
7152
|
-
|
|
7153
|
-
|
|
7154
|
-
|
|
7155
|
-
|
|
7156
|
-
|
|
7157
|
-
|
|
7158
|
-
|
|
7159
|
-
|
|
7160
|
-
|
|
7161
|
-
|
|
7162
|
-
|
|
7163
|
-
|
|
7164
|
-
|
|
7165
|
-
|
|
7166
|
-
|
|
7167
|
-
|
|
7168
|
-
|
|
7169
|
-
|
|
7170
|
-
|
|
7171
|
-
|
|
7172
|
-
|
|
7173
|
-
|
|
7174
|
-
|
|
7175
|
-
|
|
7176
|
-
|
|
7177
|
-
|
|
7178
|
-
|
|
7179
|
-
|
|
7180
|
-
|
|
7181
|
-
|
|
7182
|
-
|
|
7183
|
-
|
|
7184
|
-
|
|
7185
|
-
|
|
7186
|
-
|
|
7187
|
-
|
|
7188
|
-
|
|
7189
|
-
|
|
7190
|
-
|
|
7191
|
-
|
|
7192
|
-
|
|
7193
|
-
|
|
7194
|
-
|
|
7195
|
-
|
|
7196
|
-
|
|
7197
|
-
|
|
7198
|
-
|
|
7199
|
-
|
|
7200
|
-
|
|
7201
|
-
|
|
7202
|
-
|
|
7203
|
-
|
|
7204
|
-
|
|
7205
|
-
|
|
7206
|
-
|
|
7207
|
-
|
|
7208
|
-
|
|
7209
|
-
|
|
7210
|
-
|
|
7211
|
-
|
|
7212
|
-
|
|
7213
|
-
|
|
7214
|
-
|
|
7215
|
-
|
|
7216
|
-
|
|
7217
|
-
|
|
7218
|
-
|
|
7219
|
-
|
|
7220
|
-
|
|
7221
|
-
|
|
7222
|
-
|
|
7223
|
-
|
|
7224
|
-
|
|
7225
|
-
|
|
7226
|
-
|
|
7227
|
-
|
|
7228
|
-
|
|
7229
|
-
|
|
7230
|
-
|
|
7231
|
-
|
|
7232
|
-
|
|
7233
|
-
|
|
7234
|
-
|
|
7235
|
-
|
|
7236
|
-
|
|
7237
|
-
|
|
7238
|
-
|
|
7239
|
-
|
|
7240
|
-
|
|
7241
|
-
|
|
7242
|
-
|
|
7243
|
-
|
|
7244
|
-
|
|
7245
|
-
|
|
7246
|
-
|
|
7247
|
-
|
|
7248
|
-
|
|
7249
|
-
|
|
7250
|
-
|
|
7251
|
-
|
|
7252
|
-
|
|
7253
|
-
|
|
7254
|
-
|
|
7255
|
-
|
|
7256
|
-
|
|
7257
|
-
|
|
7258
|
-
|
|
7259
|
-
|
|
7260
|
-
|
|
7261
|
-
|
|
7262
|
-
|
|
7263
|
-
|
|
7264
|
-
|
|
7265
|
-
|
|
7266
|
-
|
|
7267
|
-
|
|
7268
|
-
|
|
7269
|
-
|
|
7270
|
-
|
|
7271
|
-
|
|
7272
|
-
|
|
7273
|
-
|
|
7274
|
-
|
|
7275
|
-
|
|
7276
|
-
|
|
7277
|
-
|
|
7278
|
-
|
|
7279
|
-
|
|
7280
|
-
|
|
7281
|
-
|
|
7282
|
-
|
|
7283
|
-
|
|
7284
|
-
|
|
7285
|
-
|
|
7286
|
-
|
|
7287
|
-
|
|
7288
|
-
|
|
7289
|
-
|
|
7290
|
-
|
|
7291
|
-
|
|
7292
|
-
|
|
7293
|
-
|
|
7294
|
-
|
|
7295
|
-
|
|
7296
|
-
|
|
7297
|
-
|
|
7298
|
-
|
|
7299
|
-
|
|
7300
|
-
|
|
7301
|
-
|
|
7302
|
-
|
|
7303
|
-
|
|
7304
|
-
|
|
7305
|
-
|
|
7306
|
-
|
|
7307
|
-
|
|
7308
|
-
|
|
7309
|
-
|
|
7310
|
-
|
|
7311
|
-
|
|
7312
|
-
|
|
7313
|
-
|
|
7314
|
-
|
|
7315
|
-
|
|
7316
|
-
|
|
7317
|
-
|
|
7318
|
-
|
|
7319
|
-
|
|
7320
|
-
|
|
7321
|
-
|
|
7322
|
-
|
|
7323
|
-
|
|
7324
|
-
|
|
7325
|
-
|
|
7326
|
-
|
|
7327
|
-
|
|
7328
|
-
|
|
7329
|
-
|
|
7330
|
-
|
|
7331
|
-
|
|
7332
|
-
|
|
7333
|
-
|
|
7334
|
-
|
|
7335
|
-
|
|
7336
|
-
|
|
7337
|
-
|
|
7338
|
-
|
|
7339
|
-
|
|
7340
|
-
|
|
7341
|
-
|
|
7342
|
-
|
|
7343
|
-
|
|
7344
|
-
|
|
7345
|
-
|
|
7346
|
-
|
|
7347
|
-
|
|
7348
|
-
|
|
7349
|
-
|
|
7350
|
-
|
|
7351
|
-
|
|
7352
|
-
|
|
7353
|
-
|
|
7354
|
-
|
|
7355
|
-
|
|
7356
|
-
|
|
7357
|
-
|
|
7358
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
|
|
7364
|
-
|
|
7365
|
-
|
|
7366
|
-
|
|
7367
|
-
|
|
7368
|
-
|
|
7369
|
-
|
|
7370
|
-
|
|
7371
|
-
|
|
7372
|
-
|
|
7373
|
-
|
|
7374
|
-
|
|
7375
|
-
|
|
7376
|
-
|
|
7377
|
-
|
|
7378
|
-
|
|
7379
|
-
|
|
7380
|
-
|
|
7381
|
-
|
|
7382
|
-
|
|
7383
|
-
|
|
7384
|
-
|
|
7385
|
-
|
|
7386
|
-
|
|
7387
|
-
|
|
7388
|
-
|
|
7389
|
-
|
|
7390
|
-
|
|
7391
|
-
|
|
7392
|
-
|
|
7393
|
-
|
|
7394
|
-
|
|
7395
|
-
|
|
7396
|
-
|
|
7397
|
-
|
|
7398
|
-
|
|
7399
|
-
|
|
7400
|
-
|
|
7401
|
-
|
|
7402
|
-
|
|
7403
|
-
|
|
7404
|
-
|
|
7405
|
-
|
|
7406
|
-
|
|
7407
|
-
|
|
7408
|
-
|
|
7409
|
-
|
|
7410
|
-
|
|
7411
|
-
|
|
7412
|
-
|
|
7413
|
-
|
|
7414
|
-
|
|
7415
|
-
|
|
7416
|
-
|
|
7417
|
-
|
|
7418
|
-
|
|
7419
|
-
|
|
7420
|
-
|
|
7421
|
-
|
|
7422
|
-
|
|
7423
|
-
|
|
7424
|
-
|
|
7425
|
-
|
|
7426
|
-
|
|
7427
|
-
|
|
7428
|
-
|
|
7429
|
-
|
|
7430
|
-
|
|
7431
|
-
|
|
7432
|
-
|
|
7433
|
-
|
|
7434
|
-
|
|
7435
|
-
|
|
7436
|
-
|
|
7437
|
-
|
|
7438
|
-
|
|
7439
|
-
|
|
7440
|
-
|
|
7441
|
-
|
|
7442
|
-
|
|
7443
|
-
|
|
7444
|
-
|
|
7445
|
-
|
|
7446
|
-
|
|
7447
|
-
|
|
7448
|
-
|
|
7449
|
-
|
|
7450
|
-
|
|
7451
|
-
|
|
7452
|
-
|
|
7453
|
-
|
|
7454
|
-
|
|
7455
|
-
|
|
7456
|
-
|
|
7457
|
-
|
|
7458
|
-
|
|
7459
|
-
|
|
7460
|
-
|
|
7461
|
-
|
|
7462
|
-
|
|
7463
|
-
|
|
7464
|
-
|
|
7465
|
-
|
|
7466
|
-
|
|
7467
|
-
|
|
7468
|
-
|
|
7469
|
-
|
|
7470
|
-
|
|
7471
|
-
|
|
7472
|
-
|
|
7473
|
-
|
|
7474
|
-
|
|
7475
|
-
|
|
7476
|
-
|
|
7477
|
-
|
|
7478
|
-
|
|
7479
|
-
|
|
7480
|
-
|
|
7481
|
-
|
|
7482
|
-
|
|
7483
|
-
|
|
7484
|
-
|
|
7485
|
-
|
|
7486
|
-
|
|
7487
|
-
|
|
7488
|
-
|
|
7489
|
-
|
|
7490
|
-
|
|
7491
|
-
|
|
7492
|
-
|
|
7493
|
-
|
|
7494
|
-
|
|
7495
|
-
|
|
7496
|
-
|
|
7497
|
-
|
|
7498
|
-
|
|
7499
|
-
|
|
7500
|
-
|
|
7501
|
-
|
|
7502
|
-
|
|
7503
|
-
|
|
7504
|
-
|
|
7505
|
-
|
|
7506
|
-
|
|
7507
|
-
|
|
7508
|
-
|
|
7509
|
-
|
|
7510
|
-
|
|
7511
|
-
|
|
7512
|
-
|
|
7513
|
-
|
|
7514
|
-
|
|
7515
|
-
|
|
7516
|
-
|
|
7517
|
-
|
|
7518
|
-
|
|
7519
|
-
|
|
7520
|
-
|
|
7521
|
-
|
|
7522
|
-
|
|
7523
|
-
|
|
7524
|
-
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
|
|
7528
|
-
|
|
7529
|
-
|
|
7530
|
-
|
|
7531
|
-
|
|
7532
|
-
|
|
7533
|
-
|
|
7534
|
-
|
|
7535
|
-
|
|
7536
|
-
|
|
7537
|
-
|
|
7538
|
-
|
|
7539
|
-
|
|
7540
|
-
|
|
7541
|
-
|
|
7542
|
-
|
|
7543
|
-
|
|
7544
|
-
|
|
7545
|
-
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
|
|
7556
|
-
|
|
7557
|
-
|
|
7558
|
-
|
|
7559
|
-
|
|
7560
|
-
|
|
7561
|
-
|
|
7562
|
-
|
|
7563
|
-
|
|
7564
|
-
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
|
|
7569
|
-
|
|
7570
|
-
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
|
|
7588
|
-
|
|
7589
|
-
|
|
7590
|
-
|
|
7591
|
-
|
|
7592
|
-
|
|
7593
|
-
|
|
7594
|
-
|
|
7595
|
-
|
|
7596
|
-
|
|
7597
|
-
|
|
7598
|
-
|
|
7599
|
-
|
|
7600
|
-
|
|
7601
|
-
|
|
7602
|
-
|
|
7603
|
-
|
|
7604
|
-
|
|
7605
|
-
|
|
7606
|
-
|
|
7607
|
-
|
|
7608
|
-
|
|
7609
|
-
|
|
7610
|
-
|
|
7611
|
-
|
|
7612
|
-
|
|
7613
|
-
|
|
7614
|
-
|
|
7615
|
-
|
|
7616
|
-
|
|
7617
|
-
|
|
7618
|
-
|
|
7619
|
-
|
|
7620
|
-
|
|
7621
|
-
|
|
7622
|
-
|
|
7623
|
-
|
|
7624
|
-
|
|
7625
|
-
|
|
7626
|
-
|
|
7627
|
-
|
|
7628
|
-
|
|
7629
|
-
|
|
7630
|
-
|
|
7631
|
-
|
|
7632
|
-
|
|
7633
|
-
|
|
7634
|
-
|
|
7635
|
-
|
|
7636
|
-
|
|
7637
|
-
|
|
7638
|
-
|
|
7639
|
-
|
|
7640
|
-
|
|
7641
|
-
|
|
7642
|
-
|
|
7643
|
-
|
|
7644
|
-
|
|
7645
|
-
|
|
7646
|
-
|
|
7647
|
-
|
|
7648
|
-
|
|
7649
|
-
|
|
7650
|
-
|
|
7651
|
-
|
|
7652
|
-
|
|
7653
|
-
|
|
7654
|
-
|
|
7655
|
-
|
|
7656
|
-
|
|
7657
|
-
|
|
7658
|
-
|
|
7659
|
-
|
|
7660
|
-
|
|
7661
|
-
|
|
7662
|
-
|
|
7663
|
-
|
|
7664
|
-
|
|
7665
|
-
|
|
7666
|
-
|
|
7667
|
-
|
|
7668
|
-
|
|
7669
|
-
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
|
|
7674
|
-
|
|
7675
|
-
|
|
7676
|
-
|
|
7677
|
-
|
|
7678
|
-
|
|
7679
|
-
|
|
7680
|
-
|
|
7681
|
-
|
|
7682
|
-
|
|
7683
|
-
|
|
7684
|
-
|
|
7685
|
-
|
|
7686
|
-
|
|
7687
|
-
|
|
7688
|
-
|
|
7689
|
-
|
|
7690
|
-
|
|
7691
|
-
|
|
7692
|
-
|
|
7693
|
-
|
|
7694
|
-
|
|
7695
|
-
|
|
7696
|
-
|
|
7697
|
-
|
|
7698
|
-
|
|
7699
|
-
|
|
7700
|
-
|
|
7701
|
-
|
|
7702
|
-
|
|
7703
|
-
|
|
7704
|
-
|
|
7705
|
-
|
|
7706
|
-
|
|
7707
|
-
|
|
7708
|
-
|
|
7709
|
-
|
|
7710
|
-
|
|
7711
|
-
|
|
7712
|
-
|
|
7713
|
-
|
|
7714
|
-
|
|
7715
|
-
|
|
7716
|
-
|
|
7717
|
-
|
|
7718
|
-
|
|
7719
|
-
|
|
7720
|
-
|
|
7721
|
-
|
|
7722
|
-
|
|
7723
|
-
|
|
7724
|
-
|
|
7725
|
-
|
|
7726
|
-
|
|
7727
|
-
|
|
7728
|
-
|
|
7729
|
-
|
|
7730
|
-
|
|
7731
|
-
|
|
7732
|
-
|
|
7733
|
-
|
|
7734
|
-
|
|
7735
|
-
|
|
7736
|
-
|
|
7737
|
-
|
|
7738
|
-
|
|
7739
|
-
|
|
7740
|
-
|
|
7741
|
-
|
|
7742
|
-
|
|
7743
|
-
|
|
7744
|
-
|
|
7745
|
-
|
|
7746
|
-
|
|
7747
|
-
|
|
7748
|
-
|
|
7749
|
-
|
|
7750
|
-
|
|
7751
|
-
|
|
7752
|
-
|
|
7753
|
-
|
|
7754
|
-
|
|
7755
|
-
|
|
7756
|
-
|
|
7757
|
-
|
|
7758
|
-
|
|
7759
|
-
|
|
7760
|
-
|
|
7761
|
-
|
|
7762
|
-
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7766
|
-
|
|
7767
|
-
|
|
7768
|
-
|
|
7769
|
-
break;
|
|
7770
|
-
}
|
|
7771
|
-
case State.BeforeAttributeValue: {
|
|
7772
|
-
this.stateBeforeAttributeValue(c);
|
|
7773
|
-
break;
|
|
7774
|
-
}
|
|
7775
|
-
case State.BeforeClosingTagName: {
|
|
7776
|
-
this.stateBeforeClosingTagName(c);
|
|
7777
|
-
break;
|
|
7778
|
-
}
|
|
7779
|
-
case State.AfterClosingTagName: {
|
|
7780
|
-
this.stateAfterClosingTagName(c);
|
|
7781
|
-
break;
|
|
7782
|
-
}
|
|
7783
|
-
case State.BeforeSpecialS: {
|
|
7784
|
-
this.stateBeforeSpecialS(c);
|
|
7785
|
-
break;
|
|
7786
|
-
}
|
|
7787
|
-
case State.InAttributeValueNq: {
|
|
7788
|
-
this.stateInAttributeValueNoQuotes(c);
|
|
7789
|
-
break;
|
|
7790
|
-
}
|
|
7791
|
-
case State.InSelfClosingTag: {
|
|
7792
|
-
this.stateInSelfClosingTag(c);
|
|
7793
|
-
break;
|
|
7794
|
-
}
|
|
7795
|
-
case State.InDeclaration: {
|
|
7796
|
-
this.stateInDeclaration(c);
|
|
7797
|
-
break;
|
|
7798
|
-
}
|
|
7799
|
-
case State.BeforeDeclaration: {
|
|
7800
|
-
this.stateBeforeDeclaration(c);
|
|
7801
|
-
break;
|
|
7802
|
-
}
|
|
7803
|
-
case State.BeforeComment: {
|
|
7804
|
-
this.stateBeforeComment(c);
|
|
7805
|
-
break;
|
|
7806
|
-
}
|
|
7807
|
-
case State.InProcessingInstruction: {
|
|
7808
|
-
this.stateInProcessingInstruction(c);
|
|
7809
|
-
break;
|
|
7810
|
-
}
|
|
7811
|
-
case State.InNamedEntity: {
|
|
7812
|
-
this.stateInNamedEntity(c);
|
|
7813
|
-
break;
|
|
7814
|
-
}
|
|
7815
|
-
case State.BeforeEntity: {
|
|
7816
|
-
this.stateBeforeEntity(c);
|
|
7817
|
-
break;
|
|
7818
|
-
}
|
|
7819
|
-
case State.InHexEntity: {
|
|
7820
|
-
this.stateInHexEntity(c);
|
|
7821
|
-
break;
|
|
7822
|
-
}
|
|
7823
|
-
case State.InNumericEntity: {
|
|
7824
|
-
this.stateInNumericEntity(c);
|
|
7825
|
-
break;
|
|
7826
|
-
}
|
|
7827
|
-
default: {
|
|
7828
|
-
// `this._state === State.BeforeNumericEntity`
|
|
7829
|
-
this.stateBeforeNumericEntity(c);
|
|
7830
|
-
}
|
|
7831
|
-
}
|
|
7832
|
-
this.index++;
|
|
7833
|
-
}
|
|
7834
|
-
this.cleanup();
|
|
7835
|
-
};
|
|
7836
|
-
Tokenizer.prototype.finish = function () {
|
|
7837
|
-
if (this.state === State.InNamedEntity) {
|
|
7838
|
-
this.emitNamedEntity();
|
|
7839
|
-
}
|
|
7840
|
-
// If there is remaining data, emit it in a reasonable way
|
|
7841
|
-
if (this.sectionStart < this.index) {
|
|
7842
|
-
this.handleTrailingData();
|
|
7843
|
-
}
|
|
7844
|
-
this.cbs.onend();
|
|
7845
|
-
};
|
|
7846
|
-
/** Handle any trailing data. */
|
|
7847
|
-
Tokenizer.prototype.handleTrailingData = function () {
|
|
7848
|
-
var endIndex = this.buffer.length + this.offset;
|
|
7849
|
-
if (this.state === State.InCommentLike) {
|
|
7850
|
-
if (this.currentSequence === Sequences.CdataEnd) {
|
|
7851
|
-
this.cbs.oncdata(this.sectionStart, endIndex, 0);
|
|
7852
|
-
}
|
|
7853
|
-
else {
|
|
7854
|
-
this.cbs.oncomment(this.sectionStart, endIndex, 0);
|
|
7855
|
-
}
|
|
7856
|
-
}
|
|
7857
|
-
else if (this.state === State.InNumericEntity &&
|
|
7858
|
-
this.allowLegacyEntity()) {
|
|
7859
|
-
this.emitNumericEntity(false);
|
|
7860
|
-
// All trailing data will have been consumed
|
|
7861
|
-
}
|
|
7862
|
-
else if (this.state === State.InHexEntity &&
|
|
7863
|
-
this.allowLegacyEntity()) {
|
|
7864
|
-
this.emitNumericEntity(false);
|
|
7865
|
-
// All trailing data will have been consumed
|
|
7866
|
-
}
|
|
7867
|
-
else if (this.state === State.InTagName ||
|
|
7868
|
-
this.state === State.BeforeAttributeName ||
|
|
7869
|
-
this.state === State.BeforeAttributeValue ||
|
|
7870
|
-
this.state === State.AfterAttributeName ||
|
|
7871
|
-
this.state === State.InAttributeName ||
|
|
7872
|
-
this.state === State.InAttributeValueSq ||
|
|
7873
|
-
this.state === State.InAttributeValueDq ||
|
|
7874
|
-
this.state === State.InAttributeValueNq ||
|
|
7875
|
-
this.state === State.InClosingTagName) ;
|
|
7876
|
-
else {
|
|
7877
|
-
this.cbs.ontext(this.sectionStart, endIndex);
|
|
7878
|
-
}
|
|
7879
|
-
};
|
|
7880
|
-
Tokenizer.prototype.emitPartial = function (start, endIndex) {
|
|
7881
|
-
if (this.baseState !== State.Text &&
|
|
7882
|
-
this.baseState !== State.InSpecialTag) {
|
|
7883
|
-
this.cbs.onattribdata(start, endIndex);
|
|
7884
|
-
}
|
|
7885
|
-
else {
|
|
7886
|
-
this.cbs.ontext(start, endIndex);
|
|
7887
|
-
}
|
|
7888
|
-
};
|
|
7889
|
-
Tokenizer.prototype.emitCodePoint = function (cp) {
|
|
7890
|
-
if (this.baseState !== State.Text &&
|
|
7891
|
-
this.baseState !== State.InSpecialTag) {
|
|
7892
|
-
this.cbs.onattribentity(cp);
|
|
7893
|
-
}
|
|
7894
|
-
else {
|
|
7895
|
-
this.cbs.ontextentity(cp);
|
|
7896
|
-
}
|
|
7897
|
-
};
|
|
7898
|
-
return Tokenizer;
|
|
7899
|
-
}());
|
|
7900
|
-
exports.default = Tokenizer;
|
|
7901
|
-
|
|
7902
|
-
} (Tokenizer$1));
|
|
7054
|
+
} (decode$1));
|
|
7055
|
+
|
|
7056
|
+
Object.defineProperty(Tokenizer$2, "__esModule", { value: true });
|
|
7057
|
+
Tokenizer$2.QuoteType = void 0;
|
|
7058
|
+
const decode_1$1 = decode$1;
|
|
7059
|
+
var CharCodes;
|
|
7060
|
+
(function (CharCodes) {
|
|
7061
|
+
CharCodes[CharCodes["Tab"] = 9] = "Tab";
|
|
7062
|
+
CharCodes[CharCodes["NewLine"] = 10] = "NewLine";
|
|
7063
|
+
CharCodes[CharCodes["FormFeed"] = 12] = "FormFeed";
|
|
7064
|
+
CharCodes[CharCodes["CarriageReturn"] = 13] = "CarriageReturn";
|
|
7065
|
+
CharCodes[CharCodes["Space"] = 32] = "Space";
|
|
7066
|
+
CharCodes[CharCodes["ExclamationMark"] = 33] = "ExclamationMark";
|
|
7067
|
+
CharCodes[CharCodes["Number"] = 35] = "Number";
|
|
7068
|
+
CharCodes[CharCodes["Amp"] = 38] = "Amp";
|
|
7069
|
+
CharCodes[CharCodes["SingleQuote"] = 39] = "SingleQuote";
|
|
7070
|
+
CharCodes[CharCodes["DoubleQuote"] = 34] = "DoubleQuote";
|
|
7071
|
+
CharCodes[CharCodes["Dash"] = 45] = "Dash";
|
|
7072
|
+
CharCodes[CharCodes["Slash"] = 47] = "Slash";
|
|
7073
|
+
CharCodes[CharCodes["Zero"] = 48] = "Zero";
|
|
7074
|
+
CharCodes[CharCodes["Nine"] = 57] = "Nine";
|
|
7075
|
+
CharCodes[CharCodes["Semi"] = 59] = "Semi";
|
|
7076
|
+
CharCodes[CharCodes["Lt"] = 60] = "Lt";
|
|
7077
|
+
CharCodes[CharCodes["Eq"] = 61] = "Eq";
|
|
7078
|
+
CharCodes[CharCodes["Gt"] = 62] = "Gt";
|
|
7079
|
+
CharCodes[CharCodes["Questionmark"] = 63] = "Questionmark";
|
|
7080
|
+
CharCodes[CharCodes["UpperA"] = 65] = "UpperA";
|
|
7081
|
+
CharCodes[CharCodes["LowerA"] = 97] = "LowerA";
|
|
7082
|
+
CharCodes[CharCodes["UpperF"] = 70] = "UpperF";
|
|
7083
|
+
CharCodes[CharCodes["LowerF"] = 102] = "LowerF";
|
|
7084
|
+
CharCodes[CharCodes["UpperZ"] = 90] = "UpperZ";
|
|
7085
|
+
CharCodes[CharCodes["LowerZ"] = 122] = "LowerZ";
|
|
7086
|
+
CharCodes[CharCodes["LowerX"] = 120] = "LowerX";
|
|
7087
|
+
CharCodes[CharCodes["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
|
|
7088
|
+
})(CharCodes || (CharCodes = {}));
|
|
7089
|
+
/** All the states the tokenizer can be in. */
|
|
7090
|
+
var State;
|
|
7091
|
+
(function (State) {
|
|
7092
|
+
State[State["Text"] = 1] = "Text";
|
|
7093
|
+
State[State["BeforeTagName"] = 2] = "BeforeTagName";
|
|
7094
|
+
State[State["InTagName"] = 3] = "InTagName";
|
|
7095
|
+
State[State["InSelfClosingTag"] = 4] = "InSelfClosingTag";
|
|
7096
|
+
State[State["BeforeClosingTagName"] = 5] = "BeforeClosingTagName";
|
|
7097
|
+
State[State["InClosingTagName"] = 6] = "InClosingTagName";
|
|
7098
|
+
State[State["AfterClosingTagName"] = 7] = "AfterClosingTagName";
|
|
7099
|
+
// Attributes
|
|
7100
|
+
State[State["BeforeAttributeName"] = 8] = "BeforeAttributeName";
|
|
7101
|
+
State[State["InAttributeName"] = 9] = "InAttributeName";
|
|
7102
|
+
State[State["AfterAttributeName"] = 10] = "AfterAttributeName";
|
|
7103
|
+
State[State["BeforeAttributeValue"] = 11] = "BeforeAttributeValue";
|
|
7104
|
+
State[State["InAttributeValueDq"] = 12] = "InAttributeValueDq";
|
|
7105
|
+
State[State["InAttributeValueSq"] = 13] = "InAttributeValueSq";
|
|
7106
|
+
State[State["InAttributeValueNq"] = 14] = "InAttributeValueNq";
|
|
7107
|
+
// Declarations
|
|
7108
|
+
State[State["BeforeDeclaration"] = 15] = "BeforeDeclaration";
|
|
7109
|
+
State[State["InDeclaration"] = 16] = "InDeclaration";
|
|
7110
|
+
// Processing instructions
|
|
7111
|
+
State[State["InProcessingInstruction"] = 17] = "InProcessingInstruction";
|
|
7112
|
+
// Comments & CDATA
|
|
7113
|
+
State[State["BeforeComment"] = 18] = "BeforeComment";
|
|
7114
|
+
State[State["CDATASequence"] = 19] = "CDATASequence";
|
|
7115
|
+
State[State["InSpecialComment"] = 20] = "InSpecialComment";
|
|
7116
|
+
State[State["InCommentLike"] = 21] = "InCommentLike";
|
|
7117
|
+
// Special tags
|
|
7118
|
+
State[State["BeforeSpecialS"] = 22] = "BeforeSpecialS";
|
|
7119
|
+
State[State["BeforeSpecialT"] = 23] = "BeforeSpecialT";
|
|
7120
|
+
State[State["SpecialStartSequence"] = 24] = "SpecialStartSequence";
|
|
7121
|
+
State[State["InSpecialTag"] = 25] = "InSpecialTag";
|
|
7122
|
+
State[State["InEntity"] = 26] = "InEntity";
|
|
7123
|
+
})(State || (State = {}));
|
|
7124
|
+
function isWhitespace(c) {
|
|
7125
|
+
return (c === CharCodes.Space ||
|
|
7126
|
+
c === CharCodes.NewLine ||
|
|
7127
|
+
c === CharCodes.Tab ||
|
|
7128
|
+
c === CharCodes.FormFeed ||
|
|
7129
|
+
c === CharCodes.CarriageReturn);
|
|
7130
|
+
}
|
|
7131
|
+
function isEndOfTagSection(c) {
|
|
7132
|
+
return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);
|
|
7133
|
+
}
|
|
7134
|
+
function isASCIIAlpha(c) {
|
|
7135
|
+
return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||
|
|
7136
|
+
(c >= CharCodes.UpperA && c <= CharCodes.UpperZ));
|
|
7137
|
+
}
|
|
7138
|
+
var QuoteType;
|
|
7139
|
+
(function (QuoteType) {
|
|
7140
|
+
QuoteType[QuoteType["NoValue"] = 0] = "NoValue";
|
|
7141
|
+
QuoteType[QuoteType["Unquoted"] = 1] = "Unquoted";
|
|
7142
|
+
QuoteType[QuoteType["Single"] = 2] = "Single";
|
|
7143
|
+
QuoteType[QuoteType["Double"] = 3] = "Double";
|
|
7144
|
+
})(QuoteType || (Tokenizer$2.QuoteType = QuoteType = {}));
|
|
7145
|
+
/**
|
|
7146
|
+
* Sequences used to match longer strings.
|
|
7147
|
+
*
|
|
7148
|
+
* We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End
|
|
7149
|
+
* sequences with an increased offset.
|
|
7150
|
+
*/
|
|
7151
|
+
const Sequences = {
|
|
7152
|
+
Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[
|
|
7153
|
+
CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>
|
|
7154
|
+
CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`
|
|
7155
|
+
ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // `</script`
|
|
7156
|
+
StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style`
|
|
7157
|
+
TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`
|
|
7158
|
+
TextareaEnd: new Uint8Array([
|
|
7159
|
+
0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,
|
|
7160
|
+
]), // `</textarea`
|
|
7161
|
+
XmpEnd: new Uint8Array([0x3c, 0x2f, 0x78, 0x6d, 0x70]), // `</xmp`
|
|
7162
|
+
};
|
|
7163
|
+
let Tokenizer$1 = class Tokenizer {
|
|
7164
|
+
constructor({ xmlMode = false, decodeEntities = true, }, cbs) {
|
|
7165
|
+
this.cbs = cbs;
|
|
7166
|
+
/** The current state the tokenizer is in. */
|
|
7167
|
+
this.state = State.Text;
|
|
7168
|
+
/** The read buffer. */
|
|
7169
|
+
this.buffer = "";
|
|
7170
|
+
/** The beginning of the section that is currently being read. */
|
|
7171
|
+
this.sectionStart = 0;
|
|
7172
|
+
/** The index within the buffer that we are currently looking at. */
|
|
7173
|
+
this.index = 0;
|
|
7174
|
+
/** The start of the last entity. */
|
|
7175
|
+
this.entityStart = 0;
|
|
7176
|
+
/** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
|
|
7177
|
+
this.baseState = State.Text;
|
|
7178
|
+
/** For special parsing behavior inside of script and style tags. */
|
|
7179
|
+
this.isSpecial = false;
|
|
7180
|
+
/** Indicates whether the tokenizer has been paused. */
|
|
7181
|
+
this.running = true;
|
|
7182
|
+
/** The offset of the current buffer. */
|
|
7183
|
+
this.offset = 0;
|
|
7184
|
+
this.currentSequence = undefined;
|
|
7185
|
+
this.sequenceIndex = 0;
|
|
7186
|
+
this.xmlMode = xmlMode;
|
|
7187
|
+
this.decodeEntities = decodeEntities;
|
|
7188
|
+
this.entityDecoder = new decode_1$1.EntityDecoder(xmlMode ? decode_1$1.xmlDecodeTree : decode_1$1.htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));
|
|
7189
|
+
}
|
|
7190
|
+
reset() {
|
|
7191
|
+
this.state = State.Text;
|
|
7192
|
+
this.buffer = "";
|
|
7193
|
+
this.sectionStart = 0;
|
|
7194
|
+
this.index = 0;
|
|
7195
|
+
this.baseState = State.Text;
|
|
7196
|
+
this.currentSequence = undefined;
|
|
7197
|
+
this.running = true;
|
|
7198
|
+
this.offset = 0;
|
|
7199
|
+
}
|
|
7200
|
+
write(chunk) {
|
|
7201
|
+
this.offset += this.buffer.length;
|
|
7202
|
+
this.buffer = chunk;
|
|
7203
|
+
this.parse();
|
|
7204
|
+
}
|
|
7205
|
+
end() {
|
|
7206
|
+
if (this.running)
|
|
7207
|
+
this.finish();
|
|
7208
|
+
}
|
|
7209
|
+
pause() {
|
|
7210
|
+
this.running = false;
|
|
7211
|
+
}
|
|
7212
|
+
resume() {
|
|
7213
|
+
this.running = true;
|
|
7214
|
+
if (this.index < this.buffer.length + this.offset) {
|
|
7215
|
+
this.parse();
|
|
7216
|
+
}
|
|
7217
|
+
}
|
|
7218
|
+
stateText(c) {
|
|
7219
|
+
if (c === CharCodes.Lt ||
|
|
7220
|
+
(!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {
|
|
7221
|
+
if (this.index > this.sectionStart) {
|
|
7222
|
+
this.cbs.ontext(this.sectionStart, this.index);
|
|
7223
|
+
}
|
|
7224
|
+
this.state = State.BeforeTagName;
|
|
7225
|
+
this.sectionStart = this.index;
|
|
7226
|
+
}
|
|
7227
|
+
else if (this.decodeEntities && c === CharCodes.Amp) {
|
|
7228
|
+
this.startEntity();
|
|
7229
|
+
}
|
|
7230
|
+
}
|
|
7231
|
+
stateSpecialStartSequence(c) {
|
|
7232
|
+
const isEnd = this.sequenceIndex === this.currentSequence.length;
|
|
7233
|
+
const isMatch = isEnd
|
|
7234
|
+
? // If we are at the end of the sequence, make sure the tag name has ended
|
|
7235
|
+
isEndOfTagSection(c)
|
|
7236
|
+
: // Otherwise, do a case-insensitive comparison
|
|
7237
|
+
(c | 0x20) === this.currentSequence[this.sequenceIndex];
|
|
7238
|
+
if (!isMatch) {
|
|
7239
|
+
this.isSpecial = false;
|
|
7240
|
+
}
|
|
7241
|
+
else if (!isEnd) {
|
|
7242
|
+
this.sequenceIndex++;
|
|
7243
|
+
return;
|
|
7244
|
+
}
|
|
7245
|
+
this.sequenceIndex = 0;
|
|
7246
|
+
this.state = State.InTagName;
|
|
7247
|
+
this.stateInTagName(c);
|
|
7248
|
+
}
|
|
7249
|
+
/** Look for an end tag. For <title> tags, also decode entities. */
|
|
7250
|
+
stateInSpecialTag(c) {
|
|
7251
|
+
if (this.sequenceIndex === this.currentSequence.length) {
|
|
7252
|
+
if (c === CharCodes.Gt || isWhitespace(c)) {
|
|
7253
|
+
const endOfText = this.index - this.currentSequence.length;
|
|
7254
|
+
if (this.sectionStart < endOfText) {
|
|
7255
|
+
// Spoof the index so that reported locations match up.
|
|
7256
|
+
const actualIndex = this.index;
|
|
7257
|
+
this.index = endOfText;
|
|
7258
|
+
this.cbs.ontext(this.sectionStart, endOfText);
|
|
7259
|
+
this.index = actualIndex;
|
|
7260
|
+
}
|
|
7261
|
+
this.isSpecial = false;
|
|
7262
|
+
this.sectionStart = endOfText + 2; // Skip over the `</`
|
|
7263
|
+
this.stateInClosingTagName(c);
|
|
7264
|
+
return; // We are done; skip the rest of the function.
|
|
7265
|
+
}
|
|
7266
|
+
this.sequenceIndex = 0;
|
|
7267
|
+
}
|
|
7268
|
+
if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {
|
|
7269
|
+
this.sequenceIndex += 1;
|
|
7270
|
+
}
|
|
7271
|
+
else if (this.sequenceIndex === 0) {
|
|
7272
|
+
if (this.currentSequence === Sequences.TitleEnd) {
|
|
7273
|
+
// We have to parse entities in <title> tags.
|
|
7274
|
+
if (this.decodeEntities && c === CharCodes.Amp) {
|
|
7275
|
+
this.startEntity();
|
|
7276
|
+
}
|
|
7277
|
+
}
|
|
7278
|
+
else if (this.fastForwardTo(CharCodes.Lt)) {
|
|
7279
|
+
// Outside of <title> tags, we can fast-forward.
|
|
7280
|
+
this.sequenceIndex = 1;
|
|
7281
|
+
}
|
|
7282
|
+
}
|
|
7283
|
+
else {
|
|
7284
|
+
// If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.
|
|
7285
|
+
this.sequenceIndex = Number(c === CharCodes.Lt);
|
|
7286
|
+
}
|
|
7287
|
+
}
|
|
7288
|
+
stateCDATASequence(c) {
|
|
7289
|
+
if (c === Sequences.Cdata[this.sequenceIndex]) {
|
|
7290
|
+
if (++this.sequenceIndex === Sequences.Cdata.length) {
|
|
7291
|
+
this.state = State.InCommentLike;
|
|
7292
|
+
this.currentSequence = Sequences.CdataEnd;
|
|
7293
|
+
this.sequenceIndex = 0;
|
|
7294
|
+
this.sectionStart = this.index + 1;
|
|
7295
|
+
}
|
|
7296
|
+
}
|
|
7297
|
+
else {
|
|
7298
|
+
this.sequenceIndex = 0;
|
|
7299
|
+
this.state = State.InDeclaration;
|
|
7300
|
+
this.stateInDeclaration(c); // Reconsume the character
|
|
7301
|
+
}
|
|
7302
|
+
}
|
|
7303
|
+
/**
|
|
7304
|
+
* When we wait for one specific character, we can speed things up
|
|
7305
|
+
* by skipping through the buffer until we find it.
|
|
7306
|
+
*
|
|
7307
|
+
* @returns Whether the character was found.
|
|
7308
|
+
*/
|
|
7309
|
+
fastForwardTo(c) {
|
|
7310
|
+
while (++this.index < this.buffer.length + this.offset) {
|
|
7311
|
+
if (this.buffer.charCodeAt(this.index - this.offset) === c) {
|
|
7312
|
+
return true;
|
|
7313
|
+
}
|
|
7314
|
+
}
|
|
7315
|
+
/*
|
|
7316
|
+
* We increment the index at the end of the `parse` loop,
|
|
7317
|
+
* so set it to `buffer.length - 1` here.
|
|
7318
|
+
*
|
|
7319
|
+
* TODO: Refactor `parse` to increment index before calling states.
|
|
7320
|
+
*/
|
|
7321
|
+
this.index = this.buffer.length + this.offset - 1;
|
|
7322
|
+
return false;
|
|
7323
|
+
}
|
|
7324
|
+
/**
|
|
7325
|
+
* Comments and CDATA end with `-->` and `]]>`.
|
|
7326
|
+
*
|
|
7327
|
+
* Their common qualities are:
|
|
7328
|
+
* - Their end sequences have a distinct character they start with.
|
|
7329
|
+
* - That character is then repeated, so we have to check multiple repeats.
|
|
7330
|
+
* - All characters but the start character of the sequence can be skipped.
|
|
7331
|
+
*/
|
|
7332
|
+
stateInCommentLike(c) {
|
|
7333
|
+
if (c === this.currentSequence[this.sequenceIndex]) {
|
|
7334
|
+
if (++this.sequenceIndex === this.currentSequence.length) {
|
|
7335
|
+
if (this.currentSequence === Sequences.CdataEnd) {
|
|
7336
|
+
this.cbs.oncdata(this.sectionStart, this.index, 2);
|
|
7337
|
+
}
|
|
7338
|
+
else {
|
|
7339
|
+
this.cbs.oncomment(this.sectionStart, this.index, 2);
|
|
7340
|
+
}
|
|
7341
|
+
this.sequenceIndex = 0;
|
|
7342
|
+
this.sectionStart = this.index + 1;
|
|
7343
|
+
this.state = State.Text;
|
|
7344
|
+
}
|
|
7345
|
+
}
|
|
7346
|
+
else if (this.sequenceIndex === 0) {
|
|
7347
|
+
// Fast-forward to the first character of the sequence
|
|
7348
|
+
if (this.fastForwardTo(this.currentSequence[0])) {
|
|
7349
|
+
this.sequenceIndex = 1;
|
|
7350
|
+
}
|
|
7351
|
+
}
|
|
7352
|
+
else if (c !== this.currentSequence[this.sequenceIndex - 1]) {
|
|
7353
|
+
// Allow long sequences, eg. --->, ]]]>
|
|
7354
|
+
this.sequenceIndex = 0;
|
|
7355
|
+
}
|
|
7356
|
+
}
|
|
7357
|
+
/**
|
|
7358
|
+
* HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
|
|
7359
|
+
*
|
|
7360
|
+
* XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
|
|
7361
|
+
* We allow anything that wouldn't end the tag.
|
|
7362
|
+
*/
|
|
7363
|
+
isTagStartChar(c) {
|
|
7364
|
+
return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
|
|
7365
|
+
}
|
|
7366
|
+
startSpecial(sequence, offset) {
|
|
7367
|
+
this.isSpecial = true;
|
|
7368
|
+
this.currentSequence = sequence;
|
|
7369
|
+
this.sequenceIndex = offset;
|
|
7370
|
+
this.state = State.SpecialStartSequence;
|
|
7371
|
+
}
|
|
7372
|
+
stateBeforeTagName(c) {
|
|
7373
|
+
if (c === CharCodes.ExclamationMark) {
|
|
7374
|
+
this.state = State.BeforeDeclaration;
|
|
7375
|
+
this.sectionStart = this.index + 1;
|
|
7376
|
+
}
|
|
7377
|
+
else if (c === CharCodes.Questionmark) {
|
|
7378
|
+
this.state = State.InProcessingInstruction;
|
|
7379
|
+
this.sectionStart = this.index + 1;
|
|
7380
|
+
}
|
|
7381
|
+
else if (this.isTagStartChar(c)) {
|
|
7382
|
+
const lower = c | 0x20;
|
|
7383
|
+
this.sectionStart = this.index;
|
|
7384
|
+
if (this.xmlMode) {
|
|
7385
|
+
this.state = State.InTagName;
|
|
7386
|
+
}
|
|
7387
|
+
else if (lower === Sequences.ScriptEnd[2]) {
|
|
7388
|
+
this.state = State.BeforeSpecialS;
|
|
7389
|
+
}
|
|
7390
|
+
else if (lower === Sequences.TitleEnd[2] ||
|
|
7391
|
+
lower === Sequences.XmpEnd[2]) {
|
|
7392
|
+
this.state = State.BeforeSpecialT;
|
|
7393
|
+
}
|
|
7394
|
+
else {
|
|
7395
|
+
this.state = State.InTagName;
|
|
7396
|
+
}
|
|
7397
|
+
}
|
|
7398
|
+
else if (c === CharCodes.Slash) {
|
|
7399
|
+
this.state = State.BeforeClosingTagName;
|
|
7400
|
+
}
|
|
7401
|
+
else {
|
|
7402
|
+
this.state = State.Text;
|
|
7403
|
+
this.stateText(c);
|
|
7404
|
+
}
|
|
7405
|
+
}
|
|
7406
|
+
stateInTagName(c) {
|
|
7407
|
+
if (isEndOfTagSection(c)) {
|
|
7408
|
+
this.cbs.onopentagname(this.sectionStart, this.index);
|
|
7409
|
+
this.sectionStart = -1;
|
|
7410
|
+
this.state = State.BeforeAttributeName;
|
|
7411
|
+
this.stateBeforeAttributeName(c);
|
|
7412
|
+
}
|
|
7413
|
+
}
|
|
7414
|
+
stateBeforeClosingTagName(c) {
|
|
7415
|
+
if (isWhitespace(c)) ;
|
|
7416
|
+
else if (c === CharCodes.Gt) {
|
|
7417
|
+
this.state = State.Text;
|
|
7418
|
+
}
|
|
7419
|
+
else {
|
|
7420
|
+
this.state = this.isTagStartChar(c)
|
|
7421
|
+
? State.InClosingTagName
|
|
7422
|
+
: State.InSpecialComment;
|
|
7423
|
+
this.sectionStart = this.index;
|
|
7424
|
+
}
|
|
7425
|
+
}
|
|
7426
|
+
stateInClosingTagName(c) {
|
|
7427
|
+
if (c === CharCodes.Gt || isWhitespace(c)) {
|
|
7428
|
+
this.cbs.onclosetag(this.sectionStart, this.index);
|
|
7429
|
+
this.sectionStart = -1;
|
|
7430
|
+
this.state = State.AfterClosingTagName;
|
|
7431
|
+
this.stateAfterClosingTagName(c);
|
|
7432
|
+
}
|
|
7433
|
+
}
|
|
7434
|
+
stateAfterClosingTagName(c) {
|
|
7435
|
+
// Skip everything until ">"
|
|
7436
|
+
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
|
|
7437
|
+
this.state = State.Text;
|
|
7438
|
+
this.sectionStart = this.index + 1;
|
|
7439
|
+
}
|
|
7440
|
+
}
|
|
7441
|
+
stateBeforeAttributeName(c) {
|
|
7442
|
+
if (c === CharCodes.Gt) {
|
|
7443
|
+
this.cbs.onopentagend(this.index);
|
|
7444
|
+
if (this.isSpecial) {
|
|
7445
|
+
this.state = State.InSpecialTag;
|
|
7446
|
+
this.sequenceIndex = 0;
|
|
7447
|
+
}
|
|
7448
|
+
else {
|
|
7449
|
+
this.state = State.Text;
|
|
7450
|
+
}
|
|
7451
|
+
this.sectionStart = this.index + 1;
|
|
7452
|
+
}
|
|
7453
|
+
else if (c === CharCodes.Slash) {
|
|
7454
|
+
this.state = State.InSelfClosingTag;
|
|
7455
|
+
}
|
|
7456
|
+
else if (!isWhitespace(c)) {
|
|
7457
|
+
this.state = State.InAttributeName;
|
|
7458
|
+
this.sectionStart = this.index;
|
|
7459
|
+
}
|
|
7460
|
+
}
|
|
7461
|
+
stateInSelfClosingTag(c) {
|
|
7462
|
+
if (c === CharCodes.Gt) {
|
|
7463
|
+
this.cbs.onselfclosingtag(this.index);
|
|
7464
|
+
this.state = State.Text;
|
|
7465
|
+
this.sectionStart = this.index + 1;
|
|
7466
|
+
this.isSpecial = false; // Reset special state, in case of self-closing special tags
|
|
7467
|
+
}
|
|
7468
|
+
else if (!isWhitespace(c)) {
|
|
7469
|
+
this.state = State.BeforeAttributeName;
|
|
7470
|
+
this.stateBeforeAttributeName(c);
|
|
7471
|
+
}
|
|
7472
|
+
}
|
|
7473
|
+
stateInAttributeName(c) {
|
|
7474
|
+
if (c === CharCodes.Eq || isEndOfTagSection(c)) {
|
|
7475
|
+
this.cbs.onattribname(this.sectionStart, this.index);
|
|
7476
|
+
this.sectionStart = this.index;
|
|
7477
|
+
this.state = State.AfterAttributeName;
|
|
7478
|
+
this.stateAfterAttributeName(c);
|
|
7479
|
+
}
|
|
7480
|
+
}
|
|
7481
|
+
stateAfterAttributeName(c) {
|
|
7482
|
+
if (c === CharCodes.Eq) {
|
|
7483
|
+
this.state = State.BeforeAttributeValue;
|
|
7484
|
+
}
|
|
7485
|
+
else if (c === CharCodes.Slash || c === CharCodes.Gt) {
|
|
7486
|
+
this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);
|
|
7487
|
+
this.sectionStart = -1;
|
|
7488
|
+
this.state = State.BeforeAttributeName;
|
|
7489
|
+
this.stateBeforeAttributeName(c);
|
|
7490
|
+
}
|
|
7491
|
+
else if (!isWhitespace(c)) {
|
|
7492
|
+
this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);
|
|
7493
|
+
this.state = State.InAttributeName;
|
|
7494
|
+
this.sectionStart = this.index;
|
|
7495
|
+
}
|
|
7496
|
+
}
|
|
7497
|
+
stateBeforeAttributeValue(c) {
|
|
7498
|
+
if (c === CharCodes.DoubleQuote) {
|
|
7499
|
+
this.state = State.InAttributeValueDq;
|
|
7500
|
+
this.sectionStart = this.index + 1;
|
|
7501
|
+
}
|
|
7502
|
+
else if (c === CharCodes.SingleQuote) {
|
|
7503
|
+
this.state = State.InAttributeValueSq;
|
|
7504
|
+
this.sectionStart = this.index + 1;
|
|
7505
|
+
}
|
|
7506
|
+
else if (!isWhitespace(c)) {
|
|
7507
|
+
this.sectionStart = this.index;
|
|
7508
|
+
this.state = State.InAttributeValueNq;
|
|
7509
|
+
this.stateInAttributeValueNoQuotes(c); // Reconsume token
|
|
7510
|
+
}
|
|
7511
|
+
}
|
|
7512
|
+
handleInAttributeValue(c, quote) {
|
|
7513
|
+
if (c === quote ||
|
|
7514
|
+
(!this.decodeEntities && this.fastForwardTo(quote))) {
|
|
7515
|
+
this.cbs.onattribdata(this.sectionStart, this.index);
|
|
7516
|
+
this.sectionStart = -1;
|
|
7517
|
+
this.cbs.onattribend(quote === CharCodes.DoubleQuote
|
|
7518
|
+
? QuoteType.Double
|
|
7519
|
+
: QuoteType.Single, this.index + 1);
|
|
7520
|
+
this.state = State.BeforeAttributeName;
|
|
7521
|
+
}
|
|
7522
|
+
else if (this.decodeEntities && c === CharCodes.Amp) {
|
|
7523
|
+
this.startEntity();
|
|
7524
|
+
}
|
|
7525
|
+
}
|
|
7526
|
+
stateInAttributeValueDoubleQuotes(c) {
|
|
7527
|
+
this.handleInAttributeValue(c, CharCodes.DoubleQuote);
|
|
7528
|
+
}
|
|
7529
|
+
stateInAttributeValueSingleQuotes(c) {
|
|
7530
|
+
this.handleInAttributeValue(c, CharCodes.SingleQuote);
|
|
7531
|
+
}
|
|
7532
|
+
stateInAttributeValueNoQuotes(c) {
|
|
7533
|
+
if (isWhitespace(c) || c === CharCodes.Gt) {
|
|
7534
|
+
this.cbs.onattribdata(this.sectionStart, this.index);
|
|
7535
|
+
this.sectionStart = -1;
|
|
7536
|
+
this.cbs.onattribend(QuoteType.Unquoted, this.index);
|
|
7537
|
+
this.state = State.BeforeAttributeName;
|
|
7538
|
+
this.stateBeforeAttributeName(c);
|
|
7539
|
+
}
|
|
7540
|
+
else if (this.decodeEntities && c === CharCodes.Amp) {
|
|
7541
|
+
this.startEntity();
|
|
7542
|
+
}
|
|
7543
|
+
}
|
|
7544
|
+
stateBeforeDeclaration(c) {
|
|
7545
|
+
if (c === CharCodes.OpeningSquareBracket) {
|
|
7546
|
+
this.state = State.CDATASequence;
|
|
7547
|
+
this.sequenceIndex = 0;
|
|
7548
|
+
}
|
|
7549
|
+
else {
|
|
7550
|
+
this.state =
|
|
7551
|
+
c === CharCodes.Dash
|
|
7552
|
+
? State.BeforeComment
|
|
7553
|
+
: State.InDeclaration;
|
|
7554
|
+
}
|
|
7555
|
+
}
|
|
7556
|
+
stateInDeclaration(c) {
|
|
7557
|
+
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
|
|
7558
|
+
this.cbs.ondeclaration(this.sectionStart, this.index);
|
|
7559
|
+
this.state = State.Text;
|
|
7560
|
+
this.sectionStart = this.index + 1;
|
|
7561
|
+
}
|
|
7562
|
+
}
|
|
7563
|
+
stateInProcessingInstruction(c) {
|
|
7564
|
+
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
|
|
7565
|
+
this.cbs.onprocessinginstruction(this.sectionStart, this.index);
|
|
7566
|
+
this.state = State.Text;
|
|
7567
|
+
this.sectionStart = this.index + 1;
|
|
7568
|
+
}
|
|
7569
|
+
}
|
|
7570
|
+
stateBeforeComment(c) {
|
|
7571
|
+
if (c === CharCodes.Dash) {
|
|
7572
|
+
this.state = State.InCommentLike;
|
|
7573
|
+
this.currentSequence = Sequences.CommentEnd;
|
|
7574
|
+
// Allow short comments (eg. <!-->)
|
|
7575
|
+
this.sequenceIndex = 2;
|
|
7576
|
+
this.sectionStart = this.index + 1;
|
|
7577
|
+
}
|
|
7578
|
+
else {
|
|
7579
|
+
this.state = State.InDeclaration;
|
|
7580
|
+
}
|
|
7581
|
+
}
|
|
7582
|
+
stateInSpecialComment(c) {
|
|
7583
|
+
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
|
|
7584
|
+
this.cbs.oncomment(this.sectionStart, this.index, 0);
|
|
7585
|
+
this.state = State.Text;
|
|
7586
|
+
this.sectionStart = this.index + 1;
|
|
7587
|
+
}
|
|
7588
|
+
}
|
|
7589
|
+
stateBeforeSpecialS(c) {
|
|
7590
|
+
const lower = c | 0x20;
|
|
7591
|
+
if (lower === Sequences.ScriptEnd[3]) {
|
|
7592
|
+
this.startSpecial(Sequences.ScriptEnd, 4);
|
|
7593
|
+
}
|
|
7594
|
+
else if (lower === Sequences.StyleEnd[3]) {
|
|
7595
|
+
this.startSpecial(Sequences.StyleEnd, 4);
|
|
7596
|
+
}
|
|
7597
|
+
else {
|
|
7598
|
+
this.state = State.InTagName;
|
|
7599
|
+
this.stateInTagName(c); // Consume the token again
|
|
7600
|
+
}
|
|
7601
|
+
}
|
|
7602
|
+
stateBeforeSpecialT(c) {
|
|
7603
|
+
const lower = c | 0x20;
|
|
7604
|
+
switch (lower) {
|
|
7605
|
+
case Sequences.TitleEnd[3]: {
|
|
7606
|
+
this.startSpecial(Sequences.TitleEnd, 4);
|
|
7607
|
+
break;
|
|
7608
|
+
}
|
|
7609
|
+
case Sequences.TextareaEnd[3]: {
|
|
7610
|
+
this.startSpecial(Sequences.TextareaEnd, 4);
|
|
7611
|
+
break;
|
|
7612
|
+
}
|
|
7613
|
+
case Sequences.XmpEnd[3]: {
|
|
7614
|
+
this.startSpecial(Sequences.XmpEnd, 4);
|
|
7615
|
+
break;
|
|
7616
|
+
}
|
|
7617
|
+
default: {
|
|
7618
|
+
this.state = State.InTagName;
|
|
7619
|
+
this.stateInTagName(c); // Consume the token again
|
|
7620
|
+
}
|
|
7621
|
+
}
|
|
7622
|
+
}
|
|
7623
|
+
startEntity() {
|
|
7624
|
+
this.baseState = this.state;
|
|
7625
|
+
this.state = State.InEntity;
|
|
7626
|
+
this.entityStart = this.index;
|
|
7627
|
+
this.entityDecoder.startEntity(this.xmlMode
|
|
7628
|
+
? decode_1$1.DecodingMode.Strict
|
|
7629
|
+
: this.baseState === State.Text ||
|
|
7630
|
+
this.baseState === State.InSpecialTag
|
|
7631
|
+
? decode_1$1.DecodingMode.Legacy
|
|
7632
|
+
: decode_1$1.DecodingMode.Attribute);
|
|
7633
|
+
}
|
|
7634
|
+
stateInEntity() {
|
|
7635
|
+
const indexInBuffer = this.index - this.offset;
|
|
7636
|
+
const length = this.entityDecoder.write(this.buffer, indexInBuffer);
|
|
7637
|
+
// If `length` is positive, we are done with the entity.
|
|
7638
|
+
if (length >= 0) {
|
|
7639
|
+
this.state = this.baseState;
|
|
7640
|
+
if (length === 0) {
|
|
7641
|
+
this.index -= 1;
|
|
7642
|
+
}
|
|
7643
|
+
}
|
|
7644
|
+
else {
|
|
7645
|
+
if (indexInBuffer < this.buffer.length &&
|
|
7646
|
+
this.buffer.charCodeAt(indexInBuffer) === CharCodes.Amp) {
|
|
7647
|
+
this.state = this.baseState;
|
|
7648
|
+
this.index -= 1;
|
|
7649
|
+
return;
|
|
7650
|
+
}
|
|
7651
|
+
// Mark buffer as consumed.
|
|
7652
|
+
this.index = this.offset + this.buffer.length - 1;
|
|
7653
|
+
}
|
|
7654
|
+
}
|
|
7655
|
+
/**
|
|
7656
|
+
* Remove data that has already been consumed from the buffer.
|
|
7657
|
+
*/
|
|
7658
|
+
cleanup() {
|
|
7659
|
+
// If we are inside of text or attributes, emit what we already have.
|
|
7660
|
+
if (this.running && this.sectionStart !== this.index) {
|
|
7661
|
+
if (this.state === State.Text ||
|
|
7662
|
+
(this.state === State.InSpecialTag && this.sequenceIndex === 0)) {
|
|
7663
|
+
this.cbs.ontext(this.sectionStart, this.index);
|
|
7664
|
+
this.sectionStart = this.index;
|
|
7665
|
+
}
|
|
7666
|
+
else if (this.state === State.InAttributeValueDq ||
|
|
7667
|
+
this.state === State.InAttributeValueSq ||
|
|
7668
|
+
this.state === State.InAttributeValueNq) {
|
|
7669
|
+
this.cbs.onattribdata(this.sectionStart, this.index);
|
|
7670
|
+
this.sectionStart = this.index;
|
|
7671
|
+
}
|
|
7672
|
+
}
|
|
7673
|
+
}
|
|
7674
|
+
shouldContinue() {
|
|
7675
|
+
return this.index < this.buffer.length + this.offset && this.running;
|
|
7676
|
+
}
|
|
7677
|
+
/**
|
|
7678
|
+
* Iterates through the buffer, calling the function corresponding to the current state.
|
|
7679
|
+
*
|
|
7680
|
+
* States that are more likely to be hit are higher up, as a performance improvement.
|
|
7681
|
+
*/
|
|
7682
|
+
parse() {
|
|
7683
|
+
while (this.shouldContinue()) {
|
|
7684
|
+
const c = this.buffer.charCodeAt(this.index - this.offset);
|
|
7685
|
+
switch (this.state) {
|
|
7686
|
+
case State.Text: {
|
|
7687
|
+
this.stateText(c);
|
|
7688
|
+
break;
|
|
7689
|
+
}
|
|
7690
|
+
case State.SpecialStartSequence: {
|
|
7691
|
+
this.stateSpecialStartSequence(c);
|
|
7692
|
+
break;
|
|
7693
|
+
}
|
|
7694
|
+
case State.InSpecialTag: {
|
|
7695
|
+
this.stateInSpecialTag(c);
|
|
7696
|
+
break;
|
|
7697
|
+
}
|
|
7698
|
+
case State.CDATASequence: {
|
|
7699
|
+
this.stateCDATASequence(c);
|
|
7700
|
+
break;
|
|
7701
|
+
}
|
|
7702
|
+
case State.InAttributeValueDq: {
|
|
7703
|
+
this.stateInAttributeValueDoubleQuotes(c);
|
|
7704
|
+
break;
|
|
7705
|
+
}
|
|
7706
|
+
case State.InAttributeName: {
|
|
7707
|
+
this.stateInAttributeName(c);
|
|
7708
|
+
break;
|
|
7709
|
+
}
|
|
7710
|
+
case State.InCommentLike: {
|
|
7711
|
+
this.stateInCommentLike(c);
|
|
7712
|
+
break;
|
|
7713
|
+
}
|
|
7714
|
+
case State.InSpecialComment: {
|
|
7715
|
+
this.stateInSpecialComment(c);
|
|
7716
|
+
break;
|
|
7717
|
+
}
|
|
7718
|
+
case State.BeforeAttributeName: {
|
|
7719
|
+
this.stateBeforeAttributeName(c);
|
|
7720
|
+
break;
|
|
7721
|
+
}
|
|
7722
|
+
case State.InTagName: {
|
|
7723
|
+
this.stateInTagName(c);
|
|
7724
|
+
break;
|
|
7725
|
+
}
|
|
7726
|
+
case State.InClosingTagName: {
|
|
7727
|
+
this.stateInClosingTagName(c);
|
|
7728
|
+
break;
|
|
7729
|
+
}
|
|
7730
|
+
case State.BeforeTagName: {
|
|
7731
|
+
this.stateBeforeTagName(c);
|
|
7732
|
+
break;
|
|
7733
|
+
}
|
|
7734
|
+
case State.AfterAttributeName: {
|
|
7735
|
+
this.stateAfterAttributeName(c);
|
|
7736
|
+
break;
|
|
7737
|
+
}
|
|
7738
|
+
case State.InAttributeValueSq: {
|
|
7739
|
+
this.stateInAttributeValueSingleQuotes(c);
|
|
7740
|
+
break;
|
|
7741
|
+
}
|
|
7742
|
+
case State.BeforeAttributeValue: {
|
|
7743
|
+
this.stateBeforeAttributeValue(c);
|
|
7744
|
+
break;
|
|
7745
|
+
}
|
|
7746
|
+
case State.BeforeClosingTagName: {
|
|
7747
|
+
this.stateBeforeClosingTagName(c);
|
|
7748
|
+
break;
|
|
7749
|
+
}
|
|
7750
|
+
case State.AfterClosingTagName: {
|
|
7751
|
+
this.stateAfterClosingTagName(c);
|
|
7752
|
+
break;
|
|
7753
|
+
}
|
|
7754
|
+
case State.BeforeSpecialS: {
|
|
7755
|
+
this.stateBeforeSpecialS(c);
|
|
7756
|
+
break;
|
|
7757
|
+
}
|
|
7758
|
+
case State.BeforeSpecialT: {
|
|
7759
|
+
this.stateBeforeSpecialT(c);
|
|
7760
|
+
break;
|
|
7761
|
+
}
|
|
7762
|
+
case State.InAttributeValueNq: {
|
|
7763
|
+
this.stateInAttributeValueNoQuotes(c);
|
|
7764
|
+
break;
|
|
7765
|
+
}
|
|
7766
|
+
case State.InSelfClosingTag: {
|
|
7767
|
+
this.stateInSelfClosingTag(c);
|
|
7768
|
+
break;
|
|
7769
|
+
}
|
|
7770
|
+
case State.InDeclaration: {
|
|
7771
|
+
this.stateInDeclaration(c);
|
|
7772
|
+
break;
|
|
7773
|
+
}
|
|
7774
|
+
case State.BeforeDeclaration: {
|
|
7775
|
+
this.stateBeforeDeclaration(c);
|
|
7776
|
+
break;
|
|
7777
|
+
}
|
|
7778
|
+
case State.BeforeComment: {
|
|
7779
|
+
this.stateBeforeComment(c);
|
|
7780
|
+
break;
|
|
7781
|
+
}
|
|
7782
|
+
case State.InProcessingInstruction: {
|
|
7783
|
+
this.stateInProcessingInstruction(c);
|
|
7784
|
+
break;
|
|
7785
|
+
}
|
|
7786
|
+
case State.InEntity: {
|
|
7787
|
+
this.stateInEntity();
|
|
7788
|
+
break;
|
|
7789
|
+
}
|
|
7790
|
+
}
|
|
7791
|
+
this.index++;
|
|
7792
|
+
}
|
|
7793
|
+
this.cleanup();
|
|
7794
|
+
}
|
|
7795
|
+
finish() {
|
|
7796
|
+
if (this.state === State.InEntity) {
|
|
7797
|
+
this.entityDecoder.end();
|
|
7798
|
+
this.state = this.baseState;
|
|
7799
|
+
}
|
|
7800
|
+
this.handleTrailingData();
|
|
7801
|
+
this.cbs.onend();
|
|
7802
|
+
}
|
|
7803
|
+
/** Handle any trailing data. */
|
|
7804
|
+
handleTrailingData() {
|
|
7805
|
+
const endIndex = this.buffer.length + this.offset;
|
|
7806
|
+
// If there is no remaining data, we are done.
|
|
7807
|
+
if (this.sectionStart >= endIndex) {
|
|
7808
|
+
return;
|
|
7809
|
+
}
|
|
7810
|
+
if (this.state === State.InCommentLike) {
|
|
7811
|
+
if (this.currentSequence === Sequences.CdataEnd) {
|
|
7812
|
+
this.cbs.oncdata(this.sectionStart, endIndex, 0);
|
|
7813
|
+
}
|
|
7814
|
+
else {
|
|
7815
|
+
this.cbs.oncomment(this.sectionStart, endIndex, 0);
|
|
7816
|
+
}
|
|
7817
|
+
}
|
|
7818
|
+
else if (this.state === State.InTagName ||
|
|
7819
|
+
this.state === State.BeforeAttributeName ||
|
|
7820
|
+
this.state === State.BeforeAttributeValue ||
|
|
7821
|
+
this.state === State.AfterAttributeName ||
|
|
7822
|
+
this.state === State.InAttributeName ||
|
|
7823
|
+
this.state === State.InAttributeValueSq ||
|
|
7824
|
+
this.state === State.InAttributeValueDq ||
|
|
7825
|
+
this.state === State.InAttributeValueNq ||
|
|
7826
|
+
this.state === State.InClosingTagName) ;
|
|
7827
|
+
else {
|
|
7828
|
+
this.cbs.ontext(this.sectionStart, endIndex);
|
|
7829
|
+
}
|
|
7830
|
+
}
|
|
7831
|
+
emitCodePoint(cp, consumed) {
|
|
7832
|
+
if (this.baseState !== State.Text &&
|
|
7833
|
+
this.baseState !== State.InSpecialTag) {
|
|
7834
|
+
if (this.sectionStart < this.entityStart) {
|
|
7835
|
+
this.cbs.onattribdata(this.sectionStart, this.entityStart);
|
|
7836
|
+
}
|
|
7837
|
+
this.sectionStart = this.entityStart + consumed;
|
|
7838
|
+
this.index = this.sectionStart - 1;
|
|
7839
|
+
this.cbs.onattribentity(cp);
|
|
7840
|
+
}
|
|
7841
|
+
else {
|
|
7842
|
+
if (this.sectionStart < this.entityStart) {
|
|
7843
|
+
this.cbs.ontext(this.sectionStart, this.entityStart);
|
|
7844
|
+
}
|
|
7845
|
+
this.sectionStart = this.entityStart + consumed;
|
|
7846
|
+
this.index = this.sectionStart - 1;
|
|
7847
|
+
this.cbs.ontextentity(cp, this.sectionStart);
|
|
7848
|
+
}
|
|
7849
|
+
}
|
|
7850
|
+
};
|
|
7851
|
+
Tokenizer$2.default = Tokenizer$1;
|
|
7903
7852
|
|
|
7904
7853
|
var __createBinding$1 = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7905
7854
|
if (k2 === undefined) k2 = k;
|
|
@@ -7917,18 +7866,28 @@ var __setModuleDefault$1 = (commonjsGlobal && commonjsGlobal.__setModuleDefault)
|
|
|
7917
7866
|
}) : function(o, v) {
|
|
7918
7867
|
o["default"] = v;
|
|
7919
7868
|
});
|
|
7920
|
-
var __importStar$1 = (commonjsGlobal && commonjsGlobal.__importStar) || function (
|
|
7921
|
-
|
|
7922
|
-
|
|
7923
|
-
|
|
7924
|
-
|
|
7925
|
-
|
|
7926
|
-
};
|
|
7869
|
+
var __importStar$1 = (commonjsGlobal && commonjsGlobal.__importStar) || (function () {
|
|
7870
|
+
var ownKeys = function(o) {
|
|
7871
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
7872
|
+
var ar = [];
|
|
7873
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
7874
|
+
return ar;
|
|
7875
|
+
};
|
|
7876
|
+
return ownKeys(o);
|
|
7877
|
+
};
|
|
7878
|
+
return function (mod) {
|
|
7879
|
+
if (mod && mod.__esModule) return mod;
|
|
7880
|
+
var result = {};
|
|
7881
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding$1(result, mod, k[i]);
|
|
7882
|
+
__setModuleDefault$1(result, mod);
|
|
7883
|
+
return result;
|
|
7884
|
+
};
|
|
7885
|
+
})();
|
|
7927
7886
|
Object.defineProperty(Parser$4, "__esModule", { value: true });
|
|
7928
7887
|
Parser$4.Parser = void 0;
|
|
7929
|
-
|
|
7930
|
-
|
|
7931
|
-
|
|
7888
|
+
const Tokenizer_js_1 = __importStar$1(Tokenizer$2);
|
|
7889
|
+
const decode_1 = decode$1;
|
|
7890
|
+
const formTags = new Set([
|
|
7932
7891
|
"input",
|
|
7933
7892
|
"option",
|
|
7934
7893
|
"optgroup",
|
|
@@ -7937,11 +7896,11 @@ var formTags = new Set([
|
|
|
7937
7896
|
"datalist",
|
|
7938
7897
|
"textarea",
|
|
7939
7898
|
]);
|
|
7940
|
-
|
|
7941
|
-
|
|
7942
|
-
|
|
7943
|
-
|
|
7944
|
-
|
|
7899
|
+
const pTag = new Set(["p"]);
|
|
7900
|
+
const tableSectionTags = new Set(["thead", "tbody"]);
|
|
7901
|
+
const ddtTags = new Set(["dd", "dt"]);
|
|
7902
|
+
const rtpTags = new Set(["rt", "rp"]);
|
|
7903
|
+
const openImpliesClose = new Map([
|
|
7945
7904
|
["tr", new Set(["tr", "th", "td"])],
|
|
7946
7905
|
["th", new Set(["th"])],
|
|
7947
7906
|
["td", new Set(["thead", "th", "td"])],
|
|
@@ -7990,7 +7949,7 @@ var openImpliesClose = new Map([
|
|
|
7990
7949
|
["tbody", tableSectionTags],
|
|
7991
7950
|
["tfoot", tableSectionTags],
|
|
7992
7951
|
]);
|
|
7993
|
-
|
|
7952
|
+
const voidElements = new Set([
|
|
7994
7953
|
"area",
|
|
7995
7954
|
"base",
|
|
7996
7955
|
"basefont",
|
|
@@ -8011,8 +7970,8 @@ var voidElements = new Set([
|
|
|
8011
7970
|
"track",
|
|
8012
7971
|
"wbr",
|
|
8013
7972
|
]);
|
|
8014
|
-
|
|
8015
|
-
|
|
7973
|
+
const foreignContextElements = new Set(["math", "svg"]);
|
|
7974
|
+
const htmlIntegrationElements = new Set([
|
|
8016
7975
|
"mi",
|
|
8017
7976
|
"mo",
|
|
8018
7977
|
"mn",
|
|
@@ -8023,11 +7982,10 @@ var htmlIntegrationElements = new Set([
|
|
|
8023
7982
|
"desc",
|
|
8024
7983
|
"title",
|
|
8025
7984
|
]);
|
|
8026
|
-
|
|
8027
|
-
|
|
8028
|
-
|
|
8029
|
-
|
|
8030
|
-
var _a, _b, _c, _d, _e;
|
|
7985
|
+
const reNameEnd = /\s|\//;
|
|
7986
|
+
let Parser$3 = class Parser {
|
|
7987
|
+
constructor(cbs, options = {}) {
|
|
7988
|
+
var _a, _b, _c, _d, _e, _f;
|
|
8031
7989
|
this.options = options;
|
|
8032
7990
|
/** The start index of the last event. */
|
|
8033
7991
|
this.startIndex = 0;
|
|
@@ -8043,7 +8001,6 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8043
8001
|
this.attribvalue = "";
|
|
8044
8002
|
this.attribs = null;
|
|
8045
8003
|
this.stack = [];
|
|
8046
|
-
this.foreignContext = [];
|
|
8047
8004
|
this.buffers = [];
|
|
8048
8005
|
this.bufferOffset = 0;
|
|
8049
8006
|
/** The index of the last written buffer. Used when resuming after a `pause()`. */
|
|
@@ -8051,71 +8008,75 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8051
8008
|
/** Indicates whether the parser has finished running / `.end` has been called. */
|
|
8052
8009
|
this.ended = false;
|
|
8053
8010
|
this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
|
|
8054
|
-
this.
|
|
8011
|
+
this.htmlMode = !this.options.xmlMode;
|
|
8012
|
+
this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;
|
|
8055
8013
|
this.lowerCaseAttributeNames =
|
|
8056
|
-
(_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b :
|
|
8057
|
-
this.
|
|
8058
|
-
|
|
8014
|
+
(_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;
|
|
8015
|
+
this.recognizeSelfClosing =
|
|
8016
|
+
(_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;
|
|
8017
|
+
this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer_js_1.default)(this.options, this);
|
|
8018
|
+
this.foreignContext = [!this.htmlMode];
|
|
8019
|
+
(_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);
|
|
8059
8020
|
}
|
|
8060
8021
|
// Tokenizer event handlers
|
|
8061
8022
|
/** @internal */
|
|
8062
|
-
|
|
8023
|
+
ontext(start, endIndex) {
|
|
8063
8024
|
var _a, _b;
|
|
8064
|
-
|
|
8025
|
+
const data = this.getSlice(start, endIndex);
|
|
8065
8026
|
this.endIndex = endIndex - 1;
|
|
8066
8027
|
(_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);
|
|
8067
8028
|
this.startIndex = endIndex;
|
|
8068
|
-
}
|
|
8029
|
+
}
|
|
8069
8030
|
/** @internal */
|
|
8070
|
-
|
|
8031
|
+
ontextentity(cp, endIndex) {
|
|
8071
8032
|
var _a, _b;
|
|
8072
|
-
|
|
8073
|
-
|
|
8074
|
-
|
|
8075
|
-
|
|
8076
|
-
|
|
8077
|
-
|
|
8078
|
-
|
|
8079
|
-
|
|
8080
|
-
|
|
8081
|
-
|
|
8082
|
-
|
|
8083
|
-
};
|
|
8033
|
+
this.endIndex = endIndex - 1;
|
|
8034
|
+
(_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, (0, decode_1.fromCodePoint)(cp));
|
|
8035
|
+
this.startIndex = endIndex;
|
|
8036
|
+
}
|
|
8037
|
+
/**
|
|
8038
|
+
* Checks if the current tag is a void element. Override this if you want
|
|
8039
|
+
* to specify your own additional void elements.
|
|
8040
|
+
*/
|
|
8041
|
+
isVoidElement(name) {
|
|
8042
|
+
return this.htmlMode && voidElements.has(name);
|
|
8043
|
+
}
|
|
8084
8044
|
/** @internal */
|
|
8085
|
-
|
|
8045
|
+
onopentagname(start, endIndex) {
|
|
8086
8046
|
this.endIndex = endIndex;
|
|
8087
|
-
|
|
8047
|
+
let name = this.getSlice(start, endIndex);
|
|
8088
8048
|
if (this.lowerCaseTagNames) {
|
|
8089
8049
|
name = name.toLowerCase();
|
|
8090
8050
|
}
|
|
8091
8051
|
this.emitOpenTag(name);
|
|
8092
|
-
}
|
|
8093
|
-
|
|
8052
|
+
}
|
|
8053
|
+
emitOpenTag(name) {
|
|
8094
8054
|
var _a, _b, _c, _d;
|
|
8095
8055
|
this.openTagStart = this.startIndex;
|
|
8096
8056
|
this.tagname = name;
|
|
8097
|
-
|
|
8057
|
+
const impliesClose = this.htmlMode && openImpliesClose.get(name);
|
|
8098
8058
|
if (impliesClose) {
|
|
8099
|
-
while (this.stack.length > 0 &&
|
|
8100
|
-
|
|
8101
|
-
var element = this.stack.pop();
|
|
8059
|
+
while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {
|
|
8060
|
+
const element = this.stack.shift();
|
|
8102
8061
|
(_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);
|
|
8103
8062
|
}
|
|
8104
8063
|
}
|
|
8105
8064
|
if (!this.isVoidElement(name)) {
|
|
8106
|
-
this.stack.
|
|
8107
|
-
if (
|
|
8108
|
-
|
|
8109
|
-
|
|
8110
|
-
|
|
8111
|
-
|
|
8065
|
+
this.stack.unshift(name);
|
|
8066
|
+
if (this.htmlMode) {
|
|
8067
|
+
if (foreignContextElements.has(name)) {
|
|
8068
|
+
this.foreignContext.unshift(true);
|
|
8069
|
+
}
|
|
8070
|
+
else if (htmlIntegrationElements.has(name)) {
|
|
8071
|
+
this.foreignContext.unshift(false);
|
|
8072
|
+
}
|
|
8112
8073
|
}
|
|
8113
8074
|
}
|
|
8114
8075
|
(_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);
|
|
8115
8076
|
if (this.cbs.onopentag)
|
|
8116
8077
|
this.attribs = {};
|
|
8117
|
-
}
|
|
8118
|
-
|
|
8078
|
+
}
|
|
8079
|
+
endOpenTag(isImplied) {
|
|
8119
8080
|
var _a, _b;
|
|
8120
8081
|
this.startIndex = this.openTagStart;
|
|
8121
8082
|
if (this.attribs) {
|
|
@@ -8126,60 +8087,55 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8126
8087
|
this.cbs.onclosetag(this.tagname, true);
|
|
8127
8088
|
}
|
|
8128
8089
|
this.tagname = "";
|
|
8129
|
-
}
|
|
8090
|
+
}
|
|
8130
8091
|
/** @internal */
|
|
8131
|
-
|
|
8092
|
+
onopentagend(endIndex) {
|
|
8132
8093
|
this.endIndex = endIndex;
|
|
8133
8094
|
this.endOpenTag(false);
|
|
8134
8095
|
// Set `startIndex` for next node
|
|
8135
8096
|
this.startIndex = endIndex + 1;
|
|
8136
|
-
}
|
|
8097
|
+
}
|
|
8137
8098
|
/** @internal */
|
|
8138
|
-
|
|
8139
|
-
var _a, _b, _c, _d, _e, _f;
|
|
8099
|
+
onclosetag(start, endIndex) {
|
|
8100
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
8140
8101
|
this.endIndex = endIndex;
|
|
8141
|
-
|
|
8102
|
+
let name = this.getSlice(start, endIndex);
|
|
8142
8103
|
if (this.lowerCaseTagNames) {
|
|
8143
8104
|
name = name.toLowerCase();
|
|
8144
8105
|
}
|
|
8145
|
-
if (
|
|
8146
|
-
|
|
8147
|
-
|
|
8106
|
+
if (this.htmlMode &&
|
|
8107
|
+
(foreignContextElements.has(name) ||
|
|
8108
|
+
htmlIntegrationElements.has(name))) {
|
|
8109
|
+
this.foreignContext.shift();
|
|
8148
8110
|
}
|
|
8149
8111
|
if (!this.isVoidElement(name)) {
|
|
8150
|
-
|
|
8112
|
+
const pos = this.stack.indexOf(name);
|
|
8151
8113
|
if (pos !== -1) {
|
|
8152
|
-
|
|
8153
|
-
|
|
8154
|
-
|
|
8155
|
-
|
|
8156
|
-
this.cbs.onclosetag(this.stack.pop(), count !== 0);
|
|
8157
|
-
}
|
|
8114
|
+
for (let index = 0; index <= pos; index++) {
|
|
8115
|
+
const element = this.stack.shift();
|
|
8116
|
+
// We know the stack has sufficient elements.
|
|
8117
|
+
(_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);
|
|
8158
8118
|
}
|
|
8159
|
-
else
|
|
8160
|
-
this.stack.length = pos;
|
|
8161
8119
|
}
|
|
8162
|
-
else if (
|
|
8120
|
+
else if (this.htmlMode && name === "p") {
|
|
8163
8121
|
// Implicit open before close
|
|
8164
8122
|
this.emitOpenTag("p");
|
|
8165
8123
|
this.closeCurrentTag(true);
|
|
8166
8124
|
}
|
|
8167
8125
|
}
|
|
8168
|
-
else if (
|
|
8126
|
+
else if (this.htmlMode && name === "br") {
|
|
8169
8127
|
// We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.
|
|
8170
|
-
(
|
|
8171
|
-
(
|
|
8172
|
-
(
|
|
8128
|
+
(_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br");
|
|
8129
|
+
(_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true);
|
|
8130
|
+
(_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false);
|
|
8173
8131
|
}
|
|
8174
8132
|
// Set `startIndex` for next node
|
|
8175
8133
|
this.startIndex = endIndex + 1;
|
|
8176
|
-
}
|
|
8134
|
+
}
|
|
8177
8135
|
/** @internal */
|
|
8178
|
-
|
|
8136
|
+
onselfclosingtag(endIndex) {
|
|
8179
8137
|
this.endIndex = endIndex;
|
|
8180
|
-
if (this.
|
|
8181
|
-
this.options.recognizeSelfClosing ||
|
|
8182
|
-
this.foreignContext[this.foreignContext.length - 1]) {
|
|
8138
|
+
if (this.recognizeSelfClosing || this.foreignContext[0]) {
|
|
8183
8139
|
this.closeCurrentTag(false);
|
|
8184
8140
|
// Set `startIndex` for next node
|
|
8185
8141
|
this.startIndex = endIndex + 1;
|
|
@@ -8188,36 +8144,36 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8188
8144
|
// Ignore the fact that the tag is self-closing.
|
|
8189
8145
|
this.onopentagend(endIndex);
|
|
8190
8146
|
}
|
|
8191
|
-
}
|
|
8192
|
-
|
|
8147
|
+
}
|
|
8148
|
+
closeCurrentTag(isOpenImplied) {
|
|
8193
8149
|
var _a, _b;
|
|
8194
|
-
|
|
8150
|
+
const name = this.tagname;
|
|
8195
8151
|
this.endOpenTag(isOpenImplied);
|
|
8196
8152
|
// Self-closing tags will be on the top of the stack
|
|
8197
|
-
if (this.stack[
|
|
8153
|
+
if (this.stack[0] === name) {
|
|
8198
8154
|
// If the opening tag isn't implied, the closing tag has to be implied.
|
|
8199
8155
|
(_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);
|
|
8200
|
-
this.stack.
|
|
8156
|
+
this.stack.shift();
|
|
8201
8157
|
}
|
|
8202
|
-
}
|
|
8158
|
+
}
|
|
8203
8159
|
/** @internal */
|
|
8204
|
-
|
|
8160
|
+
onattribname(start, endIndex) {
|
|
8205
8161
|
this.startIndex = start;
|
|
8206
|
-
|
|
8162
|
+
const name = this.getSlice(start, endIndex);
|
|
8207
8163
|
this.attribname = this.lowerCaseAttributeNames
|
|
8208
8164
|
? name.toLowerCase()
|
|
8209
8165
|
: name;
|
|
8210
|
-
}
|
|
8166
|
+
}
|
|
8211
8167
|
/** @internal */
|
|
8212
|
-
|
|
8168
|
+
onattribdata(start, endIndex) {
|
|
8213
8169
|
this.attribvalue += this.getSlice(start, endIndex);
|
|
8214
|
-
}
|
|
8170
|
+
}
|
|
8215
8171
|
/** @internal */
|
|
8216
|
-
|
|
8217
|
-
this.attribvalue += (0,
|
|
8218
|
-
}
|
|
8172
|
+
onattribentity(cp) {
|
|
8173
|
+
this.attribvalue += (0, decode_1.fromCodePoint)(cp);
|
|
8174
|
+
}
|
|
8219
8175
|
/** @internal */
|
|
8220
|
-
|
|
8176
|
+
onattribend(quote, endIndex) {
|
|
8221
8177
|
var _a, _b;
|
|
8222
8178
|
this.endIndex = endIndex;
|
|
8223
8179
|
(_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === Tokenizer_js_1.QuoteType.Double
|
|
@@ -8232,78 +8188,79 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8232
8188
|
this.attribs[this.attribname] = this.attribvalue;
|
|
8233
8189
|
}
|
|
8234
8190
|
this.attribvalue = "";
|
|
8235
|
-
}
|
|
8236
|
-
|
|
8237
|
-
|
|
8238
|
-
|
|
8191
|
+
}
|
|
8192
|
+
getInstructionName(value) {
|
|
8193
|
+
const index = value.search(reNameEnd);
|
|
8194
|
+
let name = index < 0 ? value : value.substr(0, index);
|
|
8239
8195
|
if (this.lowerCaseTagNames) {
|
|
8240
8196
|
name = name.toLowerCase();
|
|
8241
8197
|
}
|
|
8242
8198
|
return name;
|
|
8243
|
-
}
|
|
8199
|
+
}
|
|
8244
8200
|
/** @internal */
|
|
8245
|
-
|
|
8201
|
+
ondeclaration(start, endIndex) {
|
|
8246
8202
|
this.endIndex = endIndex;
|
|
8247
|
-
|
|
8203
|
+
const value = this.getSlice(start, endIndex);
|
|
8248
8204
|
if (this.cbs.onprocessinginstruction) {
|
|
8249
|
-
|
|
8250
|
-
this.cbs.onprocessinginstruction(
|
|
8205
|
+
const name = this.getInstructionName(value);
|
|
8206
|
+
this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);
|
|
8251
8207
|
}
|
|
8252
8208
|
// Set `startIndex` for next node
|
|
8253
8209
|
this.startIndex = endIndex + 1;
|
|
8254
|
-
}
|
|
8210
|
+
}
|
|
8255
8211
|
/** @internal */
|
|
8256
|
-
|
|
8212
|
+
onprocessinginstruction(start, endIndex) {
|
|
8257
8213
|
this.endIndex = endIndex;
|
|
8258
|
-
|
|
8214
|
+
const value = this.getSlice(start, endIndex);
|
|
8259
8215
|
if (this.cbs.onprocessinginstruction) {
|
|
8260
|
-
|
|
8261
|
-
this.cbs.onprocessinginstruction(
|
|
8216
|
+
const name = this.getInstructionName(value);
|
|
8217
|
+
this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);
|
|
8262
8218
|
}
|
|
8263
8219
|
// Set `startIndex` for next node
|
|
8264
8220
|
this.startIndex = endIndex + 1;
|
|
8265
|
-
}
|
|
8221
|
+
}
|
|
8266
8222
|
/** @internal */
|
|
8267
|
-
|
|
8223
|
+
oncomment(start, endIndex, offset) {
|
|
8268
8224
|
var _a, _b, _c, _d;
|
|
8269
8225
|
this.endIndex = endIndex;
|
|
8270
8226
|
(_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));
|
|
8271
8227
|
(_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
8272
8228
|
// Set `startIndex` for next node
|
|
8273
8229
|
this.startIndex = endIndex + 1;
|
|
8274
|
-
}
|
|
8230
|
+
}
|
|
8275
8231
|
/** @internal */
|
|
8276
|
-
|
|
8232
|
+
oncdata(start, endIndex, offset) {
|
|
8277
8233
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
8278
8234
|
this.endIndex = endIndex;
|
|
8279
|
-
|
|
8280
|
-
if (this.
|
|
8235
|
+
const value = this.getSlice(start, endIndex - offset);
|
|
8236
|
+
if (!this.htmlMode || this.options.recognizeCDATA) {
|
|
8281
8237
|
(_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
8282
8238
|
(_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
|
|
8283
8239
|
(_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
|
|
8284
8240
|
}
|
|
8285
8241
|
else {
|
|
8286
|
-
(_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g,
|
|
8242
|
+
(_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);
|
|
8287
8243
|
(_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);
|
|
8288
8244
|
}
|
|
8289
8245
|
// Set `startIndex` for next node
|
|
8290
8246
|
this.startIndex = endIndex + 1;
|
|
8291
|
-
}
|
|
8247
|
+
}
|
|
8292
8248
|
/** @internal */
|
|
8293
|
-
|
|
8249
|
+
onend() {
|
|
8294
8250
|
var _a, _b;
|
|
8295
8251
|
if (this.cbs.onclosetag) {
|
|
8296
8252
|
// Set the end index for all remaining tags
|
|
8297
8253
|
this.endIndex = this.startIndex;
|
|
8298
|
-
for (
|
|
8299
|
-
;
|
|
8254
|
+
for (let index = 0; index < this.stack.length; index++) {
|
|
8255
|
+
this.cbs.onclosetag(this.stack[index], true);
|
|
8256
|
+
}
|
|
8300
8257
|
}
|
|
8301
8258
|
(_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
8302
|
-
}
|
|
8259
|
+
}
|
|
8303
8260
|
/**
|
|
8304
8261
|
* Resets the parser to a blank state, ready to parse a new HTML document
|
|
8305
8262
|
*/
|
|
8306
|
-
|
|
8263
|
+
reset() {
|
|
8307
8264
|
var _a, _b, _c, _d;
|
|
8308
8265
|
(_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
8309
8266
|
this.tokenizer.reset();
|
|
@@ -8315,42 +8272,44 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8315
8272
|
this.endIndex = 0;
|
|
8316
8273
|
(_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
|
|
8317
8274
|
this.buffers.length = 0;
|
|
8275
|
+
this.foreignContext.length = 0;
|
|
8276
|
+
this.foreignContext.unshift(!this.htmlMode);
|
|
8318
8277
|
this.bufferOffset = 0;
|
|
8319
8278
|
this.writeIndex = 0;
|
|
8320
8279
|
this.ended = false;
|
|
8321
|
-
}
|
|
8280
|
+
}
|
|
8322
8281
|
/**
|
|
8323
8282
|
* Resets the parser, then parses a complete document and
|
|
8324
8283
|
* pushes it to the handler.
|
|
8325
8284
|
*
|
|
8326
8285
|
* @param data Document to parse.
|
|
8327
8286
|
*/
|
|
8328
|
-
|
|
8287
|
+
parseComplete(data) {
|
|
8329
8288
|
this.reset();
|
|
8330
8289
|
this.end(data);
|
|
8331
|
-
}
|
|
8332
|
-
|
|
8290
|
+
}
|
|
8291
|
+
getSlice(start, end) {
|
|
8333
8292
|
while (start - this.bufferOffset >= this.buffers[0].length) {
|
|
8334
8293
|
this.shiftBuffer();
|
|
8335
8294
|
}
|
|
8336
|
-
|
|
8295
|
+
let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);
|
|
8337
8296
|
while (end - this.bufferOffset > this.buffers[0].length) {
|
|
8338
8297
|
this.shiftBuffer();
|
|
8339
8298
|
slice += this.buffers[0].slice(0, end - this.bufferOffset);
|
|
8340
8299
|
}
|
|
8341
8300
|
return slice;
|
|
8342
|
-
}
|
|
8343
|
-
|
|
8301
|
+
}
|
|
8302
|
+
shiftBuffer() {
|
|
8344
8303
|
this.bufferOffset += this.buffers[0].length;
|
|
8345
8304
|
this.writeIndex--;
|
|
8346
8305
|
this.buffers.shift();
|
|
8347
|
-
}
|
|
8306
|
+
}
|
|
8348
8307
|
/**
|
|
8349
8308
|
* Parses a chunk of data and calls the corresponding callbacks.
|
|
8350
8309
|
*
|
|
8351
8310
|
* @param chunk Chunk to parse.
|
|
8352
8311
|
*/
|
|
8353
|
-
|
|
8312
|
+
write(chunk) {
|
|
8354
8313
|
var _a, _b;
|
|
8355
8314
|
if (this.ended) {
|
|
8356
8315
|
(_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".write() after done!"));
|
|
@@ -8361,13 +8320,13 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8361
8320
|
this.tokenizer.write(chunk);
|
|
8362
8321
|
this.writeIndex++;
|
|
8363
8322
|
}
|
|
8364
|
-
}
|
|
8323
|
+
}
|
|
8365
8324
|
/**
|
|
8366
8325
|
* Parses the end of the buffer and clears the stack, calls onend.
|
|
8367
8326
|
*
|
|
8368
8327
|
* @param chunk Optional final chunk to parse.
|
|
8369
8328
|
*/
|
|
8370
|
-
|
|
8329
|
+
end(chunk) {
|
|
8371
8330
|
var _a, _b;
|
|
8372
8331
|
if (this.ended) {
|
|
8373
8332
|
(_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".end() after done!"));
|
|
@@ -8377,17 +8336,17 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8377
8336
|
this.write(chunk);
|
|
8378
8337
|
this.ended = true;
|
|
8379
8338
|
this.tokenizer.end();
|
|
8380
|
-
}
|
|
8339
|
+
}
|
|
8381
8340
|
/**
|
|
8382
8341
|
* Pauses parsing. The parser won't emit events until `resume` is called.
|
|
8383
8342
|
*/
|
|
8384
|
-
|
|
8343
|
+
pause() {
|
|
8385
8344
|
this.tokenizer.pause();
|
|
8386
|
-
}
|
|
8345
|
+
}
|
|
8387
8346
|
/**
|
|
8388
8347
|
* Resumes parsing after `pause` was called.
|
|
8389
8348
|
*/
|
|
8390
|
-
|
|
8349
|
+
resume() {
|
|
8391
8350
|
this.tokenizer.resume();
|
|
8392
8351
|
while (this.tokenizer.running &&
|
|
8393
8352
|
this.writeIndex < this.buffers.length) {
|
|
@@ -8395,27 +8354,26 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8395
8354
|
}
|
|
8396
8355
|
if (this.ended)
|
|
8397
8356
|
this.tokenizer.end();
|
|
8398
|
-
}
|
|
8357
|
+
}
|
|
8399
8358
|
/**
|
|
8400
8359
|
* Alias of `write`, for backwards compatibility.
|
|
8401
8360
|
*
|
|
8402
8361
|
* @param chunk Chunk to parse.
|
|
8403
8362
|
* @deprecated
|
|
8404
8363
|
*/
|
|
8405
|
-
|
|
8364
|
+
parseChunk(chunk) {
|
|
8406
8365
|
this.write(chunk);
|
|
8407
|
-
}
|
|
8366
|
+
}
|
|
8408
8367
|
/**
|
|
8409
8368
|
* Alias of `end`, for backwards compatibility.
|
|
8410
8369
|
*
|
|
8411
8370
|
* @param chunk Optional final chunk to parse.
|
|
8412
8371
|
* @deprecated
|
|
8413
8372
|
*/
|
|
8414
|
-
|
|
8373
|
+
done(chunk) {
|
|
8415
8374
|
this.end(chunk);
|
|
8416
|
-
}
|
|
8417
|
-
|
|
8418
|
-
}());
|
|
8375
|
+
}
|
|
8376
|
+
};
|
|
8419
8377
|
Parser$4.Parser = Parser$3;
|
|
8420
8378
|
|
|
8421
8379
|
var lib$4 = {};
|
|
@@ -8967,168 +8925,808 @@ function cloneChildren(childs) {
|
|
|
8967
8925
|
if (k2 === undefined) k2 = k;
|
|
8968
8926
|
o[k2] = m[k];
|
|
8969
8927
|
}));
|
|
8970
|
-
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
8971
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
8928
|
+
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
8929
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
8930
|
+
};
|
|
8931
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8932
|
+
exports.DomHandler = void 0;
|
|
8933
|
+
var domelementtype_1 = lib$3;
|
|
8934
|
+
var node_js_1 = node$1;
|
|
8935
|
+
__exportStar(node$1, exports);
|
|
8936
|
+
// Default options
|
|
8937
|
+
var defaultOpts = {
|
|
8938
|
+
withStartIndices: false,
|
|
8939
|
+
withEndIndices: false,
|
|
8940
|
+
xmlMode: false,
|
|
8941
|
+
};
|
|
8942
|
+
var DomHandler = /** @class */ (function () {
|
|
8943
|
+
/**
|
|
8944
|
+
* @param callback Called once parsing has completed.
|
|
8945
|
+
* @param options Settings for the handler.
|
|
8946
|
+
* @param elementCB Callback whenever a tag is closed.
|
|
8947
|
+
*/
|
|
8948
|
+
function DomHandler(callback, options, elementCB) {
|
|
8949
|
+
/** The elements of the DOM */
|
|
8950
|
+
this.dom = [];
|
|
8951
|
+
/** The root element for the DOM */
|
|
8952
|
+
this.root = new node_js_1.Document(this.dom);
|
|
8953
|
+
/** Indicated whether parsing has been completed. */
|
|
8954
|
+
this.done = false;
|
|
8955
|
+
/** Stack of open tags. */
|
|
8956
|
+
this.tagStack = [this.root];
|
|
8957
|
+
/** A data node that is still being written to. */
|
|
8958
|
+
this.lastNode = null;
|
|
8959
|
+
/** Reference to the parser instance. Used for location information. */
|
|
8960
|
+
this.parser = null;
|
|
8961
|
+
// Make it possible to skip arguments, for backwards-compatibility
|
|
8962
|
+
if (typeof options === "function") {
|
|
8963
|
+
elementCB = options;
|
|
8964
|
+
options = defaultOpts;
|
|
8965
|
+
}
|
|
8966
|
+
if (typeof callback === "object") {
|
|
8967
|
+
options = callback;
|
|
8968
|
+
callback = undefined;
|
|
8969
|
+
}
|
|
8970
|
+
this.callback = callback !== null && callback !== void 0 ? callback : null;
|
|
8971
|
+
this.options = options !== null && options !== void 0 ? options : defaultOpts;
|
|
8972
|
+
this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
|
|
8973
|
+
}
|
|
8974
|
+
DomHandler.prototype.onparserinit = function (parser) {
|
|
8975
|
+
this.parser = parser;
|
|
8976
|
+
};
|
|
8977
|
+
// Resets the handler back to starting state
|
|
8978
|
+
DomHandler.prototype.onreset = function () {
|
|
8979
|
+
this.dom = [];
|
|
8980
|
+
this.root = new node_js_1.Document(this.dom);
|
|
8981
|
+
this.done = false;
|
|
8982
|
+
this.tagStack = [this.root];
|
|
8983
|
+
this.lastNode = null;
|
|
8984
|
+
this.parser = null;
|
|
8985
|
+
};
|
|
8986
|
+
// Signals the handler that parsing is done
|
|
8987
|
+
DomHandler.prototype.onend = function () {
|
|
8988
|
+
if (this.done)
|
|
8989
|
+
return;
|
|
8990
|
+
this.done = true;
|
|
8991
|
+
this.parser = null;
|
|
8992
|
+
this.handleCallback(null);
|
|
8993
|
+
};
|
|
8994
|
+
DomHandler.prototype.onerror = function (error) {
|
|
8995
|
+
this.handleCallback(error);
|
|
8996
|
+
};
|
|
8997
|
+
DomHandler.prototype.onclosetag = function () {
|
|
8998
|
+
this.lastNode = null;
|
|
8999
|
+
var elem = this.tagStack.pop();
|
|
9000
|
+
if (this.options.withEndIndices) {
|
|
9001
|
+
elem.endIndex = this.parser.endIndex;
|
|
9002
|
+
}
|
|
9003
|
+
if (this.elementCB)
|
|
9004
|
+
this.elementCB(elem);
|
|
9005
|
+
};
|
|
9006
|
+
DomHandler.prototype.onopentag = function (name, attribs) {
|
|
9007
|
+
var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;
|
|
9008
|
+
var element = new node_js_1.Element(name, attribs, undefined, type);
|
|
9009
|
+
this.addNode(element);
|
|
9010
|
+
this.tagStack.push(element);
|
|
9011
|
+
};
|
|
9012
|
+
DomHandler.prototype.ontext = function (data) {
|
|
9013
|
+
var lastNode = this.lastNode;
|
|
9014
|
+
if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {
|
|
9015
|
+
lastNode.data += data;
|
|
9016
|
+
if (this.options.withEndIndices) {
|
|
9017
|
+
lastNode.endIndex = this.parser.endIndex;
|
|
9018
|
+
}
|
|
9019
|
+
}
|
|
9020
|
+
else {
|
|
9021
|
+
var node = new node_js_1.Text(data);
|
|
9022
|
+
this.addNode(node);
|
|
9023
|
+
this.lastNode = node;
|
|
9024
|
+
}
|
|
9025
|
+
};
|
|
9026
|
+
DomHandler.prototype.oncomment = function (data) {
|
|
9027
|
+
if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {
|
|
9028
|
+
this.lastNode.data += data;
|
|
9029
|
+
return;
|
|
9030
|
+
}
|
|
9031
|
+
var node = new node_js_1.Comment(data);
|
|
9032
|
+
this.addNode(node);
|
|
9033
|
+
this.lastNode = node;
|
|
9034
|
+
};
|
|
9035
|
+
DomHandler.prototype.oncommentend = function () {
|
|
9036
|
+
this.lastNode = null;
|
|
9037
|
+
};
|
|
9038
|
+
DomHandler.prototype.oncdatastart = function () {
|
|
9039
|
+
var text = new node_js_1.Text("");
|
|
9040
|
+
var node = new node_js_1.CDATA([text]);
|
|
9041
|
+
this.addNode(node);
|
|
9042
|
+
text.parent = node;
|
|
9043
|
+
this.lastNode = text;
|
|
9044
|
+
};
|
|
9045
|
+
DomHandler.prototype.oncdataend = function () {
|
|
9046
|
+
this.lastNode = null;
|
|
9047
|
+
};
|
|
9048
|
+
DomHandler.prototype.onprocessinginstruction = function (name, data) {
|
|
9049
|
+
var node = new node_js_1.ProcessingInstruction(name, data);
|
|
9050
|
+
this.addNode(node);
|
|
9051
|
+
};
|
|
9052
|
+
DomHandler.prototype.handleCallback = function (error) {
|
|
9053
|
+
if (typeof this.callback === "function") {
|
|
9054
|
+
this.callback(error, this.dom);
|
|
9055
|
+
}
|
|
9056
|
+
else if (error) {
|
|
9057
|
+
throw error;
|
|
9058
|
+
}
|
|
9059
|
+
};
|
|
9060
|
+
DomHandler.prototype.addNode = function (node) {
|
|
9061
|
+
var parent = this.tagStack[this.tagStack.length - 1];
|
|
9062
|
+
var previousSibling = parent.children[parent.children.length - 1];
|
|
9063
|
+
if (this.options.withStartIndices) {
|
|
9064
|
+
node.startIndex = this.parser.startIndex;
|
|
9065
|
+
}
|
|
9066
|
+
if (this.options.withEndIndices) {
|
|
9067
|
+
node.endIndex = this.parser.endIndex;
|
|
9068
|
+
}
|
|
9069
|
+
parent.children.push(node);
|
|
9070
|
+
if (previousSibling) {
|
|
9071
|
+
node.prev = previousSibling;
|
|
9072
|
+
previousSibling.next = node;
|
|
9073
|
+
}
|
|
9074
|
+
node.parent = parent;
|
|
9075
|
+
this.lastNode = null;
|
|
9076
|
+
};
|
|
9077
|
+
return DomHandler;
|
|
9078
|
+
}());
|
|
9079
|
+
exports.DomHandler = DomHandler;
|
|
9080
|
+
exports.default = DomHandler;
|
|
9081
|
+
} (lib$4));
|
|
9082
|
+
|
|
9083
|
+
var lib$2 = {};
|
|
9084
|
+
|
|
9085
|
+
var stringify$5 = {};
|
|
9086
|
+
|
|
9087
|
+
var lib$1 = {};
|
|
9088
|
+
|
|
9089
|
+
var lib = {};
|
|
9090
|
+
|
|
9091
|
+
var decode = {};
|
|
9092
|
+
|
|
9093
|
+
var decodeDataHtml = {};
|
|
9094
|
+
|
|
9095
|
+
// Generated using scripts/write-decode-map.ts
|
|
9096
|
+
Object.defineProperty(decodeDataHtml, "__esModule", { value: true });
|
|
9097
|
+
decodeDataHtml.default = new Uint16Array(
|
|
9098
|
+
// prettier-ignore
|
|
9099
|
+
"\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"
|
|
9100
|
+
.split("")
|
|
9101
|
+
.map(function (c) { return c.charCodeAt(0); }));
|
|
9102
|
+
|
|
9103
|
+
var decodeDataXml = {};
|
|
9104
|
+
|
|
9105
|
+
// Generated using scripts/write-decode-map.ts
|
|
9106
|
+
Object.defineProperty(decodeDataXml, "__esModule", { value: true });
|
|
9107
|
+
decodeDataXml.default = new Uint16Array(
|
|
9108
|
+
// prettier-ignore
|
|
9109
|
+
"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
9110
|
+
.split("")
|
|
9111
|
+
.map(function (c) { return c.charCodeAt(0); }));
|
|
9112
|
+
|
|
9113
|
+
var decode_codepoint = {};
|
|
9114
|
+
|
|
9115
|
+
(function (exports) {
|
|
9116
|
+
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
9117
|
+
var _a;
|
|
9118
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9119
|
+
exports.replaceCodePoint = exports.fromCodePoint = void 0;
|
|
9120
|
+
var decodeMap = new Map([
|
|
9121
|
+
[0, 65533],
|
|
9122
|
+
// C1 Unicode control character reference replacements
|
|
9123
|
+
[128, 8364],
|
|
9124
|
+
[130, 8218],
|
|
9125
|
+
[131, 402],
|
|
9126
|
+
[132, 8222],
|
|
9127
|
+
[133, 8230],
|
|
9128
|
+
[134, 8224],
|
|
9129
|
+
[135, 8225],
|
|
9130
|
+
[136, 710],
|
|
9131
|
+
[137, 8240],
|
|
9132
|
+
[138, 352],
|
|
9133
|
+
[139, 8249],
|
|
9134
|
+
[140, 338],
|
|
9135
|
+
[142, 381],
|
|
9136
|
+
[145, 8216],
|
|
9137
|
+
[146, 8217],
|
|
9138
|
+
[147, 8220],
|
|
9139
|
+
[148, 8221],
|
|
9140
|
+
[149, 8226],
|
|
9141
|
+
[150, 8211],
|
|
9142
|
+
[151, 8212],
|
|
9143
|
+
[152, 732],
|
|
9144
|
+
[153, 8482],
|
|
9145
|
+
[154, 353],
|
|
9146
|
+
[155, 8250],
|
|
9147
|
+
[156, 339],
|
|
9148
|
+
[158, 382],
|
|
9149
|
+
[159, 376],
|
|
9150
|
+
]);
|
|
9151
|
+
/**
|
|
9152
|
+
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
9153
|
+
*/
|
|
9154
|
+
exports.fromCodePoint =
|
|
9155
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
|
|
9156
|
+
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {
|
|
9157
|
+
var output = "";
|
|
9158
|
+
if (codePoint > 0xffff) {
|
|
9159
|
+
codePoint -= 0x10000;
|
|
9160
|
+
output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
|
|
9161
|
+
codePoint = 0xdc00 | (codePoint & 0x3ff);
|
|
9162
|
+
}
|
|
9163
|
+
output += String.fromCharCode(codePoint);
|
|
9164
|
+
return output;
|
|
9165
|
+
};
|
|
9166
|
+
/**
|
|
9167
|
+
* Replace the given code point with a replacement character if it is a
|
|
9168
|
+
* surrogate or is outside the valid range. Otherwise return the code
|
|
9169
|
+
* point unchanged.
|
|
9170
|
+
*/
|
|
9171
|
+
function replaceCodePoint(codePoint) {
|
|
9172
|
+
var _a;
|
|
9173
|
+
if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
|
|
9174
|
+
return 0xfffd;
|
|
9175
|
+
}
|
|
9176
|
+
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
9177
|
+
}
|
|
9178
|
+
exports.replaceCodePoint = replaceCodePoint;
|
|
9179
|
+
/**
|
|
9180
|
+
* Replace the code point if relevant, then convert it to a string.
|
|
9181
|
+
*
|
|
9182
|
+
* @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.
|
|
9183
|
+
* @param codePoint The code point to decode.
|
|
9184
|
+
* @returns The decoded code point.
|
|
9185
|
+
*/
|
|
9186
|
+
function decodeCodePoint(codePoint) {
|
|
9187
|
+
return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));
|
|
9188
|
+
}
|
|
9189
|
+
exports.default = decodeCodePoint;
|
|
9190
|
+
|
|
9191
|
+
} (decode_codepoint));
|
|
9192
|
+
|
|
9193
|
+
(function (exports) {
|
|
9194
|
+
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9195
|
+
if (k2 === undefined) k2 = k;
|
|
9196
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9197
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9198
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9199
|
+
}
|
|
9200
|
+
Object.defineProperty(o, k2, desc);
|
|
9201
|
+
}) : (function(o, m, k, k2) {
|
|
9202
|
+
if (k2 === undefined) k2 = k;
|
|
9203
|
+
o[k2] = m[k];
|
|
9204
|
+
}));
|
|
9205
|
+
var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
9206
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
9207
|
+
}) : function(o, v) {
|
|
9208
|
+
o["default"] = v;
|
|
9209
|
+
});
|
|
9210
|
+
var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {
|
|
9211
|
+
if (mod && mod.__esModule) return mod;
|
|
9212
|
+
var result = {};
|
|
9213
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
9214
|
+
__setModuleDefault(result, mod);
|
|
9215
|
+
return result;
|
|
8972
9216
|
};
|
|
8973
|
-
|
|
8974
|
-
|
|
8975
|
-
var domelementtype_1 = lib$3;
|
|
8976
|
-
var node_js_1 = node$1;
|
|
8977
|
-
__exportStar(node$1, exports);
|
|
8978
|
-
// Default options
|
|
8979
|
-
var defaultOpts = {
|
|
8980
|
-
withStartIndices: false,
|
|
8981
|
-
withEndIndices: false,
|
|
8982
|
-
xmlMode: false,
|
|
9217
|
+
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
|
|
9218
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8983
9219
|
};
|
|
8984
|
-
|
|
9220
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9221
|
+
exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;
|
|
9222
|
+
var decode_data_html_js_1 = __importDefault(decodeDataHtml);
|
|
9223
|
+
exports.htmlDecodeTree = decode_data_html_js_1.default;
|
|
9224
|
+
var decode_data_xml_js_1 = __importDefault(decodeDataXml);
|
|
9225
|
+
exports.xmlDecodeTree = decode_data_xml_js_1.default;
|
|
9226
|
+
var decode_codepoint_js_1 = __importStar(decode_codepoint);
|
|
9227
|
+
exports.decodeCodePoint = decode_codepoint_js_1.default;
|
|
9228
|
+
var decode_codepoint_js_2 = decode_codepoint;
|
|
9229
|
+
Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } });
|
|
9230
|
+
Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } });
|
|
9231
|
+
var CharCodes;
|
|
9232
|
+
(function (CharCodes) {
|
|
9233
|
+
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
9234
|
+
CharCodes[CharCodes["SEMI"] = 59] = "SEMI";
|
|
9235
|
+
CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS";
|
|
9236
|
+
CharCodes[CharCodes["ZERO"] = 48] = "ZERO";
|
|
9237
|
+
CharCodes[CharCodes["NINE"] = 57] = "NINE";
|
|
9238
|
+
CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A";
|
|
9239
|
+
CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F";
|
|
9240
|
+
CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X";
|
|
9241
|
+
CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z";
|
|
9242
|
+
CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A";
|
|
9243
|
+
CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F";
|
|
9244
|
+
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
9245
|
+
})(CharCodes || (CharCodes = {}));
|
|
9246
|
+
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
9247
|
+
var TO_LOWER_BIT = 32;
|
|
9248
|
+
var BinTrieFlags;
|
|
9249
|
+
(function (BinTrieFlags) {
|
|
9250
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
9251
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
9252
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
9253
|
+
})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));
|
|
9254
|
+
function isNumber(code) {
|
|
9255
|
+
return code >= CharCodes.ZERO && code <= CharCodes.NINE;
|
|
9256
|
+
}
|
|
9257
|
+
function isHexadecimalCharacter(code) {
|
|
9258
|
+
return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||
|
|
9259
|
+
(code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));
|
|
9260
|
+
}
|
|
9261
|
+
function isAsciiAlphaNumeric(code) {
|
|
9262
|
+
return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||
|
|
9263
|
+
(code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||
|
|
9264
|
+
isNumber(code));
|
|
9265
|
+
}
|
|
9266
|
+
/**
|
|
9267
|
+
* Checks if the given character is a valid end character for an entity in an attribute.
|
|
9268
|
+
*
|
|
9269
|
+
* Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
|
|
9270
|
+
* See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
|
|
9271
|
+
*/
|
|
9272
|
+
function isEntityInAttributeInvalidEnd(code) {
|
|
9273
|
+
return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);
|
|
9274
|
+
}
|
|
9275
|
+
var EntityDecoderState;
|
|
9276
|
+
(function (EntityDecoderState) {
|
|
9277
|
+
EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart";
|
|
9278
|
+
EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart";
|
|
9279
|
+
EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal";
|
|
9280
|
+
EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex";
|
|
9281
|
+
EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity";
|
|
9282
|
+
})(EntityDecoderState || (EntityDecoderState = {}));
|
|
9283
|
+
var DecodingMode;
|
|
9284
|
+
(function (DecodingMode) {
|
|
9285
|
+
/** Entities in text nodes that can end with any character. */
|
|
9286
|
+
DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy";
|
|
9287
|
+
/** Only allow entities terminated with a semicolon. */
|
|
9288
|
+
DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
|
|
9289
|
+
/** Entities in attributes have limitations on ending characters. */
|
|
9290
|
+
DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
|
|
9291
|
+
})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));
|
|
9292
|
+
/**
|
|
9293
|
+
* Token decoder with support of writing partial entities.
|
|
9294
|
+
*/
|
|
9295
|
+
var EntityDecoder = /** @class */ (function () {
|
|
9296
|
+
function EntityDecoder(
|
|
9297
|
+
/** The tree used to decode entities. */
|
|
9298
|
+
decodeTree,
|
|
9299
|
+
/**
|
|
9300
|
+
* The function that is called when a codepoint is decoded.
|
|
9301
|
+
*
|
|
9302
|
+
* For multi-byte named entities, this will be called multiple times,
|
|
9303
|
+
* with the second codepoint, and the same `consumed` value.
|
|
9304
|
+
*
|
|
9305
|
+
* @param codepoint The decoded codepoint.
|
|
9306
|
+
* @param consumed The number of bytes consumed by the decoder.
|
|
9307
|
+
*/
|
|
9308
|
+
emitCodePoint,
|
|
9309
|
+
/** An object that is used to produce errors. */
|
|
9310
|
+
errors) {
|
|
9311
|
+
this.decodeTree = decodeTree;
|
|
9312
|
+
this.emitCodePoint = emitCodePoint;
|
|
9313
|
+
this.errors = errors;
|
|
9314
|
+
/** The current state of the decoder. */
|
|
9315
|
+
this.state = EntityDecoderState.EntityStart;
|
|
9316
|
+
/** Characters that were consumed while parsing an entity. */
|
|
9317
|
+
this.consumed = 1;
|
|
9318
|
+
/**
|
|
9319
|
+
* The result of the entity.
|
|
9320
|
+
*
|
|
9321
|
+
* Either the result index of a numeric entity, or the codepoint of a
|
|
9322
|
+
* numeric entity.
|
|
9323
|
+
*/
|
|
9324
|
+
this.result = 0;
|
|
9325
|
+
/** The current index in the decode tree. */
|
|
9326
|
+
this.treeIndex = 0;
|
|
9327
|
+
/** The number of characters that were consumed in excess. */
|
|
9328
|
+
this.excess = 1;
|
|
9329
|
+
/** The mode in which the decoder is operating. */
|
|
9330
|
+
this.decodeMode = DecodingMode.Strict;
|
|
9331
|
+
}
|
|
9332
|
+
/** Resets the instance to make it reusable. */
|
|
9333
|
+
EntityDecoder.prototype.startEntity = function (decodeMode) {
|
|
9334
|
+
this.decodeMode = decodeMode;
|
|
9335
|
+
this.state = EntityDecoderState.EntityStart;
|
|
9336
|
+
this.result = 0;
|
|
9337
|
+
this.treeIndex = 0;
|
|
9338
|
+
this.excess = 1;
|
|
9339
|
+
this.consumed = 1;
|
|
9340
|
+
};
|
|
9341
|
+
/**
|
|
9342
|
+
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
9343
|
+
* If the entity is incomplete, the decoder will return -1.
|
|
9344
|
+
*
|
|
9345
|
+
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
9346
|
+
* entity is incomplete, and resume when the next string is written.
|
|
9347
|
+
*
|
|
9348
|
+
* @param string The string containing the entity (or a continuation of the entity).
|
|
9349
|
+
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
9350
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9351
|
+
*/
|
|
9352
|
+
EntityDecoder.prototype.write = function (str, offset) {
|
|
9353
|
+
switch (this.state) {
|
|
9354
|
+
case EntityDecoderState.EntityStart: {
|
|
9355
|
+
if (str.charCodeAt(offset) === CharCodes.NUM) {
|
|
9356
|
+
this.state = EntityDecoderState.NumericStart;
|
|
9357
|
+
this.consumed += 1;
|
|
9358
|
+
return this.stateNumericStart(str, offset + 1);
|
|
9359
|
+
}
|
|
9360
|
+
this.state = EntityDecoderState.NamedEntity;
|
|
9361
|
+
return this.stateNamedEntity(str, offset);
|
|
9362
|
+
}
|
|
9363
|
+
case EntityDecoderState.NumericStart: {
|
|
9364
|
+
return this.stateNumericStart(str, offset);
|
|
9365
|
+
}
|
|
9366
|
+
case EntityDecoderState.NumericDecimal: {
|
|
9367
|
+
return this.stateNumericDecimal(str, offset);
|
|
9368
|
+
}
|
|
9369
|
+
case EntityDecoderState.NumericHex: {
|
|
9370
|
+
return this.stateNumericHex(str, offset);
|
|
9371
|
+
}
|
|
9372
|
+
case EntityDecoderState.NamedEntity: {
|
|
9373
|
+
return this.stateNamedEntity(str, offset);
|
|
9374
|
+
}
|
|
9375
|
+
}
|
|
9376
|
+
};
|
|
8985
9377
|
/**
|
|
8986
|
-
*
|
|
8987
|
-
*
|
|
8988
|
-
*
|
|
9378
|
+
* Switches between the numeric decimal and hexadecimal states.
|
|
9379
|
+
*
|
|
9380
|
+
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
9381
|
+
*
|
|
9382
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
9383
|
+
* @param offset The current offset.
|
|
9384
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
8989
9385
|
*/
|
|
8990
|
-
function
|
|
8991
|
-
|
|
8992
|
-
|
|
8993
|
-
/** The root element for the DOM */
|
|
8994
|
-
this.root = new node_js_1.Document(this.dom);
|
|
8995
|
-
/** Indicated whether parsing has been completed. */
|
|
8996
|
-
this.done = false;
|
|
8997
|
-
/** Stack of open tags. */
|
|
8998
|
-
this.tagStack = [this.root];
|
|
8999
|
-
/** A data node that is still being written to. */
|
|
9000
|
-
this.lastNode = null;
|
|
9001
|
-
/** Reference to the parser instance. Used for location information. */
|
|
9002
|
-
this.parser = null;
|
|
9003
|
-
// Make it possible to skip arguments, for backwards-compatibility
|
|
9004
|
-
if (typeof options === "function") {
|
|
9005
|
-
elementCB = options;
|
|
9006
|
-
options = defaultOpts;
|
|
9386
|
+
EntityDecoder.prototype.stateNumericStart = function (str, offset) {
|
|
9387
|
+
if (offset >= str.length) {
|
|
9388
|
+
return -1;
|
|
9007
9389
|
}
|
|
9008
|
-
if (
|
|
9009
|
-
|
|
9010
|
-
|
|
9390
|
+
if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
|
|
9391
|
+
this.state = EntityDecoderState.NumericHex;
|
|
9392
|
+
this.consumed += 1;
|
|
9393
|
+
return this.stateNumericHex(str, offset + 1);
|
|
9011
9394
|
}
|
|
9012
|
-
this.
|
|
9013
|
-
this.
|
|
9014
|
-
this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
|
|
9015
|
-
}
|
|
9016
|
-
DomHandler.prototype.onparserinit = function (parser) {
|
|
9017
|
-
this.parser = parser;
|
|
9018
|
-
};
|
|
9019
|
-
// Resets the handler back to starting state
|
|
9020
|
-
DomHandler.prototype.onreset = function () {
|
|
9021
|
-
this.dom = [];
|
|
9022
|
-
this.root = new node_js_1.Document(this.dom);
|
|
9023
|
-
this.done = false;
|
|
9024
|
-
this.tagStack = [this.root];
|
|
9025
|
-
this.lastNode = null;
|
|
9026
|
-
this.parser = null;
|
|
9027
|
-
};
|
|
9028
|
-
// Signals the handler that parsing is done
|
|
9029
|
-
DomHandler.prototype.onend = function () {
|
|
9030
|
-
if (this.done)
|
|
9031
|
-
return;
|
|
9032
|
-
this.done = true;
|
|
9033
|
-
this.parser = null;
|
|
9034
|
-
this.handleCallback(null);
|
|
9035
|
-
};
|
|
9036
|
-
DomHandler.prototype.onerror = function (error) {
|
|
9037
|
-
this.handleCallback(error);
|
|
9395
|
+
this.state = EntityDecoderState.NumericDecimal;
|
|
9396
|
+
return this.stateNumericDecimal(str, offset);
|
|
9038
9397
|
};
|
|
9039
|
-
|
|
9040
|
-
|
|
9041
|
-
|
|
9042
|
-
|
|
9043
|
-
|
|
9398
|
+
EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) {
|
|
9399
|
+
if (start !== end) {
|
|
9400
|
+
var digitCount = end - start;
|
|
9401
|
+
this.result =
|
|
9402
|
+
this.result * Math.pow(base, digitCount) +
|
|
9403
|
+
parseInt(str.substr(start, digitCount), base);
|
|
9404
|
+
this.consumed += digitCount;
|
|
9044
9405
|
}
|
|
9045
|
-
if (this.elementCB)
|
|
9046
|
-
this.elementCB(elem);
|
|
9047
9406
|
};
|
|
9048
|
-
|
|
9049
|
-
|
|
9050
|
-
|
|
9051
|
-
|
|
9052
|
-
|
|
9053
|
-
|
|
9054
|
-
|
|
9055
|
-
|
|
9056
|
-
|
|
9057
|
-
|
|
9058
|
-
|
|
9059
|
-
|
|
9407
|
+
/**
|
|
9408
|
+
* Parses a hexadecimal numeric entity.
|
|
9409
|
+
*
|
|
9410
|
+
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
9411
|
+
*
|
|
9412
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
9413
|
+
* @param offset The current offset.
|
|
9414
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9415
|
+
*/
|
|
9416
|
+
EntityDecoder.prototype.stateNumericHex = function (str, offset) {
|
|
9417
|
+
var startIdx = offset;
|
|
9418
|
+
while (offset < str.length) {
|
|
9419
|
+
var char = str.charCodeAt(offset);
|
|
9420
|
+
if (isNumber(char) || isHexadecimalCharacter(char)) {
|
|
9421
|
+
offset += 1;
|
|
9422
|
+
}
|
|
9423
|
+
else {
|
|
9424
|
+
this.addToNumericResult(str, startIdx, offset, 16);
|
|
9425
|
+
return this.emitNumericEntity(char, 3);
|
|
9060
9426
|
}
|
|
9061
9427
|
}
|
|
9062
|
-
|
|
9063
|
-
|
|
9064
|
-
this.addNode(node);
|
|
9065
|
-
this.lastNode = node;
|
|
9066
|
-
}
|
|
9428
|
+
this.addToNumericResult(str, startIdx, offset, 16);
|
|
9429
|
+
return -1;
|
|
9067
9430
|
};
|
|
9068
|
-
|
|
9069
|
-
|
|
9070
|
-
|
|
9071
|
-
|
|
9431
|
+
/**
|
|
9432
|
+
* Parses a decimal numeric entity.
|
|
9433
|
+
*
|
|
9434
|
+
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
9435
|
+
*
|
|
9436
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
9437
|
+
* @param offset The current offset.
|
|
9438
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9439
|
+
*/
|
|
9440
|
+
EntityDecoder.prototype.stateNumericDecimal = function (str, offset) {
|
|
9441
|
+
var startIdx = offset;
|
|
9442
|
+
while (offset < str.length) {
|
|
9443
|
+
var char = str.charCodeAt(offset);
|
|
9444
|
+
if (isNumber(char)) {
|
|
9445
|
+
offset += 1;
|
|
9446
|
+
}
|
|
9447
|
+
else {
|
|
9448
|
+
this.addToNumericResult(str, startIdx, offset, 10);
|
|
9449
|
+
return this.emitNumericEntity(char, 2);
|
|
9450
|
+
}
|
|
9072
9451
|
}
|
|
9073
|
-
|
|
9074
|
-
|
|
9075
|
-
this.lastNode = node;
|
|
9452
|
+
this.addToNumericResult(str, startIdx, offset, 10);
|
|
9453
|
+
return -1;
|
|
9076
9454
|
};
|
|
9077
|
-
|
|
9078
|
-
|
|
9455
|
+
/**
|
|
9456
|
+
* Validate and emit a numeric entity.
|
|
9457
|
+
*
|
|
9458
|
+
* Implements the logic from the `Hexademical character reference start
|
|
9459
|
+
* state` and `Numeric character reference end state` in the HTML spec.
|
|
9460
|
+
*
|
|
9461
|
+
* @param lastCp The last code point of the entity. Used to see if the
|
|
9462
|
+
* entity was terminated with a semicolon.
|
|
9463
|
+
* @param expectedLength The minimum number of characters that should be
|
|
9464
|
+
* consumed. Used to validate that at least one digit
|
|
9465
|
+
* was consumed.
|
|
9466
|
+
* @returns The number of characters that were consumed.
|
|
9467
|
+
*/
|
|
9468
|
+
EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) {
|
|
9469
|
+
var _a;
|
|
9470
|
+
// Ensure we consumed at least one digit.
|
|
9471
|
+
if (this.consumed <= expectedLength) {
|
|
9472
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
9473
|
+
return 0;
|
|
9474
|
+
}
|
|
9475
|
+
// Figure out if this is a legit end of the entity
|
|
9476
|
+
if (lastCp === CharCodes.SEMI) {
|
|
9477
|
+
this.consumed += 1;
|
|
9478
|
+
}
|
|
9479
|
+
else if (this.decodeMode === DecodingMode.Strict) {
|
|
9480
|
+
return 0;
|
|
9481
|
+
}
|
|
9482
|
+
this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);
|
|
9483
|
+
if (this.errors) {
|
|
9484
|
+
if (lastCp !== CharCodes.SEMI) {
|
|
9485
|
+
this.errors.missingSemicolonAfterCharacterReference();
|
|
9486
|
+
}
|
|
9487
|
+
this.errors.validateNumericCharacterReference(this.result);
|
|
9488
|
+
}
|
|
9489
|
+
return this.consumed;
|
|
9079
9490
|
};
|
|
9080
|
-
|
|
9081
|
-
|
|
9082
|
-
|
|
9083
|
-
|
|
9084
|
-
|
|
9085
|
-
|
|
9491
|
+
/**
|
|
9492
|
+
* Parses a named entity.
|
|
9493
|
+
*
|
|
9494
|
+
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
9495
|
+
*
|
|
9496
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
9497
|
+
* @param offset The current offset.
|
|
9498
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9499
|
+
*/
|
|
9500
|
+
EntityDecoder.prototype.stateNamedEntity = function (str, offset) {
|
|
9501
|
+
var decodeTree = this.decodeTree;
|
|
9502
|
+
var current = decodeTree[this.treeIndex];
|
|
9503
|
+
// The mask is the number of bytes of the value, including the current byte.
|
|
9504
|
+
var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
9505
|
+
for (; offset < str.length; offset++, this.excess++) {
|
|
9506
|
+
var char = str.charCodeAt(offset);
|
|
9507
|
+
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
9508
|
+
if (this.treeIndex < 0) {
|
|
9509
|
+
return this.result === 0 ||
|
|
9510
|
+
// If we are parsing an attribute
|
|
9511
|
+
(this.decodeMode === DecodingMode.Attribute &&
|
|
9512
|
+
// We shouldn't have consumed any characters after the entity,
|
|
9513
|
+
(valueLength === 0 ||
|
|
9514
|
+
// And there should be no invalid characters.
|
|
9515
|
+
isEntityInAttributeInvalidEnd(char)))
|
|
9516
|
+
? 0
|
|
9517
|
+
: this.emitNotTerminatedNamedEntity();
|
|
9518
|
+
}
|
|
9519
|
+
current = decodeTree[this.treeIndex];
|
|
9520
|
+
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
9521
|
+
// If the branch is a value, store it and continue
|
|
9522
|
+
if (valueLength !== 0) {
|
|
9523
|
+
// If the entity is terminated by a semicolon, we are done.
|
|
9524
|
+
if (char === CharCodes.SEMI) {
|
|
9525
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
9526
|
+
}
|
|
9527
|
+
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
9528
|
+
if (this.decodeMode !== DecodingMode.Strict) {
|
|
9529
|
+
this.result = this.treeIndex;
|
|
9530
|
+
this.consumed += this.excess;
|
|
9531
|
+
this.excess = 0;
|
|
9532
|
+
}
|
|
9533
|
+
}
|
|
9534
|
+
}
|
|
9535
|
+
return -1;
|
|
9086
9536
|
};
|
|
9087
|
-
|
|
9088
|
-
|
|
9537
|
+
/**
|
|
9538
|
+
* Emit a named entity that was not terminated with a semicolon.
|
|
9539
|
+
*
|
|
9540
|
+
* @returns The number of characters consumed.
|
|
9541
|
+
*/
|
|
9542
|
+
EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () {
|
|
9543
|
+
var _a;
|
|
9544
|
+
var _b = this, result = _b.result, decodeTree = _b.decodeTree;
|
|
9545
|
+
var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
9546
|
+
this.emitNamedEntityData(result, valueLength, this.consumed);
|
|
9547
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
|
|
9548
|
+
return this.consumed;
|
|
9089
9549
|
};
|
|
9090
|
-
|
|
9091
|
-
|
|
9092
|
-
|
|
9550
|
+
/**
|
|
9551
|
+
* Emit a named entity.
|
|
9552
|
+
*
|
|
9553
|
+
* @param result The index of the entity in the decode tree.
|
|
9554
|
+
* @param valueLength The number of bytes in the entity.
|
|
9555
|
+
* @param consumed The number of characters consumed.
|
|
9556
|
+
*
|
|
9557
|
+
* @returns The number of characters consumed.
|
|
9558
|
+
*/
|
|
9559
|
+
EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) {
|
|
9560
|
+
var decodeTree = this.decodeTree;
|
|
9561
|
+
this.emitCodePoint(valueLength === 1
|
|
9562
|
+
? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH
|
|
9563
|
+
: decodeTree[result + 1], consumed);
|
|
9564
|
+
if (valueLength === 3) {
|
|
9565
|
+
// For multi-byte values, we need to emit the second byte.
|
|
9566
|
+
this.emitCodePoint(decodeTree[result + 2], consumed);
|
|
9567
|
+
}
|
|
9568
|
+
return consumed;
|
|
9093
9569
|
};
|
|
9094
|
-
|
|
9095
|
-
|
|
9096
|
-
|
|
9570
|
+
/**
|
|
9571
|
+
* Signal to the parser that the end of the input was reached.
|
|
9572
|
+
*
|
|
9573
|
+
* Remaining data will be emitted and relevant errors will be produced.
|
|
9574
|
+
*
|
|
9575
|
+
* @returns The number of characters consumed.
|
|
9576
|
+
*/
|
|
9577
|
+
EntityDecoder.prototype.end = function () {
|
|
9578
|
+
var _a;
|
|
9579
|
+
switch (this.state) {
|
|
9580
|
+
case EntityDecoderState.NamedEntity: {
|
|
9581
|
+
// Emit a named entity if we have one.
|
|
9582
|
+
return this.result !== 0 &&
|
|
9583
|
+
(this.decodeMode !== DecodingMode.Attribute ||
|
|
9584
|
+
this.result === this.treeIndex)
|
|
9585
|
+
? this.emitNotTerminatedNamedEntity()
|
|
9586
|
+
: 0;
|
|
9587
|
+
}
|
|
9588
|
+
// Otherwise, emit a numeric entity if we have one.
|
|
9589
|
+
case EntityDecoderState.NumericDecimal: {
|
|
9590
|
+
return this.emitNumericEntity(0, 2);
|
|
9591
|
+
}
|
|
9592
|
+
case EntityDecoderState.NumericHex: {
|
|
9593
|
+
return this.emitNumericEntity(0, 3);
|
|
9594
|
+
}
|
|
9595
|
+
case EntityDecoderState.NumericStart: {
|
|
9596
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
9597
|
+
return 0;
|
|
9598
|
+
}
|
|
9599
|
+
case EntityDecoderState.EntityStart: {
|
|
9600
|
+
// Return 0 if we have no entity.
|
|
9601
|
+
return 0;
|
|
9602
|
+
}
|
|
9097
9603
|
}
|
|
9098
|
-
|
|
9099
|
-
|
|
9604
|
+
};
|
|
9605
|
+
return EntityDecoder;
|
|
9606
|
+
}());
|
|
9607
|
+
exports.EntityDecoder = EntityDecoder;
|
|
9608
|
+
/**
|
|
9609
|
+
* Creates a function that decodes entities in a string.
|
|
9610
|
+
*
|
|
9611
|
+
* @param decodeTree The decode tree.
|
|
9612
|
+
* @returns A function that decodes entities in a string.
|
|
9613
|
+
*/
|
|
9614
|
+
function getDecoder(decodeTree) {
|
|
9615
|
+
var ret = "";
|
|
9616
|
+
var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); });
|
|
9617
|
+
return function decodeWithTrie(str, decodeMode) {
|
|
9618
|
+
var lastIndex = 0;
|
|
9619
|
+
var offset = 0;
|
|
9620
|
+
while ((offset = str.indexOf("&", offset)) >= 0) {
|
|
9621
|
+
ret += str.slice(lastIndex, offset);
|
|
9622
|
+
decoder.startEntity(decodeMode);
|
|
9623
|
+
var len = decoder.write(str,
|
|
9624
|
+
// Skip the "&"
|
|
9625
|
+
offset + 1);
|
|
9626
|
+
if (len < 0) {
|
|
9627
|
+
lastIndex = offset + decoder.end();
|
|
9628
|
+
break;
|
|
9629
|
+
}
|
|
9630
|
+
lastIndex = offset + len;
|
|
9631
|
+
// If `len` is 0, skip the current `&` and continue.
|
|
9632
|
+
offset = len === 0 ? lastIndex + 1 : lastIndex;
|
|
9100
9633
|
}
|
|
9634
|
+
var result = ret + str.slice(lastIndex);
|
|
9635
|
+
// Make sure we don't keep a reference to the final string.
|
|
9636
|
+
ret = "";
|
|
9637
|
+
return result;
|
|
9101
9638
|
};
|
|
9102
|
-
|
|
9103
|
-
|
|
9104
|
-
|
|
9105
|
-
|
|
9106
|
-
|
|
9639
|
+
}
|
|
9640
|
+
/**
|
|
9641
|
+
* Determines the branch of the current node that is taken given the current
|
|
9642
|
+
* character. This function is used to traverse the trie.
|
|
9643
|
+
*
|
|
9644
|
+
* @param decodeTree The trie.
|
|
9645
|
+
* @param current The current node.
|
|
9646
|
+
* @param nodeIdx The index right after the current node and its value.
|
|
9647
|
+
* @param char The current character.
|
|
9648
|
+
* @returns The index of the next node, or -1 if no branch is taken.
|
|
9649
|
+
*/
|
|
9650
|
+
function determineBranch(decodeTree, current, nodeIdx, char) {
|
|
9651
|
+
var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
9652
|
+
var jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
9653
|
+
// Case 1: Single branch encoded in jump offset
|
|
9654
|
+
if (branchCount === 0) {
|
|
9655
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
|
|
9656
|
+
}
|
|
9657
|
+
// Case 2: Multiple branches encoded in jump table
|
|
9658
|
+
if (jumpOffset) {
|
|
9659
|
+
var value = char - jumpOffset;
|
|
9660
|
+
return value < 0 || value >= branchCount
|
|
9661
|
+
? -1
|
|
9662
|
+
: decodeTree[nodeIdx + value] - 1;
|
|
9663
|
+
}
|
|
9664
|
+
// Case 3: Multiple branches encoded in dictionary
|
|
9665
|
+
// Binary search for the character.
|
|
9666
|
+
var lo = nodeIdx;
|
|
9667
|
+
var hi = lo + branchCount - 1;
|
|
9668
|
+
while (lo <= hi) {
|
|
9669
|
+
var mid = (lo + hi) >>> 1;
|
|
9670
|
+
var midVal = decodeTree[mid];
|
|
9671
|
+
if (midVal < char) {
|
|
9672
|
+
lo = mid + 1;
|
|
9107
9673
|
}
|
|
9108
|
-
if (
|
|
9109
|
-
|
|
9674
|
+
else if (midVal > char) {
|
|
9675
|
+
hi = mid - 1;
|
|
9110
9676
|
}
|
|
9111
|
-
|
|
9112
|
-
|
|
9113
|
-
node.prev = previousSibling;
|
|
9114
|
-
previousSibling.next = node;
|
|
9677
|
+
else {
|
|
9678
|
+
return decodeTree[mid + branchCount];
|
|
9115
9679
|
}
|
|
9116
|
-
|
|
9117
|
-
|
|
9118
|
-
|
|
9119
|
-
|
|
9120
|
-
|
|
9121
|
-
|
|
9122
|
-
|
|
9123
|
-
|
|
9124
|
-
|
|
9125
|
-
|
|
9126
|
-
|
|
9127
|
-
|
|
9128
|
-
|
|
9129
|
-
|
|
9130
|
-
|
|
9131
|
-
|
|
9680
|
+
}
|
|
9681
|
+
return -1;
|
|
9682
|
+
}
|
|
9683
|
+
exports.determineBranch = determineBranch;
|
|
9684
|
+
var htmlDecoder = getDecoder(decode_data_html_js_1.default);
|
|
9685
|
+
var xmlDecoder = getDecoder(decode_data_xml_js_1.default);
|
|
9686
|
+
/**
|
|
9687
|
+
* Decodes an HTML string.
|
|
9688
|
+
*
|
|
9689
|
+
* @param str The string to decode.
|
|
9690
|
+
* @param mode The decoding mode.
|
|
9691
|
+
* @returns The decoded string.
|
|
9692
|
+
*/
|
|
9693
|
+
function decodeHTML(str, mode) {
|
|
9694
|
+
if (mode === void 0) { mode = DecodingMode.Legacy; }
|
|
9695
|
+
return htmlDecoder(str, mode);
|
|
9696
|
+
}
|
|
9697
|
+
exports.decodeHTML = decodeHTML;
|
|
9698
|
+
/**
|
|
9699
|
+
* Decodes an HTML string in an attribute.
|
|
9700
|
+
*
|
|
9701
|
+
* @param str The string to decode.
|
|
9702
|
+
* @returns The decoded string.
|
|
9703
|
+
*/
|
|
9704
|
+
function decodeHTMLAttribute(str) {
|
|
9705
|
+
return htmlDecoder(str, DecodingMode.Attribute);
|
|
9706
|
+
}
|
|
9707
|
+
exports.decodeHTMLAttribute = decodeHTMLAttribute;
|
|
9708
|
+
/**
|
|
9709
|
+
* Decodes an HTML string, requiring all entities to be terminated by a semicolon.
|
|
9710
|
+
*
|
|
9711
|
+
* @param str The string to decode.
|
|
9712
|
+
* @returns The decoded string.
|
|
9713
|
+
*/
|
|
9714
|
+
function decodeHTMLStrict(str) {
|
|
9715
|
+
return htmlDecoder(str, DecodingMode.Strict);
|
|
9716
|
+
}
|
|
9717
|
+
exports.decodeHTMLStrict = decodeHTMLStrict;
|
|
9718
|
+
/**
|
|
9719
|
+
* Decodes an XML string, requiring all entities to be terminated by a semicolon.
|
|
9720
|
+
*
|
|
9721
|
+
* @param str The string to decode.
|
|
9722
|
+
* @returns The decoded string.
|
|
9723
|
+
*/
|
|
9724
|
+
function decodeXML(str) {
|
|
9725
|
+
return xmlDecoder(str, DecodingMode.Strict);
|
|
9726
|
+
}
|
|
9727
|
+
exports.decodeXML = decodeXML;
|
|
9728
|
+
|
|
9729
|
+
} (decode));
|
|
9132
9730
|
|
|
9133
9731
|
var encode = {};
|
|
9134
9732
|
|
|
@@ -10879,22 +11477,37 @@ function isValidFeed(value) {
|
|
|
10879
11477
|
}) : function(o, v) {
|
|
10880
11478
|
o["default"] = v;
|
|
10881
11479
|
});
|
|
10882
|
-
var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (
|
|
10883
|
-
|
|
10884
|
-
|
|
10885
|
-
|
|
10886
|
-
|
|
10887
|
-
|
|
10888
|
-
|
|
11480
|
+
var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || (function () {
|
|
11481
|
+
var ownKeys = function(o) {
|
|
11482
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
11483
|
+
var ar = [];
|
|
11484
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
11485
|
+
return ar;
|
|
11486
|
+
};
|
|
11487
|
+
return ownKeys(o);
|
|
11488
|
+
};
|
|
11489
|
+
return function (mod) {
|
|
11490
|
+
if (mod && mod.__esModule) return mod;
|
|
11491
|
+
var result = {};
|
|
11492
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
11493
|
+
__setModuleDefault(result, mod);
|
|
11494
|
+
return result;
|
|
11495
|
+
};
|
|
11496
|
+
})();
|
|
10889
11497
|
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
|
|
10890
11498
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10891
11499
|
};
|
|
10892
11500
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10893
|
-
exports.DomUtils = exports.
|
|
10894
|
-
|
|
11501
|
+
exports.DomUtils = exports.getFeed = exports.ElementType = exports.QuoteType = exports.Tokenizer = exports.DefaultHandler = exports.DomHandler = exports.Parser = void 0;
|
|
11502
|
+
exports.parseDocument = parseDocument;
|
|
11503
|
+
exports.parseDOM = parseDOM;
|
|
11504
|
+
exports.createDocumentStream = createDocumentStream;
|
|
11505
|
+
exports.createDomStream = createDomStream;
|
|
11506
|
+
exports.parseFeed = parseFeed;
|
|
11507
|
+
const Parser_js_1 = Parser$4;
|
|
10895
11508
|
var Parser_js_2 = Parser$4;
|
|
10896
11509
|
Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return Parser_js_2.Parser; } });
|
|
10897
|
-
|
|
11510
|
+
const domhandler_1 = lib$4;
|
|
10898
11511
|
var domhandler_2 = lib$4;
|
|
10899
11512
|
Object.defineProperty(exports, "DomHandler", { enumerable: true, get: function () { return domhandler_2.DomHandler; } });
|
|
10900
11513
|
// Old name for DomHandler
|
|
@@ -10904,14 +11517,13 @@ function isValidFeed(value) {
|
|
|
10904
11517
|
* Parses the data, returns the resulting document.
|
|
10905
11518
|
*
|
|
10906
11519
|
* @param data The data that should be parsed.
|
|
10907
|
-
* @param options Optional options for the parser and DOM
|
|
11520
|
+
* @param options Optional options for the parser and DOM handler.
|
|
10908
11521
|
*/
|
|
10909
11522
|
function parseDocument(data, options) {
|
|
10910
|
-
|
|
11523
|
+
const handler = new domhandler_1.DomHandler(undefined, options);
|
|
10911
11524
|
new Parser_js_1.Parser(handler, options).end(data);
|
|
10912
11525
|
return handler.root;
|
|
10913
11526
|
}
|
|
10914
|
-
exports.parseDocument = parseDocument;
|
|
10915
11527
|
/**
|
|
10916
11528
|
* Parses data, returns an array of the root nodes.
|
|
10917
11529
|
*
|
|
@@ -10919,50 +11531,59 @@ function isValidFeed(value) {
|
|
|
10919
11531
|
* Use `parseDocument` to get the `Document` node instead.
|
|
10920
11532
|
*
|
|
10921
11533
|
* @param data The data that should be parsed.
|
|
10922
|
-
* @param options Optional options for the parser and DOM
|
|
11534
|
+
* @param options Optional options for the parser and DOM handler.
|
|
10923
11535
|
* @deprecated Use `parseDocument` instead.
|
|
10924
11536
|
*/
|
|
10925
11537
|
function parseDOM(data, options) {
|
|
10926
11538
|
return parseDocument(data, options).children;
|
|
10927
11539
|
}
|
|
10928
|
-
exports.parseDOM = parseDOM;
|
|
10929
11540
|
/**
|
|
10930
11541
|
* Creates a parser instance, with an attached DOM handler.
|
|
10931
11542
|
*
|
|
10932
|
-
* @param callback A callback that will be called once parsing has been completed.
|
|
10933
|
-
* @param options Optional options for the parser and DOM
|
|
11543
|
+
* @param callback A callback that will be called once parsing has been completed, with the resulting document.
|
|
11544
|
+
* @param options Optional options for the parser and DOM handler.
|
|
11545
|
+
* @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
|
|
11546
|
+
*/
|
|
11547
|
+
function createDocumentStream(callback, options, elementCallback) {
|
|
11548
|
+
const handler = new domhandler_1.DomHandler((error) => callback(error, handler.root), options, elementCallback);
|
|
11549
|
+
return new Parser_js_1.Parser(handler, options);
|
|
11550
|
+
}
|
|
11551
|
+
/**
|
|
11552
|
+
* Creates a parser instance, with an attached DOM handler.
|
|
11553
|
+
*
|
|
11554
|
+
* @param callback A callback that will be called once parsing has been completed, with an array of root nodes.
|
|
11555
|
+
* @param options Optional options for the parser and DOM handler.
|
|
10934
11556
|
* @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
|
|
11557
|
+
* @deprecated Use `createDocumentStream` instead.
|
|
10935
11558
|
*/
|
|
10936
11559
|
function createDomStream(callback, options, elementCallback) {
|
|
10937
|
-
|
|
11560
|
+
const handler = new domhandler_1.DomHandler(callback, options, elementCallback);
|
|
10938
11561
|
return new Parser_js_1.Parser(handler, options);
|
|
10939
11562
|
}
|
|
10940
|
-
|
|
10941
|
-
var Tokenizer_js_1 = Tokenizer$1;
|
|
11563
|
+
var Tokenizer_js_1 = Tokenizer$2;
|
|
10942
11564
|
Object.defineProperty(exports, "Tokenizer", { enumerable: true, get: function () { return __importDefault(Tokenizer_js_1).default; } });
|
|
11565
|
+
Object.defineProperty(exports, "QuoteType", { enumerable: true, get: function () { return Tokenizer_js_1.QuoteType; } });
|
|
10943
11566
|
/*
|
|
10944
11567
|
* All of the following exports exist for backwards-compatibility.
|
|
10945
11568
|
* They should probably be removed eventually.
|
|
10946
11569
|
*/
|
|
10947
11570
|
exports.ElementType = __importStar(lib$3);
|
|
10948
|
-
|
|
11571
|
+
const domutils_1 = lib$2;
|
|
10949
11572
|
var domutils_2 = lib$2;
|
|
10950
11573
|
Object.defineProperty(exports, "getFeed", { enumerable: true, get: function () { return domutils_2.getFeed; } });
|
|
10951
|
-
|
|
11574
|
+
const parseFeedDefaultOptions = { xmlMode: true };
|
|
10952
11575
|
/**
|
|
10953
11576
|
* Parse a feed.
|
|
10954
11577
|
*
|
|
10955
11578
|
* @param feed The feed that should be parsed, as a string.
|
|
10956
11579
|
* @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.
|
|
10957
11580
|
*/
|
|
10958
|
-
function parseFeed(feed, options) {
|
|
10959
|
-
if (options === void 0) { options = parseFeedDefaultOptions; }
|
|
11581
|
+
function parseFeed(feed, options = parseFeedDefaultOptions) {
|
|
10960
11582
|
return (0, domutils_1.getFeed)(parseDOM(feed, options));
|
|
10961
11583
|
}
|
|
10962
|
-
exports.parseFeed = parseFeed;
|
|
10963
11584
|
exports.DomUtils = __importStar(lib$2);
|
|
10964
11585
|
|
|
10965
|
-
} (
|
|
11586
|
+
} (commonjs));
|
|
10966
11587
|
|
|
10967
11588
|
var escapeStringRegexp$1 = string => {
|
|
10968
11589
|
if (typeof string !== 'string') {
|
|
@@ -13693,7 +14314,15 @@ let MapGenerator$2 = class MapGenerator {
|
|
|
13693
14314
|
}
|
|
13694
14315
|
}
|
|
13695
14316
|
} else if (this.css) {
|
|
13696
|
-
|
|
14317
|
+
let startIndex;
|
|
14318
|
+
while ((startIndex = this.css.lastIndexOf('/*#')) !== -1) {
|
|
14319
|
+
let endIndex = this.css.indexOf('*/', startIndex + 3);
|
|
14320
|
+
if (endIndex === -1) break
|
|
14321
|
+
while (startIndex > 0 && this.css[startIndex - 1] === '\n') {
|
|
14322
|
+
startIndex--;
|
|
14323
|
+
}
|
|
14324
|
+
this.css = this.css.slice(0, startIndex) + this.css.slice(endIndex + 2);
|
|
14325
|
+
}
|
|
13697
14326
|
}
|
|
13698
14327
|
}
|
|
13699
14328
|
|
|
@@ -14426,7 +15055,7 @@ let Parser$2 = class Parser {
|
|
|
14426
15055
|
node.source.end.offset++;
|
|
14427
15056
|
|
|
14428
15057
|
let text = token[1].slice(2, -2);
|
|
14429
|
-
if (
|
|
15058
|
+
if (!text.trim()) {
|
|
14430
15059
|
node.text = '';
|
|
14431
15060
|
node.raws.left = text;
|
|
14432
15061
|
node.raws.right = '';
|
|
@@ -15605,10 +16234,9 @@ let NoWorkResult$1 = class NoWorkResult {
|
|
|
15605
16234
|
this._css = css;
|
|
15606
16235
|
this._opts = opts;
|
|
15607
16236
|
this._map = undefined;
|
|
15608
|
-
let root;
|
|
15609
16237
|
|
|
15610
16238
|
let str = stringify$1;
|
|
15611
|
-
this.result = new Result$1(this._processor,
|
|
16239
|
+
this.result = new Result$1(this._processor, undefined, this._opts);
|
|
15612
16240
|
this.result.css = css;
|
|
15613
16241
|
|
|
15614
16242
|
let self = this;
|
|
@@ -15618,7 +16246,7 @@ let NoWorkResult$1 = class NoWorkResult {
|
|
|
15618
16246
|
}
|
|
15619
16247
|
});
|
|
15620
16248
|
|
|
15621
|
-
let map = new MapGenerator(str,
|
|
16249
|
+
let map = new MapGenerator(str, undefined, this._opts, css);
|
|
15622
16250
|
if (map.isMap()) {
|
|
15623
16251
|
let [generatedCSS, generatedMap] = map.generate();
|
|
15624
16252
|
if (generatedCSS) {
|
|
@@ -15684,7 +16312,7 @@ let Root$1 = root;
|
|
|
15684
16312
|
|
|
15685
16313
|
let Processor$1 = class Processor {
|
|
15686
16314
|
constructor(plugins = []) {
|
|
15687
|
-
this.version = '8.5.
|
|
16315
|
+
this.version = '8.5.8';
|
|
15688
16316
|
this.plugins = this.normalize(plugins);
|
|
15689
16317
|
}
|
|
15690
16318
|
|
|
@@ -15843,7 +16471,7 @@ LazyResult.registerPostcss(postcss);
|
|
|
15843
16471
|
var postcss_1 = postcss;
|
|
15844
16472
|
postcss.default = postcss;
|
|
15845
16473
|
|
|
15846
|
-
const htmlparser =
|
|
16474
|
+
const htmlparser = commonjs;
|
|
15847
16475
|
const escapeStringRegexp = escapeStringRegexp$1;
|
|
15848
16476
|
const { isPlainObject } = isPlainObject$2;
|
|
15849
16477
|
const deepmerge = cjs;
|
|
@@ -15933,7 +16561,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
15933
16561
|
}
|
|
15934
16562
|
|
|
15935
16563
|
let result = '';
|
|
15936
|
-
// Used for hot swapping the result variable with an empty string
|
|
16564
|
+
// Used for hot swapping the result variable with an empty string
|
|
16565
|
+
// in order to "capture" the text written to it.
|
|
15937
16566
|
let tempResult = '';
|
|
15938
16567
|
|
|
15939
16568
|
function Frame(tag, attribs) {
|
|
@@ -15964,7 +16593,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
15964
16593
|
options.parser = Object.assign({}, htmlParserDefaults, options.parser);
|
|
15965
16594
|
|
|
15966
16595
|
const tagAllowed = function (name) {
|
|
15967
|
-
return options.allowedTags === false ||
|
|
16596
|
+
return options.allowedTags === false ||
|
|
16597
|
+
(options.allowedTags || []).indexOf(name) > -1;
|
|
15968
16598
|
};
|
|
15969
16599
|
|
|
15970
16600
|
// vulnerableTags
|
|
@@ -16146,7 +16776,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16146
16776
|
}
|
|
16147
16777
|
|
|
16148
16778
|
const isBeingEscaped = skip && (options.disallowedTagsMode === 'escape' || options.disallowedTagsMode === 'recursiveEscape');
|
|
16149
|
-
const shouldPreserveEscapedAttributes = isBeingEscaped &&
|
|
16779
|
+
const shouldPreserveEscapedAttributes = isBeingEscaped &&
|
|
16780
|
+
options.preserveEscapedAttributes;
|
|
16150
16781
|
|
|
16151
16782
|
if (shouldPreserveEscapedAttributes) {
|
|
16152
16783
|
each(attribs, function(value, a) {
|
|
@@ -16160,8 +16791,10 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16160
16791
|
delete frame.attribs[a];
|
|
16161
16792
|
return;
|
|
16162
16793
|
}
|
|
16163
|
-
// If the value is empty, check if the attribute is
|
|
16164
|
-
//
|
|
16794
|
+
// If the value is empty, check if the attribute is
|
|
16795
|
+
// in the allowedEmptyAttributes array.
|
|
16796
|
+
// If it is not in the allowedEmptyAttributes array,
|
|
16797
|
+
// and it is a known non-boolean attribute, delete it
|
|
16165
16798
|
// List taken from https://html.spec.whatwg.org/multipage/indices.html#attributes-3
|
|
16166
16799
|
if (value === '' && (!options.allowedEmptyAttributes.includes(a)) &&
|
|
16167
16800
|
(options.nonBooleanAttributes.includes(a) || options.nonBooleanAttributes.includes('*'))) {
|
|
@@ -16172,9 +16805,11 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16172
16805
|
// as necessary if there are specific values defined.
|
|
16173
16806
|
let passedAllowedAttributesMapCheck = false;
|
|
16174
16807
|
if (!allowedAttributesMap ||
|
|
16175
|
-
(has(allowedAttributesMap, name) &&
|
|
16808
|
+
(has(allowedAttributesMap, name) &&
|
|
16809
|
+
allowedAttributesMap[name].indexOf(a) !== -1) ||
|
|
16176
16810
|
(allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1) ||
|
|
16177
|
-
(has(allowedAttributesGlobMap, name) &&
|
|
16811
|
+
(has(allowedAttributesGlobMap, name) &&
|
|
16812
|
+
allowedAttributesGlobMap[name].test(a)) ||
|
|
16178
16813
|
(allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a))) {
|
|
16179
16814
|
passedAllowedAttributesMapCheck = true;
|
|
16180
16815
|
} else if (allowedAttributesMap && allowedAttributesMap[name]) {
|
|
@@ -16218,12 +16853,14 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16218
16853
|
const parsed = parseUrl(value);
|
|
16219
16854
|
|
|
16220
16855
|
if (options.allowedScriptHostnames || options.allowedScriptDomains) {
|
|
16221
|
-
const allowedHostname = (options.allowedScriptHostnames || [])
|
|
16222
|
-
|
|
16223
|
-
|
|
16224
|
-
|
|
16225
|
-
|
|
16226
|
-
|
|
16856
|
+
const allowedHostname = (options.allowedScriptHostnames || [])
|
|
16857
|
+
.find(function (hostname) {
|
|
16858
|
+
return hostname === parsed.url.hostname;
|
|
16859
|
+
});
|
|
16860
|
+
const allowedDomain = (options.allowedScriptDomains || [])
|
|
16861
|
+
.find(function(domain) {
|
|
16862
|
+
return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);
|
|
16863
|
+
});
|
|
16227
16864
|
allowed = allowedHostname || allowedDomain;
|
|
16228
16865
|
}
|
|
16229
16866
|
} catch (e) {
|
|
@@ -16247,13 +16884,18 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16247
16884
|
allowed = has(options, 'allowIframeRelativeUrls')
|
|
16248
16885
|
? options.allowIframeRelativeUrls
|
|
16249
16886
|
: (!options.allowedIframeHostnames && !options.allowedIframeDomains);
|
|
16250
|
-
} else if (
|
|
16251
|
-
|
|
16252
|
-
|
|
16253
|
-
|
|
16254
|
-
const
|
|
16255
|
-
|
|
16256
|
-
|
|
16887
|
+
} else if (
|
|
16888
|
+
options.allowedIframeHostnames ||
|
|
16889
|
+
options.allowedIframeDomains
|
|
16890
|
+
) {
|
|
16891
|
+
const allowedHostname = (options.allowedIframeHostnames || [])
|
|
16892
|
+
.find(function (hostname) {
|
|
16893
|
+
return hostname === parsed.url.hostname;
|
|
16894
|
+
});
|
|
16895
|
+
const allowedDomain = (options.allowedIframeDomains || [])
|
|
16896
|
+
.find(function(domain) {
|
|
16897
|
+
return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);
|
|
16898
|
+
});
|
|
16257
16899
|
allowed = allowedHostname || allowedDomain;
|
|
16258
16900
|
}
|
|
16259
16901
|
} catch (e) {
|
|
@@ -16307,9 +16949,17 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16307
16949
|
return t;
|
|
16308
16950
|
});
|
|
16309
16951
|
if (allowedSpecificClasses && allowedWildcardClasses) {
|
|
16310
|
-
value = filterClasses(
|
|
16952
|
+
value = filterClasses(
|
|
16953
|
+
value,
|
|
16954
|
+
deepmerge(allowedSpecificClasses, allowedWildcardClasses),
|
|
16955
|
+
allowedClassesGlobs
|
|
16956
|
+
);
|
|
16311
16957
|
} else {
|
|
16312
|
-
value = filterClasses(
|
|
16958
|
+
value = filterClasses(
|
|
16959
|
+
value,
|
|
16960
|
+
allowedSpecificClasses || allowedWildcardClasses,
|
|
16961
|
+
allowedClassesGlobs
|
|
16962
|
+
);
|
|
16313
16963
|
}
|
|
16314
16964
|
if (!value.length) {
|
|
16315
16965
|
delete frame.attribs[a];
|
|
@@ -16320,7 +16970,10 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16320
16970
|
if (options.parseStyleAttributes) {
|
|
16321
16971
|
try {
|
|
16322
16972
|
const abstractSyntaxTree = postcssParse(name + ' {' + value + '}', { map: false });
|
|
16323
|
-
const filteredAST = filterCss(
|
|
16973
|
+
const filteredAST = filterCss(
|
|
16974
|
+
abstractSyntaxTree,
|
|
16975
|
+
options.allowedStyles
|
|
16976
|
+
);
|
|
16324
16977
|
|
|
16325
16978
|
value = stringifyStyleAttributes(filteredAST);
|
|
16326
16979
|
|
|
@@ -16386,6 +17039,11 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16386
17039
|
// your concern, don't allow them. The same is essentially true for style tags
|
|
16387
17040
|
// which have their own collection of XSS vectors.
|
|
16388
17041
|
result += text;
|
|
17042
|
+
} else if ((options.disallowedTagsMode === 'discard' || options.disallowedTagsMode === 'completelyDiscard') && (nonTextTagsArray.indexOf(tag) !== -1)) {
|
|
17043
|
+
// htmlparser2 does not decode entities inside raw text elements like
|
|
17044
|
+
// textarea and option. The text is already properly encoded, so pass
|
|
17045
|
+
// it through without additional escaping to avoid double-encoding.
|
|
17046
|
+
result += text;
|
|
16389
17047
|
} else if (!addedText) {
|
|
16390
17048
|
const escaped = escapeHtml(text, false);
|
|
16391
17049
|
if (options.textFilter) {
|
|
@@ -16453,7 +17111,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16453
17111
|
tempResult = '';
|
|
16454
17112
|
}
|
|
16455
17113
|
// remove the opening tag from the result
|
|
16456
|
-
result = result.substring(0, frame.tagPosition) +
|
|
17114
|
+
result = result.substring(0, frame.tagPosition) +
|
|
17115
|
+
result.substring(frame.tagPosition + frame.openingTagLength);
|
|
16457
17116
|
return;
|
|
16458
17117
|
} else if (filterResult) {
|
|
16459
17118
|
result = result.substring(0, frame.tagPosition);
|
|
@@ -16488,6 +17147,17 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16488
17147
|
parser.write(html);
|
|
16489
17148
|
parser.end();
|
|
16490
17149
|
|
|
17150
|
+
if (options.disallowedTagsMode === 'escape' || options.disallowedTagsMode === 'recursiveEscape') {
|
|
17151
|
+
const lastParsedIndex = parser.endIndex;
|
|
17152
|
+
if (lastParsedIndex != null && lastParsedIndex >= 0 &&
|
|
17153
|
+
lastParsedIndex < html.length) {
|
|
17154
|
+
const unparsed = html.substring(lastParsedIndex);
|
|
17155
|
+
result += escapeHtml(unparsed);
|
|
17156
|
+
} else if ((lastParsedIndex == null || lastParsedIndex < 0) && html.length > 0 && result === '') {
|
|
17157
|
+
result = escapeHtml(html);
|
|
17158
|
+
}
|
|
17159
|
+
}
|
|
17160
|
+
|
|
16491
17161
|
return result;
|
|
16492
17162
|
|
|
16493
17163
|
function initializeState() {
|
|
@@ -16598,8 +17268,10 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16598
17268
|
* Modifies the abstractSyntaxTree object.
|
|
16599
17269
|
*
|
|
16600
17270
|
* @param {object} abstractSyntaxTree - Object representation of CSS attributes.
|
|
16601
|
-
* @property {array[Declaration]} abstractSyntaxTree.nodes[0] -
|
|
16602
|
-
*
|
|
17271
|
+
* @property {array[Declaration]} abstractSyntaxTree.nodes[0] -
|
|
17272
|
+
* Each object contains prop and value key, i.e { prop: 'color', value: 'red' }.
|
|
17273
|
+
* @param {object} allowedStyles - Keys are properties (i.e color),
|
|
17274
|
+
* value is list of permitted regex rules (i.e /green/i).
|
|
16603
17275
|
* @return {object} - The modified tree.
|
|
16604
17276
|
*/
|
|
16605
17277
|
function filterCss(abstractSyntaxTree, allowedStyles) {
|
|
@@ -16621,7 +17293,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16621
17293
|
}
|
|
16622
17294
|
|
|
16623
17295
|
if (selectedRule) {
|
|
16624
|
-
abstractSyntaxTree.nodes[0].nodes = astRules.nodes
|
|
17296
|
+
abstractSyntaxTree.nodes[0].nodes = astRules.nodes
|
|
17297
|
+
.reduce(filterDeclarations(selectedRule), []);
|
|
16625
17298
|
}
|
|
16626
17299
|
|
|
16627
17300
|
return abstractSyntaxTree;
|
|
@@ -16632,7 +17305,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16632
17305
|
* values in the inline style attribute format.
|
|
16633
17306
|
*
|
|
16634
17307
|
* @param {AbstractSyntaxTree} filteredAST
|
|
16635
|
-
* @return {string} - Example:
|
|
17308
|
+
* @return {string} - Example:
|
|
17309
|
+
* "color:yellow;text-align:center !important;font-family:helvetica;"
|
|
16636
17310
|
*/
|
|
16637
17311
|
function stringifyStyleAttributes(filteredAST) {
|
|
16638
17312
|
return filteredAST.nodes[0].nodes
|
|
@@ -16649,21 +17323,25 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16649
17323
|
* Filters the existing attributes for the given property. Discards any attributes
|
|
16650
17324
|
* which don't match the allowlist.
|
|
16651
17325
|
*
|
|
16652
|
-
* @param {object} selectedRule
|
|
16653
|
-
* @param {array} allowedDeclarationsList
|
|
16654
|
-
*
|
|
16655
|
-
* @
|
|
16656
|
-
* @property {string} attributeObject.
|
|
16657
|
-
* @property {string} attributeObject.
|
|
16658
|
-
* @
|
|
17326
|
+
* @param {object} selectedRule - Example: { color: red, font-family: helvetica }
|
|
17327
|
+
* @param {array} allowedDeclarationsList - List of declarations
|
|
17328
|
+
* which pass the allowlist.
|
|
17329
|
+
* @param {object} attributeObject - Object representing the current css property.
|
|
17330
|
+
* @property {string} attributeObject.type - Typically 'declaration'.
|
|
17331
|
+
* @property {string} attributeObject.prop - The CSS property, i.e 'color'.
|
|
17332
|
+
* @property {string} attributeObject.value - The corresponding value to
|
|
17333
|
+
* the css property, i.e 'red'.
|
|
17334
|
+
* @return {function} - When used in Array.reduce,
|
|
17335
|
+
* will return an array of Declaration objects
|
|
16659
17336
|
*/
|
|
16660
17337
|
function filterDeclarations(selectedRule) {
|
|
16661
17338
|
return function (allowedDeclarationsList, attributeObject) {
|
|
16662
17339
|
// If this property is allowlisted...
|
|
16663
17340
|
if (has(selectedRule, attributeObject.prop)) {
|
|
16664
|
-
const matchesRegex = selectedRule[attributeObject.prop]
|
|
16665
|
-
|
|
16666
|
-
|
|
17341
|
+
const matchesRegex = selectedRule[attributeObject.prop]
|
|
17342
|
+
.some(function(regularExpression) {
|
|
17343
|
+
return regularExpression.test(attributeObject.value);
|
|
17344
|
+
});
|
|
16667
17345
|
|
|
16668
17346
|
if (matchesRegex) {
|
|
16669
17347
|
allowedDeclarationsList.push(attributeObject);
|
|
@@ -16795,7 +17473,7 @@ sanitizeHtml.simpleTransform = function(newTagName, newAttribs, merge) {
|
|
|
16795
17473
|
|
|
16796
17474
|
return {
|
|
16797
17475
|
tagName: newTagName,
|
|
16798
|
-
attribs
|
|
17476
|
+
attribs
|
|
16799
17477
|
};
|
|
16800
17478
|
};
|
|
16801
17479
|
};
|
|
@@ -23221,7 +23899,6 @@ function FormFieldView({
|
|
|
23221
23899
|
multiline = false,
|
|
23222
23900
|
rows,
|
|
23223
23901
|
placeholder,
|
|
23224
|
-
name,
|
|
23225
23902
|
startAdornment,
|
|
23226
23903
|
endAdornment,
|
|
23227
23904
|
inputProps,
|
|
@@ -23287,7 +23964,6 @@ function FormFieldView({
|
|
|
23287
23964
|
children: label
|
|
23288
23965
|
}), jsx(Input$5, {
|
|
23289
23966
|
id: fieldId,
|
|
23290
|
-
name: name,
|
|
23291
23967
|
type: type,
|
|
23292
23968
|
value: value,
|
|
23293
23969
|
onChange: handleChange,
|
|
@@ -23337,7 +24013,6 @@ function FormSelectView({
|
|
|
23337
24013
|
fullWidth = true,
|
|
23338
24014
|
size = 'small',
|
|
23339
24015
|
placeholder,
|
|
23340
|
-
name,
|
|
23341
24016
|
// Exclude ViewProps that conflict with MUI FormControl types
|
|
23342
24017
|
margin: _margin,
|
|
23343
24018
|
marginTop: _marginTop,
|
|
@@ -23387,7 +24062,6 @@ function FormSelectView({
|
|
|
23387
24062
|
shrink: true,
|
|
23388
24063
|
children: label
|
|
23389
24064
|
}), jsxs(Select, {
|
|
23390
|
-
name: name,
|
|
23391
24065
|
value: value,
|
|
23392
24066
|
onChange: handleChange,
|
|
23393
24067
|
disabled: disabled,
|
|
@@ -31362,12 +32036,6 @@ __decorate([Field(), Editor({
|
|
|
31362
32036
|
description: 'Placeholder text when no value is selected',
|
|
31363
32037
|
placeholder: 'Select an option...'
|
|
31364
32038
|
}), IsOptional(), IsString(), __metadata("design:type", String)], FormSelectModel.prototype, "placeholder", void 0);
|
|
31365
|
-
__decorate([Field(), Editor({
|
|
31366
|
-
field_type: FieldType.TEXT,
|
|
31367
|
-
label: 'Name',
|
|
31368
|
-
description: 'Name attribute for the select (for forms and accessibility)',
|
|
31369
|
-
placeholder: 'Enter name...'
|
|
31370
|
-
}), IsOptional(), IsString(), __metadata("design:type", String)], FormSelectModel.prototype, "name", void 0);
|
|
31371
32039
|
FormSelectModel = __decorate([Schema('FormSelect', '1.0.0')], FormSelectModel);
|
|
31372
32040
|
|
|
31373
32041
|
/**
|
|
@@ -31454,12 +32122,6 @@ __decorate([Field(), Editor({
|
|
|
31454
32122
|
description: 'Placeholder text',
|
|
31455
32123
|
placeholder: 'Enter text...'
|
|
31456
32124
|
}), IsOptional(), IsString(), __metadata("design:type", String)], FormFieldModel.prototype, "placeholder", void 0);
|
|
31457
|
-
__decorate([Field(), Editor({
|
|
31458
|
-
field_type: FieldType.TEXT,
|
|
31459
|
-
label: 'Name',
|
|
31460
|
-
description: 'Name attribute for the input (for forms and accessibility)',
|
|
31461
|
-
placeholder: 'Enter name...'
|
|
31462
|
-
}), IsOptional(), IsString(), __metadata("design:type", String)], FormFieldModel.prototype, "name", void 0);
|
|
31463
32125
|
FormFieldModel = __decorate([Schema('FormField', '1.0.0')], FormFieldModel);
|
|
31464
32126
|
|
|
31465
32127
|
/**
|