@angular/ssr 20.0.0-next.4 → 20.0.0-next.6
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/fesm2022/node.mjs +34 -0
- package/fesm2022/node.mjs.map +1 -1
- package/node/index.d.ts +1 -0
- package/package.json +7 -7
- package/third_party/beasties/index.js +1136 -1240
- package/third_party/beasties/index.js.map +1 -1
|
@@ -454,7 +454,7 @@ function requireCssSyntaxError () {
|
|
|
454
454
|
if (hasRequiredCssSyntaxError) return cssSyntaxError;
|
|
455
455
|
hasRequiredCssSyntaxError = 1;
|
|
456
456
|
|
|
457
|
-
let pico = requirePicocolors_browser();
|
|
457
|
+
let pico = /*@__PURE__*/ requirePicocolors_browser();
|
|
458
458
|
|
|
459
459
|
let terminalHighlight = require$$2;
|
|
460
460
|
|
|
@@ -6140,634 +6140,96 @@ class DomHandler {
|
|
|
6140
6140
|
}
|
|
6141
6141
|
}
|
|
6142
6142
|
|
|
6143
|
-
|
|
6144
|
-
|
|
6145
|
-
|
|
6146
|
-
"\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"
|
|
6147
|
-
|
|
6148
|
-
|
|
6149
|
-
|
|
6150
|
-
// Generated using scripts/write-decode-map.ts
|
|
6151
|
-
var xmlDecodeTree = new Uint16Array(
|
|
6152
|
-
// prettier-ignore
|
|
6153
|
-
"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
6154
|
-
.split("")
|
|
6155
|
-
.map((c) => c.charCodeAt(0)));
|
|
6156
|
-
|
|
6157
|
-
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
6158
|
-
var _a;
|
|
6159
|
-
const decodeMap = new Map([
|
|
6160
|
-
[0, 65533],
|
|
6161
|
-
// C1 Unicode control character reference replacements
|
|
6162
|
-
[128, 8364],
|
|
6163
|
-
[130, 8218],
|
|
6164
|
-
[131, 402],
|
|
6165
|
-
[132, 8222],
|
|
6166
|
-
[133, 8230],
|
|
6167
|
-
[134, 8224],
|
|
6168
|
-
[135, 8225],
|
|
6169
|
-
[136, 710],
|
|
6170
|
-
[137, 8240],
|
|
6171
|
-
[138, 352],
|
|
6172
|
-
[139, 8249],
|
|
6173
|
-
[140, 338],
|
|
6174
|
-
[142, 381],
|
|
6175
|
-
[145, 8216],
|
|
6176
|
-
[146, 8217],
|
|
6177
|
-
[147, 8220],
|
|
6178
|
-
[148, 8221],
|
|
6179
|
-
[149, 8226],
|
|
6180
|
-
[150, 8211],
|
|
6181
|
-
[151, 8212],
|
|
6182
|
-
[152, 732],
|
|
6183
|
-
[153, 8482],
|
|
6184
|
-
[154, 353],
|
|
6185
|
-
[155, 8250],
|
|
6186
|
-
[156, 339],
|
|
6187
|
-
[158, 382],
|
|
6188
|
-
[159, 376],
|
|
6143
|
+
const xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
|
|
6144
|
+
const xmlCodeMap = new Map([
|
|
6145
|
+
[34, """],
|
|
6146
|
+
[38, "&"],
|
|
6147
|
+
[39, "'"],
|
|
6148
|
+
[60, "<"],
|
|
6149
|
+
[62, ">"],
|
|
6189
6150
|
]);
|
|
6151
|
+
// For compatibility with node < 4, we wrap `codePointAt`
|
|
6152
|
+
const getCodePoint =
|
|
6153
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
6154
|
+
String.prototype.codePointAt != null
|
|
6155
|
+
? (str, index) => str.codePointAt(index)
|
|
6156
|
+
: // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
|
6157
|
+
(c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800
|
|
6158
|
+
? (c.charCodeAt(index) - 0xd800) * 0x400 +
|
|
6159
|
+
c.charCodeAt(index + 1) -
|
|
6160
|
+
0xdc00 +
|
|
6161
|
+
0x10000
|
|
6162
|
+
: c.charCodeAt(index);
|
|
6190
6163
|
/**
|
|
6191
|
-
*
|
|
6164
|
+
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
6165
|
+
* documents using XML entities.
|
|
6166
|
+
*
|
|
6167
|
+
* If a character has no equivalent entity, a
|
|
6168
|
+
* numeric hexadecimal reference (eg. `ü`) will be used.
|
|
6192
6169
|
*/
|
|
6193
|
-
|
|
6194
|
-
|
|
6195
|
-
|
|
6196
|
-
let
|
|
6197
|
-
|
|
6198
|
-
|
|
6199
|
-
|
|
6200
|
-
|
|
6170
|
+
function encodeXML(str) {
|
|
6171
|
+
let ret = "";
|
|
6172
|
+
let lastIdx = 0;
|
|
6173
|
+
let match;
|
|
6174
|
+
while ((match = xmlReplacer.exec(str)) !== null) {
|
|
6175
|
+
const i = match.index;
|
|
6176
|
+
const char = str.charCodeAt(i);
|
|
6177
|
+
const next = xmlCodeMap.get(char);
|
|
6178
|
+
if (next !== undefined) {
|
|
6179
|
+
ret += str.substring(lastIdx, i) + next;
|
|
6180
|
+
lastIdx = i + 1;
|
|
6181
|
+
}
|
|
6182
|
+
else {
|
|
6183
|
+
ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;
|
|
6184
|
+
// Increase by 1 if we have a surrogate pair
|
|
6185
|
+
lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);
|
|
6186
|
+
}
|
|
6201
6187
|
}
|
|
6202
|
-
|
|
6203
|
-
|
|
6204
|
-
};
|
|
6188
|
+
return ret + str.substr(lastIdx);
|
|
6189
|
+
}
|
|
6205
6190
|
/**
|
|
6206
|
-
*
|
|
6207
|
-
*
|
|
6208
|
-
*
|
|
6191
|
+
* Creates a function that escapes all characters matched by the given regular
|
|
6192
|
+
* expression using the given map of characters to escape to their entities.
|
|
6193
|
+
*
|
|
6194
|
+
* @param regex Regular expression to match characters to escape.
|
|
6195
|
+
* @param map Map of characters to escape to their entities.
|
|
6196
|
+
*
|
|
6197
|
+
* @returns Function that escapes all characters matched by the given regular
|
|
6198
|
+
* expression using the given map of characters to escape to their entities.
|
|
6209
6199
|
*/
|
|
6210
|
-
function
|
|
6211
|
-
|
|
6212
|
-
|
|
6213
|
-
|
|
6214
|
-
|
|
6215
|
-
|
|
6216
|
-
|
|
6217
|
-
|
|
6218
|
-
|
|
6219
|
-
|
|
6220
|
-
|
|
6221
|
-
|
|
6222
|
-
|
|
6223
|
-
|
|
6224
|
-
|
|
6225
|
-
|
|
6226
|
-
CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F";
|
|
6227
|
-
CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X";
|
|
6228
|
-
CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z";
|
|
6229
|
-
CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A";
|
|
6230
|
-
CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F";
|
|
6231
|
-
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
6232
|
-
})(CharCodes$1 || (CharCodes$1 = {}));
|
|
6233
|
-
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
6234
|
-
const TO_LOWER_BIT = 0b100000;
|
|
6235
|
-
var BinTrieFlags;
|
|
6236
|
-
(function (BinTrieFlags) {
|
|
6237
|
-
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
6238
|
-
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
6239
|
-
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
6240
|
-
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
6241
|
-
function isNumber(code) {
|
|
6242
|
-
return code >= CharCodes$1.ZERO && code <= CharCodes$1.NINE;
|
|
6243
|
-
}
|
|
6244
|
-
function isHexadecimalCharacter(code) {
|
|
6245
|
-
return ((code >= CharCodes$1.UPPER_A && code <= CharCodes$1.UPPER_F) ||
|
|
6246
|
-
(code >= CharCodes$1.LOWER_A && code <= CharCodes$1.LOWER_F));
|
|
6247
|
-
}
|
|
6248
|
-
function isAsciiAlphaNumeric(code) {
|
|
6249
|
-
return ((code >= CharCodes$1.UPPER_A && code <= CharCodes$1.UPPER_Z) ||
|
|
6250
|
-
(code >= CharCodes$1.LOWER_A && code <= CharCodes$1.LOWER_Z) ||
|
|
6251
|
-
isNumber(code));
|
|
6200
|
+
function getEscaper(regex, map) {
|
|
6201
|
+
return function escape(data) {
|
|
6202
|
+
let match;
|
|
6203
|
+
let lastIdx = 0;
|
|
6204
|
+
let result = "";
|
|
6205
|
+
while ((match = regex.exec(data))) {
|
|
6206
|
+
if (lastIdx !== match.index) {
|
|
6207
|
+
result += data.substring(lastIdx, match.index);
|
|
6208
|
+
}
|
|
6209
|
+
// We know that this character will be in the map.
|
|
6210
|
+
result += map.get(match[0].charCodeAt(0));
|
|
6211
|
+
// Every match will be of length 1
|
|
6212
|
+
lastIdx = match.index + 1;
|
|
6213
|
+
}
|
|
6214
|
+
return result + data.substring(lastIdx);
|
|
6215
|
+
};
|
|
6252
6216
|
}
|
|
6253
6217
|
/**
|
|
6254
|
-
*
|
|
6218
|
+
* Encodes all characters that have to be escaped in HTML attributes,
|
|
6219
|
+
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
6255
6220
|
*
|
|
6256
|
-
*
|
|
6257
|
-
* See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
|
|
6221
|
+
* @param data String to escape.
|
|
6258
6222
|
*/
|
|
6259
|
-
|
|
6260
|
-
|
|
6261
|
-
|
|
6262
|
-
|
|
6263
|
-
|
|
6264
|
-
EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart";
|
|
6265
|
-
EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart";
|
|
6266
|
-
EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal";
|
|
6267
|
-
EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex";
|
|
6268
|
-
EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity";
|
|
6269
|
-
})(EntityDecoderState || (EntityDecoderState = {}));
|
|
6270
|
-
var DecodingMode;
|
|
6271
|
-
(function (DecodingMode) {
|
|
6272
|
-
/** Entities in text nodes that can end with any character. */
|
|
6273
|
-
DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy";
|
|
6274
|
-
/** Only allow entities terminated with a semicolon. */
|
|
6275
|
-
DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
|
|
6276
|
-
/** Entities in attributes have limitations on ending characters. */
|
|
6277
|
-
DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
|
|
6278
|
-
})(DecodingMode || (DecodingMode = {}));
|
|
6223
|
+
const escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([
|
|
6224
|
+
[34, """],
|
|
6225
|
+
[38, "&"],
|
|
6226
|
+
[160, " "],
|
|
6227
|
+
]));
|
|
6279
6228
|
/**
|
|
6280
|
-
*
|
|
6281
|
-
|
|
6282
|
-
|
|
6283
|
-
|
|
6284
|
-
/** The tree used to decode entities. */
|
|
6285
|
-
decodeTree,
|
|
6286
|
-
/**
|
|
6287
|
-
* The function that is called when a codepoint is decoded.
|
|
6288
|
-
*
|
|
6289
|
-
* For multi-byte named entities, this will be called multiple times,
|
|
6290
|
-
* with the second codepoint, and the same `consumed` value.
|
|
6291
|
-
*
|
|
6292
|
-
* @param codepoint The decoded codepoint.
|
|
6293
|
-
* @param consumed The number of bytes consumed by the decoder.
|
|
6294
|
-
*/
|
|
6295
|
-
emitCodePoint,
|
|
6296
|
-
/** An object that is used to produce errors. */
|
|
6297
|
-
errors) {
|
|
6298
|
-
this.decodeTree = decodeTree;
|
|
6299
|
-
this.emitCodePoint = emitCodePoint;
|
|
6300
|
-
this.errors = errors;
|
|
6301
|
-
/** The current state of the decoder. */
|
|
6302
|
-
this.state = EntityDecoderState.EntityStart;
|
|
6303
|
-
/** Characters that were consumed while parsing an entity. */
|
|
6304
|
-
this.consumed = 1;
|
|
6305
|
-
/**
|
|
6306
|
-
* The result of the entity.
|
|
6307
|
-
*
|
|
6308
|
-
* Either the result index of a numeric entity, or the codepoint of a
|
|
6309
|
-
* numeric entity.
|
|
6310
|
-
*/
|
|
6311
|
-
this.result = 0;
|
|
6312
|
-
/** The current index in the decode tree. */
|
|
6313
|
-
this.treeIndex = 0;
|
|
6314
|
-
/** The number of characters that were consumed in excess. */
|
|
6315
|
-
this.excess = 1;
|
|
6316
|
-
/** The mode in which the decoder is operating. */
|
|
6317
|
-
this.decodeMode = DecodingMode.Strict;
|
|
6318
|
-
}
|
|
6319
|
-
/** Resets the instance to make it reusable. */
|
|
6320
|
-
startEntity(decodeMode) {
|
|
6321
|
-
this.decodeMode = decodeMode;
|
|
6322
|
-
this.state = EntityDecoderState.EntityStart;
|
|
6323
|
-
this.result = 0;
|
|
6324
|
-
this.treeIndex = 0;
|
|
6325
|
-
this.excess = 1;
|
|
6326
|
-
this.consumed = 1;
|
|
6327
|
-
}
|
|
6328
|
-
/**
|
|
6329
|
-
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
6330
|
-
* If the entity is incomplete, the decoder will return -1.
|
|
6331
|
-
*
|
|
6332
|
-
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
6333
|
-
* entity is incomplete, and resume when the next string is written.
|
|
6334
|
-
*
|
|
6335
|
-
* @param string The string containing the entity (or a continuation of the entity).
|
|
6336
|
-
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
6337
|
-
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6338
|
-
*/
|
|
6339
|
-
write(str, offset) {
|
|
6340
|
-
switch (this.state) {
|
|
6341
|
-
case EntityDecoderState.EntityStart: {
|
|
6342
|
-
if (str.charCodeAt(offset) === CharCodes$1.NUM) {
|
|
6343
|
-
this.state = EntityDecoderState.NumericStart;
|
|
6344
|
-
this.consumed += 1;
|
|
6345
|
-
return this.stateNumericStart(str, offset + 1);
|
|
6346
|
-
}
|
|
6347
|
-
this.state = EntityDecoderState.NamedEntity;
|
|
6348
|
-
return this.stateNamedEntity(str, offset);
|
|
6349
|
-
}
|
|
6350
|
-
case EntityDecoderState.NumericStart: {
|
|
6351
|
-
return this.stateNumericStart(str, offset);
|
|
6352
|
-
}
|
|
6353
|
-
case EntityDecoderState.NumericDecimal: {
|
|
6354
|
-
return this.stateNumericDecimal(str, offset);
|
|
6355
|
-
}
|
|
6356
|
-
case EntityDecoderState.NumericHex: {
|
|
6357
|
-
return this.stateNumericHex(str, offset);
|
|
6358
|
-
}
|
|
6359
|
-
case EntityDecoderState.NamedEntity: {
|
|
6360
|
-
return this.stateNamedEntity(str, offset);
|
|
6361
|
-
}
|
|
6362
|
-
}
|
|
6363
|
-
}
|
|
6364
|
-
/**
|
|
6365
|
-
* Switches between the numeric decimal and hexadecimal states.
|
|
6366
|
-
*
|
|
6367
|
-
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
6368
|
-
*
|
|
6369
|
-
* @param str The string containing the entity (or a continuation of the entity).
|
|
6370
|
-
* @param offset The current offset.
|
|
6371
|
-
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6372
|
-
*/
|
|
6373
|
-
stateNumericStart(str, offset) {
|
|
6374
|
-
if (offset >= str.length) {
|
|
6375
|
-
return -1;
|
|
6376
|
-
}
|
|
6377
|
-
if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes$1.LOWER_X) {
|
|
6378
|
-
this.state = EntityDecoderState.NumericHex;
|
|
6379
|
-
this.consumed += 1;
|
|
6380
|
-
return this.stateNumericHex(str, offset + 1);
|
|
6381
|
-
}
|
|
6382
|
-
this.state = EntityDecoderState.NumericDecimal;
|
|
6383
|
-
return this.stateNumericDecimal(str, offset);
|
|
6384
|
-
}
|
|
6385
|
-
addToNumericResult(str, start, end, base) {
|
|
6386
|
-
if (start !== end) {
|
|
6387
|
-
const digitCount = end - start;
|
|
6388
|
-
this.result =
|
|
6389
|
-
this.result * Math.pow(base, digitCount) +
|
|
6390
|
-
parseInt(str.substr(start, digitCount), base);
|
|
6391
|
-
this.consumed += digitCount;
|
|
6392
|
-
}
|
|
6393
|
-
}
|
|
6394
|
-
/**
|
|
6395
|
-
* Parses a hexadecimal numeric entity.
|
|
6396
|
-
*
|
|
6397
|
-
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
6398
|
-
*
|
|
6399
|
-
* @param str The string containing the entity (or a continuation of the entity).
|
|
6400
|
-
* @param offset The current offset.
|
|
6401
|
-
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6402
|
-
*/
|
|
6403
|
-
stateNumericHex(str, offset) {
|
|
6404
|
-
const startIdx = offset;
|
|
6405
|
-
while (offset < str.length) {
|
|
6406
|
-
const char = str.charCodeAt(offset);
|
|
6407
|
-
if (isNumber(char) || isHexadecimalCharacter(char)) {
|
|
6408
|
-
offset += 1;
|
|
6409
|
-
}
|
|
6410
|
-
else {
|
|
6411
|
-
this.addToNumericResult(str, startIdx, offset, 16);
|
|
6412
|
-
return this.emitNumericEntity(char, 3);
|
|
6413
|
-
}
|
|
6414
|
-
}
|
|
6415
|
-
this.addToNumericResult(str, startIdx, offset, 16);
|
|
6416
|
-
return -1;
|
|
6417
|
-
}
|
|
6418
|
-
/**
|
|
6419
|
-
* Parses a decimal numeric entity.
|
|
6420
|
-
*
|
|
6421
|
-
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
6422
|
-
*
|
|
6423
|
-
* @param str The string containing the entity (or a continuation of the entity).
|
|
6424
|
-
* @param offset The current offset.
|
|
6425
|
-
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6426
|
-
*/
|
|
6427
|
-
stateNumericDecimal(str, offset) {
|
|
6428
|
-
const startIdx = offset;
|
|
6429
|
-
while (offset < str.length) {
|
|
6430
|
-
const char = str.charCodeAt(offset);
|
|
6431
|
-
if (isNumber(char)) {
|
|
6432
|
-
offset += 1;
|
|
6433
|
-
}
|
|
6434
|
-
else {
|
|
6435
|
-
this.addToNumericResult(str, startIdx, offset, 10);
|
|
6436
|
-
return this.emitNumericEntity(char, 2);
|
|
6437
|
-
}
|
|
6438
|
-
}
|
|
6439
|
-
this.addToNumericResult(str, startIdx, offset, 10);
|
|
6440
|
-
return -1;
|
|
6441
|
-
}
|
|
6442
|
-
/**
|
|
6443
|
-
* Validate and emit a numeric entity.
|
|
6444
|
-
*
|
|
6445
|
-
* Implements the logic from the `Hexademical character reference start
|
|
6446
|
-
* state` and `Numeric character reference end state` in the HTML spec.
|
|
6447
|
-
*
|
|
6448
|
-
* @param lastCp The last code point of the entity. Used to see if the
|
|
6449
|
-
* entity was terminated with a semicolon.
|
|
6450
|
-
* @param expectedLength The minimum number of characters that should be
|
|
6451
|
-
* consumed. Used to validate that at least one digit
|
|
6452
|
-
* was consumed.
|
|
6453
|
-
* @returns The number of characters that were consumed.
|
|
6454
|
-
*/
|
|
6455
|
-
emitNumericEntity(lastCp, expectedLength) {
|
|
6456
|
-
var _a;
|
|
6457
|
-
// Ensure we consumed at least one digit.
|
|
6458
|
-
if (this.consumed <= expectedLength) {
|
|
6459
|
-
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
6460
|
-
return 0;
|
|
6461
|
-
}
|
|
6462
|
-
// Figure out if this is a legit end of the entity
|
|
6463
|
-
if (lastCp === CharCodes$1.SEMI) {
|
|
6464
|
-
this.consumed += 1;
|
|
6465
|
-
}
|
|
6466
|
-
else if (this.decodeMode === DecodingMode.Strict) {
|
|
6467
|
-
return 0;
|
|
6468
|
-
}
|
|
6469
|
-
this.emitCodePoint(replaceCodePoint(this.result), this.consumed);
|
|
6470
|
-
if (this.errors) {
|
|
6471
|
-
if (lastCp !== CharCodes$1.SEMI) {
|
|
6472
|
-
this.errors.missingSemicolonAfterCharacterReference();
|
|
6473
|
-
}
|
|
6474
|
-
this.errors.validateNumericCharacterReference(this.result);
|
|
6475
|
-
}
|
|
6476
|
-
return this.consumed;
|
|
6477
|
-
}
|
|
6478
|
-
/**
|
|
6479
|
-
* Parses a named entity.
|
|
6480
|
-
*
|
|
6481
|
-
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
6482
|
-
*
|
|
6483
|
-
* @param str The string containing the entity (or a continuation of the entity).
|
|
6484
|
-
* @param offset The current offset.
|
|
6485
|
-
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6486
|
-
*/
|
|
6487
|
-
stateNamedEntity(str, offset) {
|
|
6488
|
-
const { decodeTree } = this;
|
|
6489
|
-
let current = decodeTree[this.treeIndex];
|
|
6490
|
-
// The mask is the number of bytes of the value, including the current byte.
|
|
6491
|
-
let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6492
|
-
for (; offset < str.length; offset++, this.excess++) {
|
|
6493
|
-
const char = str.charCodeAt(offset);
|
|
6494
|
-
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
6495
|
-
if (this.treeIndex < 0) {
|
|
6496
|
-
return this.result === 0 ||
|
|
6497
|
-
// If we are parsing an attribute
|
|
6498
|
-
(this.decodeMode === DecodingMode.Attribute &&
|
|
6499
|
-
// We shouldn't have consumed any characters after the entity,
|
|
6500
|
-
(valueLength === 0 ||
|
|
6501
|
-
// And there should be no invalid characters.
|
|
6502
|
-
isEntityInAttributeInvalidEnd(char)))
|
|
6503
|
-
? 0
|
|
6504
|
-
: this.emitNotTerminatedNamedEntity();
|
|
6505
|
-
}
|
|
6506
|
-
current = decodeTree[this.treeIndex];
|
|
6507
|
-
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6508
|
-
// If the branch is a value, store it and continue
|
|
6509
|
-
if (valueLength !== 0) {
|
|
6510
|
-
// If the entity is terminated by a semicolon, we are done.
|
|
6511
|
-
if (char === CharCodes$1.SEMI) {
|
|
6512
|
-
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
6513
|
-
}
|
|
6514
|
-
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
6515
|
-
if (this.decodeMode !== DecodingMode.Strict) {
|
|
6516
|
-
this.result = this.treeIndex;
|
|
6517
|
-
this.consumed += this.excess;
|
|
6518
|
-
this.excess = 0;
|
|
6519
|
-
}
|
|
6520
|
-
}
|
|
6521
|
-
}
|
|
6522
|
-
return -1;
|
|
6523
|
-
}
|
|
6524
|
-
/**
|
|
6525
|
-
* Emit a named entity that was not terminated with a semicolon.
|
|
6526
|
-
*
|
|
6527
|
-
* @returns The number of characters consumed.
|
|
6528
|
-
*/
|
|
6529
|
-
emitNotTerminatedNamedEntity() {
|
|
6530
|
-
var _a;
|
|
6531
|
-
const { result, decodeTree } = this;
|
|
6532
|
-
const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6533
|
-
this.emitNamedEntityData(result, valueLength, this.consumed);
|
|
6534
|
-
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
|
|
6535
|
-
return this.consumed;
|
|
6536
|
-
}
|
|
6537
|
-
/**
|
|
6538
|
-
* Emit a named entity.
|
|
6539
|
-
*
|
|
6540
|
-
* @param result The index of the entity in the decode tree.
|
|
6541
|
-
* @param valueLength The number of bytes in the entity.
|
|
6542
|
-
* @param consumed The number of characters consumed.
|
|
6543
|
-
*
|
|
6544
|
-
* @returns The number of characters consumed.
|
|
6545
|
-
*/
|
|
6546
|
-
emitNamedEntityData(result, valueLength, consumed) {
|
|
6547
|
-
const { decodeTree } = this;
|
|
6548
|
-
this.emitCodePoint(valueLength === 1
|
|
6549
|
-
? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH
|
|
6550
|
-
: decodeTree[result + 1], consumed);
|
|
6551
|
-
if (valueLength === 3) {
|
|
6552
|
-
// For multi-byte values, we need to emit the second byte.
|
|
6553
|
-
this.emitCodePoint(decodeTree[result + 2], consumed);
|
|
6554
|
-
}
|
|
6555
|
-
return consumed;
|
|
6556
|
-
}
|
|
6557
|
-
/**
|
|
6558
|
-
* Signal to the parser that the end of the input was reached.
|
|
6559
|
-
*
|
|
6560
|
-
* Remaining data will be emitted and relevant errors will be produced.
|
|
6561
|
-
*
|
|
6562
|
-
* @returns The number of characters consumed.
|
|
6563
|
-
*/
|
|
6564
|
-
end() {
|
|
6565
|
-
var _a;
|
|
6566
|
-
switch (this.state) {
|
|
6567
|
-
case EntityDecoderState.NamedEntity: {
|
|
6568
|
-
// Emit a named entity if we have one.
|
|
6569
|
-
return this.result !== 0 &&
|
|
6570
|
-
(this.decodeMode !== DecodingMode.Attribute ||
|
|
6571
|
-
this.result === this.treeIndex)
|
|
6572
|
-
? this.emitNotTerminatedNamedEntity()
|
|
6573
|
-
: 0;
|
|
6574
|
-
}
|
|
6575
|
-
// Otherwise, emit a numeric entity if we have one.
|
|
6576
|
-
case EntityDecoderState.NumericDecimal: {
|
|
6577
|
-
return this.emitNumericEntity(0, 2);
|
|
6578
|
-
}
|
|
6579
|
-
case EntityDecoderState.NumericHex: {
|
|
6580
|
-
return this.emitNumericEntity(0, 3);
|
|
6581
|
-
}
|
|
6582
|
-
case EntityDecoderState.NumericStart: {
|
|
6583
|
-
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
6584
|
-
return 0;
|
|
6585
|
-
}
|
|
6586
|
-
case EntityDecoderState.EntityStart: {
|
|
6587
|
-
// Return 0 if we have no entity.
|
|
6588
|
-
return 0;
|
|
6589
|
-
}
|
|
6590
|
-
}
|
|
6591
|
-
}
|
|
6592
|
-
}
|
|
6593
|
-
/**
|
|
6594
|
-
* Creates a function that decodes entities in a string.
|
|
6595
|
-
*
|
|
6596
|
-
* @param decodeTree The decode tree.
|
|
6597
|
-
* @returns A function that decodes entities in a string.
|
|
6598
|
-
*/
|
|
6599
|
-
function getDecoder(decodeTree) {
|
|
6600
|
-
let ret = "";
|
|
6601
|
-
const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));
|
|
6602
|
-
return function decodeWithTrie(str, decodeMode) {
|
|
6603
|
-
let lastIndex = 0;
|
|
6604
|
-
let offset = 0;
|
|
6605
|
-
while ((offset = str.indexOf("&", offset)) >= 0) {
|
|
6606
|
-
ret += str.slice(lastIndex, offset);
|
|
6607
|
-
decoder.startEntity(decodeMode);
|
|
6608
|
-
const len = decoder.write(str,
|
|
6609
|
-
// Skip the "&"
|
|
6610
|
-
offset + 1);
|
|
6611
|
-
if (len < 0) {
|
|
6612
|
-
lastIndex = offset + decoder.end();
|
|
6613
|
-
break;
|
|
6614
|
-
}
|
|
6615
|
-
lastIndex = offset + len;
|
|
6616
|
-
// If `len` is 0, skip the current `&` and continue.
|
|
6617
|
-
offset = len === 0 ? lastIndex + 1 : lastIndex;
|
|
6618
|
-
}
|
|
6619
|
-
const result = ret + str.slice(lastIndex);
|
|
6620
|
-
// Make sure we don't keep a reference to the final string.
|
|
6621
|
-
ret = "";
|
|
6622
|
-
return result;
|
|
6623
|
-
};
|
|
6624
|
-
}
|
|
6625
|
-
/**
|
|
6626
|
-
* Determines the branch of the current node that is taken given the current
|
|
6627
|
-
* character. This function is used to traverse the trie.
|
|
6628
|
-
*
|
|
6629
|
-
* @param decodeTree The trie.
|
|
6630
|
-
* @param current The current node.
|
|
6631
|
-
* @param nodeIdx The index right after the current node and its value.
|
|
6632
|
-
* @param char The current character.
|
|
6633
|
-
* @returns The index of the next node, or -1 if no branch is taken.
|
|
6634
|
-
*/
|
|
6635
|
-
function determineBranch(decodeTree, current, nodeIdx, char) {
|
|
6636
|
-
const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
6637
|
-
const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
6638
|
-
// Case 1: Single branch encoded in jump offset
|
|
6639
|
-
if (branchCount === 0) {
|
|
6640
|
-
return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
|
|
6641
|
-
}
|
|
6642
|
-
// Case 2: Multiple branches encoded in jump table
|
|
6643
|
-
if (jumpOffset) {
|
|
6644
|
-
const value = char - jumpOffset;
|
|
6645
|
-
return value < 0 || value >= branchCount
|
|
6646
|
-
? -1
|
|
6647
|
-
: decodeTree[nodeIdx + value] - 1;
|
|
6648
|
-
}
|
|
6649
|
-
// Case 3: Multiple branches encoded in dictionary
|
|
6650
|
-
// Binary search for the character.
|
|
6651
|
-
let lo = nodeIdx;
|
|
6652
|
-
let hi = lo + branchCount - 1;
|
|
6653
|
-
while (lo <= hi) {
|
|
6654
|
-
const mid = (lo + hi) >>> 1;
|
|
6655
|
-
const midVal = decodeTree[mid];
|
|
6656
|
-
if (midVal < char) {
|
|
6657
|
-
lo = mid + 1;
|
|
6658
|
-
}
|
|
6659
|
-
else if (midVal > char) {
|
|
6660
|
-
hi = mid - 1;
|
|
6661
|
-
}
|
|
6662
|
-
else {
|
|
6663
|
-
return decodeTree[mid + branchCount];
|
|
6664
|
-
}
|
|
6665
|
-
}
|
|
6666
|
-
return -1;
|
|
6667
|
-
}
|
|
6668
|
-
getDecoder(htmlDecodeTree);
|
|
6669
|
-
getDecoder(xmlDecodeTree);
|
|
6670
|
-
|
|
6671
|
-
// Generated using scripts/write-encode-map.ts
|
|
6672
|
-
function restoreDiff(arr) {
|
|
6673
|
-
for (let i = 1; i < arr.length; i++) {
|
|
6674
|
-
arr[i][0] += arr[i - 1][0] + 1;
|
|
6675
|
-
}
|
|
6676
|
-
return arr;
|
|
6677
|
-
}
|
|
6678
|
-
// prettier-ignore
|
|
6679
|
-
new Map(/* #__PURE__ */ restoreDiff([[9, "	"], [0, "
"], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]]));
|
|
6680
|
-
|
|
6681
|
-
const xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
|
|
6682
|
-
const xmlCodeMap = new Map([
|
|
6683
|
-
[34, """],
|
|
6684
|
-
[38, "&"],
|
|
6685
|
-
[39, "'"],
|
|
6686
|
-
[60, "<"],
|
|
6687
|
-
[62, ">"],
|
|
6688
|
-
]);
|
|
6689
|
-
// For compatibility with node < 4, we wrap `codePointAt`
|
|
6690
|
-
const getCodePoint =
|
|
6691
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
6692
|
-
String.prototype.codePointAt != null
|
|
6693
|
-
? (str, index) => str.codePointAt(index)
|
|
6694
|
-
: // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
|
6695
|
-
(c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800
|
|
6696
|
-
? (c.charCodeAt(index) - 0xd800) * 0x400 +
|
|
6697
|
-
c.charCodeAt(index + 1) -
|
|
6698
|
-
0xdc00 +
|
|
6699
|
-
0x10000
|
|
6700
|
-
: c.charCodeAt(index);
|
|
6701
|
-
/**
|
|
6702
|
-
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
6703
|
-
* documents using XML entities.
|
|
6704
|
-
*
|
|
6705
|
-
* If a character has no equivalent entity, a
|
|
6706
|
-
* numeric hexadecimal reference (eg. `ü`) will be used.
|
|
6707
|
-
*/
|
|
6708
|
-
function encodeXML(str) {
|
|
6709
|
-
let ret = "";
|
|
6710
|
-
let lastIdx = 0;
|
|
6711
|
-
let match;
|
|
6712
|
-
while ((match = xmlReplacer.exec(str)) !== null) {
|
|
6713
|
-
const i = match.index;
|
|
6714
|
-
const char = str.charCodeAt(i);
|
|
6715
|
-
const next = xmlCodeMap.get(char);
|
|
6716
|
-
if (next !== undefined) {
|
|
6717
|
-
ret += str.substring(lastIdx, i) + next;
|
|
6718
|
-
lastIdx = i + 1;
|
|
6719
|
-
}
|
|
6720
|
-
else {
|
|
6721
|
-
ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;
|
|
6722
|
-
// Increase by 1 if we have a surrogate pair
|
|
6723
|
-
lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);
|
|
6724
|
-
}
|
|
6725
|
-
}
|
|
6726
|
-
return ret + str.substr(lastIdx);
|
|
6727
|
-
}
|
|
6728
|
-
/**
|
|
6729
|
-
* Creates a function that escapes all characters matched by the given regular
|
|
6730
|
-
* expression using the given map of characters to escape to their entities.
|
|
6731
|
-
*
|
|
6732
|
-
* @param regex Regular expression to match characters to escape.
|
|
6733
|
-
* @param map Map of characters to escape to their entities.
|
|
6734
|
-
*
|
|
6735
|
-
* @returns Function that escapes all characters matched by the given regular
|
|
6736
|
-
* expression using the given map of characters to escape to their entities.
|
|
6737
|
-
*/
|
|
6738
|
-
function getEscaper(regex, map) {
|
|
6739
|
-
return function escape(data) {
|
|
6740
|
-
let match;
|
|
6741
|
-
let lastIdx = 0;
|
|
6742
|
-
let result = "";
|
|
6743
|
-
while ((match = regex.exec(data))) {
|
|
6744
|
-
if (lastIdx !== match.index) {
|
|
6745
|
-
result += data.substring(lastIdx, match.index);
|
|
6746
|
-
}
|
|
6747
|
-
// We know that this character will be in the map.
|
|
6748
|
-
result += map.get(match[0].charCodeAt(0));
|
|
6749
|
-
// Every match will be of length 1
|
|
6750
|
-
lastIdx = match.index + 1;
|
|
6751
|
-
}
|
|
6752
|
-
return result + data.substring(lastIdx);
|
|
6753
|
-
};
|
|
6754
|
-
}
|
|
6755
|
-
/**
|
|
6756
|
-
* Encodes all characters that have to be escaped in HTML attributes,
|
|
6757
|
-
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
6758
|
-
*
|
|
6759
|
-
* @param data String to escape.
|
|
6760
|
-
*/
|
|
6761
|
-
const escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([
|
|
6762
|
-
[34, """],
|
|
6763
|
-
[38, "&"],
|
|
6764
|
-
[160, " "],
|
|
6765
|
-
]));
|
|
6766
|
-
/**
|
|
6767
|
-
* Encodes all characters that have to be escaped in HTML text,
|
|
6768
|
-
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
6769
|
-
*
|
|
6770
|
-
* @param data String to escape.
|
|
6229
|
+
* Encodes all characters that have to be escaped in HTML text,
|
|
6230
|
+
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
6231
|
+
*
|
|
6232
|
+
* @param data String to escape.
|
|
6771
6233
|
*/
|
|
6772
6234
|
const escapeText = getEscaper(/[&<>\u00A0]/g, new Map([
|
|
6773
6235
|
[38, "&"],
|
|
@@ -6776,44 +6238,6 @@ const escapeText = getEscaper(/[&<>\u00A0]/g, new Map([
|
|
|
6776
6238
|
[160, " "],
|
|
6777
6239
|
]));
|
|
6778
6240
|
|
|
6779
|
-
/** The level of entities to support. */
|
|
6780
|
-
var EntityLevel;
|
|
6781
|
-
(function (EntityLevel) {
|
|
6782
|
-
/** Support only XML entities. */
|
|
6783
|
-
EntityLevel[EntityLevel["XML"] = 0] = "XML";
|
|
6784
|
-
/** Support HTML entities, which are a superset of XML entities. */
|
|
6785
|
-
EntityLevel[EntityLevel["HTML"] = 1] = "HTML";
|
|
6786
|
-
})(EntityLevel || (EntityLevel = {}));
|
|
6787
|
-
var EncodingMode;
|
|
6788
|
-
(function (EncodingMode) {
|
|
6789
|
-
/**
|
|
6790
|
-
* The output is UTF-8 encoded. Only characters that need escaping within
|
|
6791
|
-
* XML will be escaped.
|
|
6792
|
-
*/
|
|
6793
|
-
EncodingMode[EncodingMode["UTF8"] = 0] = "UTF8";
|
|
6794
|
-
/**
|
|
6795
|
-
* The output consists only of ASCII characters. Characters that need
|
|
6796
|
-
* escaping within HTML, and characters that aren't ASCII characters will
|
|
6797
|
-
* be escaped.
|
|
6798
|
-
*/
|
|
6799
|
-
EncodingMode[EncodingMode["ASCII"] = 1] = "ASCII";
|
|
6800
|
-
/**
|
|
6801
|
-
* Encode all characters that have an equivalent entity, as well as all
|
|
6802
|
-
* characters that are not ASCII characters.
|
|
6803
|
-
*/
|
|
6804
|
-
EncodingMode[EncodingMode["Extensive"] = 2] = "Extensive";
|
|
6805
|
-
/**
|
|
6806
|
-
* Encode all characters that have to be escaped in HTML attributes,
|
|
6807
|
-
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
6808
|
-
*/
|
|
6809
|
-
EncodingMode[EncodingMode["Attribute"] = 3] = "Attribute";
|
|
6810
|
-
/**
|
|
6811
|
-
* Encode all characters that have to be escaped in HTML text,
|
|
6812
|
-
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
6813
|
-
*/
|
|
6814
|
-
EncodingMode[EncodingMode["Text"] = 4] = "Text";
|
|
6815
|
-
})(EncodingMode || (EncodingMode = {}));
|
|
6816
|
-
|
|
6817
6241
|
const elementNames = new Map([
|
|
6818
6242
|
"altGlyph",
|
|
6819
6243
|
"altGlyphDef",
|
|
@@ -8539,26 +7963,6 @@ function parseSelector(subselects, selector, selectorIndex) {
|
|
|
8539
7963
|
return selectorIndex;
|
|
8540
7964
|
}
|
|
8541
7965
|
|
|
8542
|
-
const attribValChars = ["\\", '"'];
|
|
8543
|
-
const pseudoValChars = [...attribValChars, "(", ")"];
|
|
8544
|
-
new Set(attribValChars.map((c) => c.charCodeAt(0)));
|
|
8545
|
-
new Set(pseudoValChars.map((c) => c.charCodeAt(0)));
|
|
8546
|
-
new Set([
|
|
8547
|
-
...pseudoValChars,
|
|
8548
|
-
"~",
|
|
8549
|
-
"^",
|
|
8550
|
-
"$",
|
|
8551
|
-
"*",
|
|
8552
|
-
"+",
|
|
8553
|
-
"!",
|
|
8554
|
-
"|",
|
|
8555
|
-
":",
|
|
8556
|
-
"[",
|
|
8557
|
-
"]",
|
|
8558
|
-
" ",
|
|
8559
|
-
".",
|
|
8560
|
-
].map((c) => c.charCodeAt(0)));
|
|
8561
|
-
|
|
8562
7966
|
const procedure = new Map([
|
|
8563
7967
|
[SelectorType.Universal, 50],
|
|
8564
7968
|
[SelectorType.Tag, 30],
|
|
@@ -9129,581 +8533,1076 @@ const filters = {
|
|
|
9129
8533
|
// NOTE: can't be unpacked, as :has uses this for side-effects
|
|
9130
8534
|
return (elem) => equals(context[0], elem) && next(elem);
|
|
9131
8535
|
}
|
|
9132
|
-
return (elem) => context.includes(elem) && next(elem);
|
|
8536
|
+
return (elem) => context.includes(elem) && next(elem);
|
|
8537
|
+
},
|
|
8538
|
+
hover: dynamicStatePseudo("isHovered"),
|
|
8539
|
+
visited: dynamicStatePseudo("isVisited"),
|
|
8540
|
+
active: dynamicStatePseudo("isActive"),
|
|
8541
|
+
};
|
|
8542
|
+
/**
|
|
8543
|
+
* Dynamic state pseudos. These depend on optional Adapter methods.
|
|
8544
|
+
*
|
|
8545
|
+
* @param name The name of the adapter method to call.
|
|
8546
|
+
* @returns Pseudo for the `filters` object.
|
|
8547
|
+
*/
|
|
8548
|
+
function dynamicStatePseudo(name) {
|
|
8549
|
+
return function dynamicPseudo(next, _rule, { adapter }) {
|
|
8550
|
+
const func = adapter[name];
|
|
8551
|
+
if (typeof func !== "function") {
|
|
8552
|
+
return boolbase.falseFunc;
|
|
8553
|
+
}
|
|
8554
|
+
return function active(elem) {
|
|
8555
|
+
return func(elem) && next(elem);
|
|
8556
|
+
};
|
|
8557
|
+
};
|
|
8558
|
+
}
|
|
8559
|
+
|
|
8560
|
+
// While filters are precompiled, pseudos get called when they are needed
|
|
8561
|
+
const pseudos = {
|
|
8562
|
+
empty(elem, { adapter }) {
|
|
8563
|
+
return !adapter.getChildren(elem).some((elem) =>
|
|
8564
|
+
// FIXME: `getText` call is potentially expensive.
|
|
8565
|
+
adapter.isTag(elem) || adapter.getText(elem) !== "");
|
|
8566
|
+
},
|
|
8567
|
+
"first-child"(elem, { adapter, equals }) {
|
|
8568
|
+
if (adapter.prevElementSibling) {
|
|
8569
|
+
return adapter.prevElementSibling(elem) == null;
|
|
8570
|
+
}
|
|
8571
|
+
const firstChild = adapter
|
|
8572
|
+
.getSiblings(elem)
|
|
8573
|
+
.find((elem) => adapter.isTag(elem));
|
|
8574
|
+
return firstChild != null && equals(elem, firstChild);
|
|
8575
|
+
},
|
|
8576
|
+
"last-child"(elem, { adapter, equals }) {
|
|
8577
|
+
const siblings = adapter.getSiblings(elem);
|
|
8578
|
+
for (let i = siblings.length - 1; i >= 0; i--) {
|
|
8579
|
+
if (equals(elem, siblings[i]))
|
|
8580
|
+
return true;
|
|
8581
|
+
if (adapter.isTag(siblings[i]))
|
|
8582
|
+
break;
|
|
8583
|
+
}
|
|
8584
|
+
return false;
|
|
8585
|
+
},
|
|
8586
|
+
"first-of-type"(elem, { adapter, equals }) {
|
|
8587
|
+
const siblings = adapter.getSiblings(elem);
|
|
8588
|
+
const elemName = adapter.getName(elem);
|
|
8589
|
+
for (let i = 0; i < siblings.length; i++) {
|
|
8590
|
+
const currentSibling = siblings[i];
|
|
8591
|
+
if (equals(elem, currentSibling))
|
|
8592
|
+
return true;
|
|
8593
|
+
if (adapter.isTag(currentSibling) &&
|
|
8594
|
+
adapter.getName(currentSibling) === elemName) {
|
|
8595
|
+
break;
|
|
8596
|
+
}
|
|
8597
|
+
}
|
|
8598
|
+
return false;
|
|
8599
|
+
},
|
|
8600
|
+
"last-of-type"(elem, { adapter, equals }) {
|
|
8601
|
+
const siblings = adapter.getSiblings(elem);
|
|
8602
|
+
const elemName = adapter.getName(elem);
|
|
8603
|
+
for (let i = siblings.length - 1; i >= 0; i--) {
|
|
8604
|
+
const currentSibling = siblings[i];
|
|
8605
|
+
if (equals(elem, currentSibling))
|
|
8606
|
+
return true;
|
|
8607
|
+
if (adapter.isTag(currentSibling) &&
|
|
8608
|
+
adapter.getName(currentSibling) === elemName) {
|
|
8609
|
+
break;
|
|
8610
|
+
}
|
|
8611
|
+
}
|
|
8612
|
+
return false;
|
|
8613
|
+
},
|
|
8614
|
+
"only-of-type"(elem, { adapter, equals }) {
|
|
8615
|
+
const elemName = adapter.getName(elem);
|
|
8616
|
+
return adapter
|
|
8617
|
+
.getSiblings(elem)
|
|
8618
|
+
.every((sibling) => equals(elem, sibling) ||
|
|
8619
|
+
!adapter.isTag(sibling) ||
|
|
8620
|
+
adapter.getName(sibling) !== elemName);
|
|
8621
|
+
},
|
|
8622
|
+
"only-child"(elem, { adapter, equals }) {
|
|
8623
|
+
return adapter
|
|
8624
|
+
.getSiblings(elem)
|
|
8625
|
+
.every((sibling) => equals(elem, sibling) || !adapter.isTag(sibling));
|
|
8626
|
+
},
|
|
8627
|
+
};
|
|
8628
|
+
function verifyPseudoArgs(func, name, subselect, argIndex) {
|
|
8629
|
+
if (subselect === null) {
|
|
8630
|
+
if (func.length > argIndex) {
|
|
8631
|
+
throw new Error(`Pseudo-class :${name} requires an argument`);
|
|
8632
|
+
}
|
|
8633
|
+
}
|
|
8634
|
+
else if (func.length === argIndex) {
|
|
8635
|
+
throw new Error(`Pseudo-class :${name} doesn't have any arguments`);
|
|
8636
|
+
}
|
|
8637
|
+
}
|
|
8638
|
+
|
|
8639
|
+
/**
|
|
8640
|
+
* Aliases are pseudos that are expressed as selectors.
|
|
8641
|
+
*/
|
|
8642
|
+
const aliases = {
|
|
8643
|
+
// Links
|
|
8644
|
+
"any-link": ":is(a, area, link)[href]",
|
|
8645
|
+
link: ":any-link:not(:visited)",
|
|
8646
|
+
// Forms
|
|
8647
|
+
// https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements
|
|
8648
|
+
disabled: `:is(
|
|
8649
|
+
:is(button, input, select, textarea, optgroup, option)[disabled],
|
|
8650
|
+
optgroup[disabled] > option,
|
|
8651
|
+
fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)
|
|
8652
|
+
)`,
|
|
8653
|
+
enabled: ":not(:disabled)",
|
|
8654
|
+
checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",
|
|
8655
|
+
required: ":is(input, select, textarea)[required]",
|
|
8656
|
+
optional: ":is(input, select, textarea):not([required])",
|
|
8657
|
+
// JQuery extensions
|
|
8658
|
+
// https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness
|
|
8659
|
+
selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",
|
|
8660
|
+
checkbox: "[type=checkbox]",
|
|
8661
|
+
file: "[type=file]",
|
|
8662
|
+
password: "[type=password]",
|
|
8663
|
+
radio: "[type=radio]",
|
|
8664
|
+
reset: "[type=reset]",
|
|
8665
|
+
image: "[type=image]",
|
|
8666
|
+
submit: "[type=submit]",
|
|
8667
|
+
parent: ":not(:empty)",
|
|
8668
|
+
header: ":is(h1, h2, h3, h4, h5, h6)",
|
|
8669
|
+
button: ":is(button, input[type=button])",
|
|
8670
|
+
input: ":is(input, textarea, select, button)",
|
|
8671
|
+
text: "input:is(:not([type!='']), [type=text])",
|
|
8672
|
+
};
|
|
8673
|
+
|
|
8674
|
+
/** Used as a placeholder for :has. Will be replaced with the actual element. */
|
|
8675
|
+
const PLACEHOLDER_ELEMENT = {};
|
|
8676
|
+
function ensureIsTag(next, adapter) {
|
|
8677
|
+
if (next === boolbase.falseFunc)
|
|
8678
|
+
return boolbase.falseFunc;
|
|
8679
|
+
return (elem) => adapter.isTag(elem) && next(elem);
|
|
8680
|
+
}
|
|
8681
|
+
function getNextSiblings(elem, adapter) {
|
|
8682
|
+
const siblings = adapter.getSiblings(elem);
|
|
8683
|
+
if (siblings.length <= 1)
|
|
8684
|
+
return [];
|
|
8685
|
+
const elemIndex = siblings.indexOf(elem);
|
|
8686
|
+
if (elemIndex < 0 || elemIndex === siblings.length - 1)
|
|
8687
|
+
return [];
|
|
8688
|
+
return siblings.slice(elemIndex + 1).filter(adapter.isTag);
|
|
8689
|
+
}
|
|
8690
|
+
function copyOptions(options) {
|
|
8691
|
+
// Not copied: context, rootFunc
|
|
8692
|
+
return {
|
|
8693
|
+
xmlMode: !!options.xmlMode,
|
|
8694
|
+
lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,
|
|
8695
|
+
lowerCaseTags: !!options.lowerCaseTags,
|
|
8696
|
+
quirksMode: !!options.quirksMode,
|
|
8697
|
+
cacheResults: !!options.cacheResults,
|
|
8698
|
+
pseudos: options.pseudos,
|
|
8699
|
+
adapter: options.adapter,
|
|
8700
|
+
equals: options.equals,
|
|
8701
|
+
};
|
|
8702
|
+
}
|
|
8703
|
+
const is = (next, token, options, context, compileToken) => {
|
|
8704
|
+
const func = compileToken(token, copyOptions(options), context);
|
|
8705
|
+
return func === boolbase.trueFunc
|
|
8706
|
+
? next
|
|
8707
|
+
: func === boolbase.falseFunc
|
|
8708
|
+
? boolbase.falseFunc
|
|
8709
|
+
: (elem) => func(elem) && next(elem);
|
|
8710
|
+
};
|
|
8711
|
+
/*
|
|
8712
|
+
* :not, :has, :is, :matches and :where have to compile selectors
|
|
8713
|
+
* doing this in src/pseudos.ts would lead to circular dependencies,
|
|
8714
|
+
* so we add them here
|
|
8715
|
+
*/
|
|
8716
|
+
const subselects = {
|
|
8717
|
+
is,
|
|
8718
|
+
/**
|
|
8719
|
+
* `:matches` and `:where` are aliases for `:is`.
|
|
8720
|
+
*/
|
|
8721
|
+
matches: is,
|
|
8722
|
+
where: is,
|
|
8723
|
+
not(next, token, options, context, compileToken) {
|
|
8724
|
+
const func = compileToken(token, copyOptions(options), context);
|
|
8725
|
+
return func === boolbase.falseFunc
|
|
8726
|
+
? next
|
|
8727
|
+
: func === boolbase.trueFunc
|
|
8728
|
+
? boolbase.falseFunc
|
|
8729
|
+
: (elem) => !func(elem) && next(elem);
|
|
8730
|
+
},
|
|
8731
|
+
has(next, subselect, options, _context, compileToken) {
|
|
8732
|
+
const { adapter } = options;
|
|
8733
|
+
const opts = copyOptions(options);
|
|
8734
|
+
opts.relativeSelector = true;
|
|
8735
|
+
const context = subselect.some((s) => s.some(isTraversal))
|
|
8736
|
+
? // Used as a placeholder. Will be replaced with the actual element.
|
|
8737
|
+
[PLACEHOLDER_ELEMENT]
|
|
8738
|
+
: undefined;
|
|
8739
|
+
const compiled = compileToken(subselect, opts, context);
|
|
8740
|
+
if (compiled === boolbase.falseFunc)
|
|
8741
|
+
return boolbase.falseFunc;
|
|
8742
|
+
const hasElement = ensureIsTag(compiled, adapter);
|
|
8743
|
+
// If `compiled` is `trueFunc`, we can skip this.
|
|
8744
|
+
if (context && compiled !== boolbase.trueFunc) {
|
|
8745
|
+
/*
|
|
8746
|
+
* `shouldTestNextSiblings` will only be true if the query starts with
|
|
8747
|
+
* a traversal (sibling or adjacent). That means we will always have a context.
|
|
8748
|
+
*/
|
|
8749
|
+
const { shouldTestNextSiblings = false } = compiled;
|
|
8750
|
+
return (elem) => {
|
|
8751
|
+
if (!next(elem))
|
|
8752
|
+
return false;
|
|
8753
|
+
context[0] = elem;
|
|
8754
|
+
const childs = adapter.getChildren(elem);
|
|
8755
|
+
const nextElements = shouldTestNextSiblings
|
|
8756
|
+
? [...childs, ...getNextSiblings(elem, adapter)]
|
|
8757
|
+
: childs;
|
|
8758
|
+
return adapter.existsOne(hasElement, nextElements);
|
|
8759
|
+
};
|
|
8760
|
+
}
|
|
8761
|
+
return (elem) => next(elem) &&
|
|
8762
|
+
adapter.existsOne(hasElement, adapter.getChildren(elem));
|
|
9133
8763
|
},
|
|
9134
|
-
hover: dynamicStatePseudo("isHovered"),
|
|
9135
|
-
visited: dynamicStatePseudo("isVisited"),
|
|
9136
|
-
active: dynamicStatePseudo("isActive"),
|
|
9137
8764
|
};
|
|
9138
|
-
|
|
9139
|
-
|
|
9140
|
-
|
|
9141
|
-
|
|
9142
|
-
|
|
9143
|
-
|
|
9144
|
-
|
|
9145
|
-
return function dynamicPseudo(next, _rule, { adapter }) {
|
|
9146
|
-
const func = adapter[name];
|
|
9147
|
-
if (typeof func !== "function") {
|
|
9148
|
-
return boolbase.falseFunc;
|
|
8765
|
+
|
|
8766
|
+
function compilePseudoSelector(next, selector, options, context, compileToken) {
|
|
8767
|
+
var _a;
|
|
8768
|
+
const { name, data } = selector;
|
|
8769
|
+
if (Array.isArray(data)) {
|
|
8770
|
+
if (!(name in subselects)) {
|
|
8771
|
+
throw new Error(`Unknown pseudo-class :${name}(${data})`);
|
|
9149
8772
|
}
|
|
9150
|
-
return
|
|
9151
|
-
|
|
9152
|
-
|
|
9153
|
-
|
|
8773
|
+
return subselects[name](next, data, options, context, compileToken);
|
|
8774
|
+
}
|
|
8775
|
+
const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];
|
|
8776
|
+
const stringPseudo = typeof userPseudo === "string" ? userPseudo : aliases[name];
|
|
8777
|
+
if (typeof stringPseudo === "string") {
|
|
8778
|
+
if (data != null) {
|
|
8779
|
+
throw new Error(`Pseudo ${name} doesn't have any arguments`);
|
|
8780
|
+
}
|
|
8781
|
+
// The alias has to be parsed here, to make sure options are respected.
|
|
8782
|
+
const alias = parse$1(stringPseudo);
|
|
8783
|
+
return subselects["is"](next, alias, options, context, compileToken);
|
|
8784
|
+
}
|
|
8785
|
+
if (typeof userPseudo === "function") {
|
|
8786
|
+
verifyPseudoArgs(userPseudo, name, data, 1);
|
|
8787
|
+
return (elem) => userPseudo(elem, data) && next(elem);
|
|
8788
|
+
}
|
|
8789
|
+
if (name in filters) {
|
|
8790
|
+
return filters[name](next, data, options, context);
|
|
8791
|
+
}
|
|
8792
|
+
if (name in pseudos) {
|
|
8793
|
+
const pseudo = pseudos[name];
|
|
8794
|
+
verifyPseudoArgs(pseudo, name, data, 2);
|
|
8795
|
+
return (elem) => pseudo(elem, options, data) && next(elem);
|
|
8796
|
+
}
|
|
8797
|
+
throw new Error(`Unknown pseudo-class :${name}`);
|
|
9154
8798
|
}
|
|
9155
8799
|
|
|
9156
|
-
|
|
9157
|
-
const
|
|
9158
|
-
|
|
9159
|
-
return
|
|
9160
|
-
|
|
9161
|
-
|
|
9162
|
-
|
|
9163
|
-
|
|
9164
|
-
|
|
9165
|
-
|
|
8800
|
+
function getElementParent(node, adapter) {
|
|
8801
|
+
const parent = adapter.getParent(node);
|
|
8802
|
+
if (parent && adapter.isTag(parent)) {
|
|
8803
|
+
return parent;
|
|
8804
|
+
}
|
|
8805
|
+
return null;
|
|
8806
|
+
}
|
|
8807
|
+
/*
|
|
8808
|
+
* All available rules
|
|
8809
|
+
*/
|
|
8810
|
+
function compileGeneralSelector(next, selector, options, context, compileToken) {
|
|
8811
|
+
const { adapter, equals } = options;
|
|
8812
|
+
switch (selector.type) {
|
|
8813
|
+
case SelectorType.PseudoElement: {
|
|
8814
|
+
throw new Error("Pseudo-elements are not supported by css-select");
|
|
9166
8815
|
}
|
|
9167
|
-
|
|
9168
|
-
|
|
9169
|
-
.find((elem) => adapter.isTag(elem));
|
|
9170
|
-
return firstChild != null && equals(elem, firstChild);
|
|
9171
|
-
},
|
|
9172
|
-
"last-child"(elem, { adapter, equals }) {
|
|
9173
|
-
const siblings = adapter.getSiblings(elem);
|
|
9174
|
-
for (let i = siblings.length - 1; i >= 0; i--) {
|
|
9175
|
-
if (equals(elem, siblings[i]))
|
|
9176
|
-
return true;
|
|
9177
|
-
if (adapter.isTag(siblings[i]))
|
|
9178
|
-
break;
|
|
8816
|
+
case SelectorType.ColumnCombinator: {
|
|
8817
|
+
throw new Error("Column combinators are not yet supported by css-select");
|
|
9179
8818
|
}
|
|
9180
|
-
|
|
9181
|
-
|
|
9182
|
-
|
|
9183
|
-
|
|
9184
|
-
|
|
9185
|
-
|
|
9186
|
-
const currentSibling = siblings[i];
|
|
9187
|
-
if (equals(elem, currentSibling))
|
|
9188
|
-
return true;
|
|
9189
|
-
if (adapter.isTag(currentSibling) &&
|
|
9190
|
-
adapter.getName(currentSibling) === elemName) {
|
|
9191
|
-
break;
|
|
8819
|
+
case SelectorType.Attribute: {
|
|
8820
|
+
if (selector.namespace != null) {
|
|
8821
|
+
throw new Error("Namespaced attributes are not yet supported by css-select");
|
|
8822
|
+
}
|
|
8823
|
+
if (!options.xmlMode || options.lowerCaseAttributeNames) {
|
|
8824
|
+
selector.name = selector.name.toLowerCase();
|
|
9192
8825
|
}
|
|
8826
|
+
return attributeRules[selector.action](next, selector, options);
|
|
9193
8827
|
}
|
|
9194
|
-
|
|
9195
|
-
|
|
9196
|
-
|
|
9197
|
-
|
|
9198
|
-
|
|
9199
|
-
|
|
9200
|
-
|
|
9201
|
-
if (equals(elem, currentSibling))
|
|
9202
|
-
return true;
|
|
9203
|
-
if (adapter.isTag(currentSibling) &&
|
|
9204
|
-
adapter.getName(currentSibling) === elemName) {
|
|
9205
|
-
break;
|
|
8828
|
+
case SelectorType.Pseudo: {
|
|
8829
|
+
return compilePseudoSelector(next, selector, options, context, compileToken);
|
|
8830
|
+
}
|
|
8831
|
+
// Tags
|
|
8832
|
+
case SelectorType.Tag: {
|
|
8833
|
+
if (selector.namespace != null) {
|
|
8834
|
+
throw new Error("Namespaced tag names are not yet supported by css-select");
|
|
9206
8835
|
}
|
|
8836
|
+
let { name } = selector;
|
|
8837
|
+
if (!options.xmlMode || options.lowerCaseTags) {
|
|
8838
|
+
name = name.toLowerCase();
|
|
8839
|
+
}
|
|
8840
|
+
return function tag(elem) {
|
|
8841
|
+
return adapter.getName(elem) === name && next(elem);
|
|
8842
|
+
};
|
|
9207
8843
|
}
|
|
9208
|
-
|
|
9209
|
-
|
|
9210
|
-
|
|
9211
|
-
|
|
9212
|
-
|
|
9213
|
-
|
|
9214
|
-
|
|
9215
|
-
|
|
9216
|
-
|
|
9217
|
-
|
|
9218
|
-
|
|
9219
|
-
|
|
9220
|
-
|
|
9221
|
-
|
|
9222
|
-
|
|
9223
|
-
|
|
9224
|
-
function
|
|
9225
|
-
|
|
9226
|
-
|
|
9227
|
-
|
|
8844
|
+
// Traversal
|
|
8845
|
+
case SelectorType.Descendant: {
|
|
8846
|
+
if (options.cacheResults === false ||
|
|
8847
|
+
typeof WeakSet === "undefined") {
|
|
8848
|
+
return function descendant(elem) {
|
|
8849
|
+
let current = elem;
|
|
8850
|
+
while ((current = getElementParent(current, adapter))) {
|
|
8851
|
+
if (next(current)) {
|
|
8852
|
+
return true;
|
|
8853
|
+
}
|
|
8854
|
+
}
|
|
8855
|
+
return false;
|
|
8856
|
+
};
|
|
8857
|
+
}
|
|
8858
|
+
// @ts-expect-error `ElementNode` is not extending object
|
|
8859
|
+
const isFalseCache = new WeakSet();
|
|
8860
|
+
return function cachedDescendant(elem) {
|
|
8861
|
+
let current = elem;
|
|
8862
|
+
while ((current = getElementParent(current, adapter))) {
|
|
8863
|
+
if (!isFalseCache.has(current)) {
|
|
8864
|
+
if (adapter.isTag(current) && next(current)) {
|
|
8865
|
+
return true;
|
|
8866
|
+
}
|
|
8867
|
+
isFalseCache.add(current);
|
|
8868
|
+
}
|
|
8869
|
+
}
|
|
8870
|
+
return false;
|
|
8871
|
+
};
|
|
8872
|
+
}
|
|
8873
|
+
case "_flexibleDescendant": {
|
|
8874
|
+
// Include element itself, only used while querying an array
|
|
8875
|
+
return function flexibleDescendant(elem) {
|
|
8876
|
+
let current = elem;
|
|
8877
|
+
do {
|
|
8878
|
+
if (next(current))
|
|
8879
|
+
return true;
|
|
8880
|
+
} while ((current = getElementParent(current, adapter)));
|
|
8881
|
+
return false;
|
|
8882
|
+
};
|
|
8883
|
+
}
|
|
8884
|
+
case SelectorType.Parent: {
|
|
8885
|
+
return function parent(elem) {
|
|
8886
|
+
return adapter
|
|
8887
|
+
.getChildren(elem)
|
|
8888
|
+
.some((elem) => adapter.isTag(elem) && next(elem));
|
|
8889
|
+
};
|
|
8890
|
+
}
|
|
8891
|
+
case SelectorType.Child: {
|
|
8892
|
+
return function child(elem) {
|
|
8893
|
+
const parent = adapter.getParent(elem);
|
|
8894
|
+
return parent != null && adapter.isTag(parent) && next(parent);
|
|
8895
|
+
};
|
|
8896
|
+
}
|
|
8897
|
+
case SelectorType.Sibling: {
|
|
8898
|
+
return function sibling(elem) {
|
|
8899
|
+
const siblings = adapter.getSiblings(elem);
|
|
8900
|
+
for (let i = 0; i < siblings.length; i++) {
|
|
8901
|
+
const currentSibling = siblings[i];
|
|
8902
|
+
if (equals(elem, currentSibling))
|
|
8903
|
+
break;
|
|
8904
|
+
if (adapter.isTag(currentSibling) && next(currentSibling)) {
|
|
8905
|
+
return true;
|
|
8906
|
+
}
|
|
8907
|
+
}
|
|
8908
|
+
return false;
|
|
8909
|
+
};
|
|
8910
|
+
}
|
|
8911
|
+
case SelectorType.Adjacent: {
|
|
8912
|
+
if (adapter.prevElementSibling) {
|
|
8913
|
+
return function adjacent(elem) {
|
|
8914
|
+
const previous = adapter.prevElementSibling(elem);
|
|
8915
|
+
return previous != null && next(previous);
|
|
8916
|
+
};
|
|
8917
|
+
}
|
|
8918
|
+
return function adjacent(elem) {
|
|
8919
|
+
const siblings = adapter.getSiblings(elem);
|
|
8920
|
+
let lastElement;
|
|
8921
|
+
for (let i = 0; i < siblings.length; i++) {
|
|
8922
|
+
const currentSibling = siblings[i];
|
|
8923
|
+
if (equals(elem, currentSibling))
|
|
8924
|
+
break;
|
|
8925
|
+
if (adapter.isTag(currentSibling)) {
|
|
8926
|
+
lastElement = currentSibling;
|
|
8927
|
+
}
|
|
8928
|
+
}
|
|
8929
|
+
return !!lastElement && next(lastElement);
|
|
8930
|
+
};
|
|
8931
|
+
}
|
|
8932
|
+
case SelectorType.Universal: {
|
|
8933
|
+
if (selector.namespace != null && selector.namespace !== "*") {
|
|
8934
|
+
throw new Error("Namespaced universal selectors are not yet supported by css-select");
|
|
8935
|
+
}
|
|
8936
|
+
return next;
|
|
9228
8937
|
}
|
|
9229
8938
|
}
|
|
9230
|
-
else if (func.length === argIndex) {
|
|
9231
|
-
throw new Error(`Pseudo-class :${name} doesn't have any arguments`);
|
|
9232
|
-
}
|
|
9233
8939
|
}
|
|
9234
8940
|
|
|
9235
|
-
|
|
9236
|
-
|
|
9237
|
-
|
|
9238
|
-
const aliases = {
|
|
9239
|
-
// Links
|
|
9240
|
-
"any-link": ":is(a, area, link)[href]",
|
|
9241
|
-
link: ":any-link:not(:visited)",
|
|
9242
|
-
// Forms
|
|
9243
|
-
// https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements
|
|
9244
|
-
disabled: `:is(
|
|
9245
|
-
:is(button, input, select, textarea, optgroup, option)[disabled],
|
|
9246
|
-
optgroup[disabled] > option,
|
|
9247
|
-
fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)
|
|
9248
|
-
)`,
|
|
9249
|
-
enabled: ":not(:disabled)",
|
|
9250
|
-
checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",
|
|
9251
|
-
required: ":is(input, select, textarea)[required]",
|
|
9252
|
-
optional: ":is(input, select, textarea):not([required])",
|
|
9253
|
-
// JQuery extensions
|
|
9254
|
-
// https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness
|
|
9255
|
-
selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",
|
|
9256
|
-
checkbox: "[type=checkbox]",
|
|
9257
|
-
file: "[type=file]",
|
|
9258
|
-
password: "[type=password]",
|
|
9259
|
-
radio: "[type=radio]",
|
|
9260
|
-
reset: "[type=reset]",
|
|
9261
|
-
image: "[type=image]",
|
|
9262
|
-
submit: "[type=submit]",
|
|
9263
|
-
parent: ":not(:empty)",
|
|
9264
|
-
header: ":is(h1, h2, h3, h4, h5, h6)",
|
|
9265
|
-
button: ":is(button, input[type=button])",
|
|
9266
|
-
input: ":is(input, textarea, select, button)",
|
|
9267
|
-
text: "input:is(:not([type!='']), [type=text])",
|
|
9268
|
-
};
|
|
9269
|
-
|
|
9270
|
-
/** Used as a placeholder for :has. Will be replaced with the actual element. */
|
|
9271
|
-
const PLACEHOLDER_ELEMENT = {};
|
|
9272
|
-
function ensureIsTag(next, adapter) {
|
|
9273
|
-
if (next === boolbase.falseFunc)
|
|
9274
|
-
return boolbase.falseFunc;
|
|
9275
|
-
return (elem) => adapter.isTag(elem) && next(elem);
|
|
9276
|
-
}
|
|
9277
|
-
function getNextSiblings(elem, adapter) {
|
|
9278
|
-
const siblings = adapter.getSiblings(elem);
|
|
9279
|
-
if (siblings.length <= 1)
|
|
9280
|
-
return [];
|
|
9281
|
-
const elemIndex = siblings.indexOf(elem);
|
|
9282
|
-
if (elemIndex < 0 || elemIndex === siblings.length - 1)
|
|
9283
|
-
return [];
|
|
9284
|
-
return siblings.slice(elemIndex + 1).filter(adapter.isTag);
|
|
8941
|
+
function compileUnsafe(selector, options, context) {
|
|
8942
|
+
const token = typeof selector === "string" ? parse$1(selector) : selector;
|
|
8943
|
+
return compileToken(token, options, context);
|
|
9285
8944
|
}
|
|
9286
|
-
function
|
|
9287
|
-
|
|
9288
|
-
|
|
9289
|
-
|
|
9290
|
-
|
|
9291
|
-
lowerCaseTags: !!options.lowerCaseTags,
|
|
9292
|
-
quirksMode: !!options.quirksMode,
|
|
9293
|
-
cacheResults: !!options.cacheResults,
|
|
9294
|
-
pseudos: options.pseudos,
|
|
9295
|
-
adapter: options.adapter,
|
|
9296
|
-
equals: options.equals,
|
|
9297
|
-
};
|
|
8945
|
+
function includesScopePseudo(t) {
|
|
8946
|
+
return (t.type === SelectorType.Pseudo &&
|
|
8947
|
+
(t.name === "scope" ||
|
|
8948
|
+
(Array.isArray(t.data) &&
|
|
8949
|
+
t.data.some((data) => data.some(includesScopePseudo)))));
|
|
9298
8950
|
}
|
|
9299
|
-
const
|
|
9300
|
-
|
|
9301
|
-
|
|
9302
|
-
|
|
9303
|
-
|
|
9304
|
-
|
|
9305
|
-
|
|
8951
|
+
const DESCENDANT_TOKEN = { type: SelectorType.Descendant };
|
|
8952
|
+
const FLEXIBLE_DESCENDANT_TOKEN = {
|
|
8953
|
+
type: "_flexibleDescendant",
|
|
8954
|
+
};
|
|
8955
|
+
const SCOPE_TOKEN = {
|
|
8956
|
+
type: SelectorType.Pseudo,
|
|
8957
|
+
name: "scope",
|
|
8958
|
+
data: null,
|
|
9306
8959
|
};
|
|
9307
8960
|
/*
|
|
9308
|
-
*
|
|
9309
|
-
*
|
|
9310
|
-
* so we add them here
|
|
8961
|
+
* CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector
|
|
8962
|
+
* http://www.w3.org/TR/selectors4/#absolutizing
|
|
9311
8963
|
*/
|
|
9312
|
-
|
|
9313
|
-
is
|
|
9314
|
-
|
|
9315
|
-
|
|
9316
|
-
|
|
9317
|
-
|
|
9318
|
-
|
|
9319
|
-
|
|
9320
|
-
|
|
9321
|
-
|
|
9322
|
-
|
|
9323
|
-
|
|
9324
|
-
? boolbase.falseFunc
|
|
9325
|
-
: (elem) => !func(elem) && next(elem);
|
|
9326
|
-
},
|
|
9327
|
-
has(next, subselect, options, _context, compileToken) {
|
|
9328
|
-
const { adapter } = options;
|
|
9329
|
-
const opts = copyOptions(options);
|
|
9330
|
-
opts.relativeSelector = true;
|
|
9331
|
-
const context = subselect.some((s) => s.some(isTraversal))
|
|
9332
|
-
? // Used as a placeholder. Will be replaced with the actual element.
|
|
9333
|
-
[PLACEHOLDER_ELEMENT]
|
|
9334
|
-
: undefined;
|
|
9335
|
-
const compiled = compileToken(subselect, opts, context);
|
|
9336
|
-
if (compiled === boolbase.falseFunc)
|
|
9337
|
-
return boolbase.falseFunc;
|
|
9338
|
-
const hasElement = ensureIsTag(compiled, adapter);
|
|
9339
|
-
// If `compiled` is `trueFunc`, we can skip this.
|
|
9340
|
-
if (context && compiled !== boolbase.trueFunc) {
|
|
9341
|
-
/*
|
|
9342
|
-
* `shouldTestNextSiblings` will only be true if the query starts with
|
|
9343
|
-
* a traversal (sibling or adjacent). That means we will always have a context.
|
|
9344
|
-
*/
|
|
9345
|
-
const { shouldTestNextSiblings = false } = compiled;
|
|
9346
|
-
return (elem) => {
|
|
9347
|
-
if (!next(elem))
|
|
9348
|
-
return false;
|
|
9349
|
-
context[0] = elem;
|
|
9350
|
-
const childs = adapter.getChildren(elem);
|
|
9351
|
-
const nextElements = shouldTestNextSiblings
|
|
9352
|
-
? [...childs, ...getNextSiblings(elem, adapter)]
|
|
9353
|
-
: childs;
|
|
9354
|
-
return adapter.existsOne(hasElement, nextElements);
|
|
9355
|
-
};
|
|
8964
|
+
function absolutize(token, { adapter }, context) {
|
|
8965
|
+
// TODO Use better check if the context is a document
|
|
8966
|
+
const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {
|
|
8967
|
+
const parent = adapter.isTag(e) && adapter.getParent(e);
|
|
8968
|
+
return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));
|
|
8969
|
+
}));
|
|
8970
|
+
for (const t of token) {
|
|
8971
|
+
if (t.length > 0 &&
|
|
8972
|
+
isTraversal(t[0]) &&
|
|
8973
|
+
t[0].type !== SelectorType.Descendant) ;
|
|
8974
|
+
else if (hasContext && !t.some(includesScopePseudo)) {
|
|
8975
|
+
t.unshift(DESCENDANT_TOKEN);
|
|
9356
8976
|
}
|
|
9357
|
-
|
|
9358
|
-
|
|
9359
|
-
|
|
9360
|
-
|
|
9361
|
-
|
|
9362
|
-
|
|
8977
|
+
else {
|
|
8978
|
+
continue;
|
|
8979
|
+
}
|
|
8980
|
+
t.unshift(SCOPE_TOKEN);
|
|
8981
|
+
}
|
|
8982
|
+
}
|
|
8983
|
+
function compileToken(token, options, context) {
|
|
9363
8984
|
var _a;
|
|
9364
|
-
|
|
9365
|
-
|
|
9366
|
-
|
|
9367
|
-
|
|
8985
|
+
token.forEach(sortByProcedure);
|
|
8986
|
+
context = (_a = options.context) !== null && _a !== void 0 ? _a : context;
|
|
8987
|
+
const isArrayContext = Array.isArray(context);
|
|
8988
|
+
const finalContext = context && (Array.isArray(context) ? context : [context]);
|
|
8989
|
+
// Check if the selector is relative
|
|
8990
|
+
if (options.relativeSelector !== false) {
|
|
8991
|
+
absolutize(token, options, finalContext);
|
|
8992
|
+
}
|
|
8993
|
+
else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {
|
|
8994
|
+
throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");
|
|
8995
|
+
}
|
|
8996
|
+
let shouldTestNextSiblings = false;
|
|
8997
|
+
const query = token
|
|
8998
|
+
.map((rules) => {
|
|
8999
|
+
if (rules.length >= 2) {
|
|
9000
|
+
const [first, second] = rules;
|
|
9001
|
+
if (first.type !== SelectorType.Pseudo ||
|
|
9002
|
+
first.name !== "scope") ;
|
|
9003
|
+
else if (isArrayContext &&
|
|
9004
|
+
second.type === SelectorType.Descendant) {
|
|
9005
|
+
rules[1] = FLEXIBLE_DESCENDANT_TOKEN;
|
|
9006
|
+
}
|
|
9007
|
+
else if (second.type === SelectorType.Adjacent ||
|
|
9008
|
+
second.type === SelectorType.Sibling) {
|
|
9009
|
+
shouldTestNextSiblings = true;
|
|
9010
|
+
}
|
|
9368
9011
|
}
|
|
9369
|
-
return
|
|
9012
|
+
return compileRules(rules, options, finalContext);
|
|
9013
|
+
})
|
|
9014
|
+
.reduce(reduceRules, boolbase.falseFunc);
|
|
9015
|
+
query.shouldTestNextSiblings = shouldTestNextSiblings;
|
|
9016
|
+
return query;
|
|
9017
|
+
}
|
|
9018
|
+
function compileRules(rules, options, context) {
|
|
9019
|
+
var _a;
|
|
9020
|
+
return rules.reduce((previous, rule) => previous === boolbase.falseFunc
|
|
9021
|
+
? boolbase.falseFunc
|
|
9022
|
+
: compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);
|
|
9023
|
+
}
|
|
9024
|
+
function reduceRules(a, b) {
|
|
9025
|
+
if (b === boolbase.falseFunc || a === boolbase.trueFunc) {
|
|
9026
|
+
return a;
|
|
9370
9027
|
}
|
|
9371
|
-
|
|
9372
|
-
|
|
9373
|
-
|
|
9374
|
-
|
|
9375
|
-
|
|
9028
|
+
if (a === boolbase.falseFunc || b === boolbase.trueFunc) {
|
|
9029
|
+
return b;
|
|
9030
|
+
}
|
|
9031
|
+
return function combine(elem) {
|
|
9032
|
+
return a(elem) || b(elem);
|
|
9033
|
+
};
|
|
9034
|
+
}
|
|
9035
|
+
|
|
9036
|
+
const defaultEquals = (a, b) => a === b;
|
|
9037
|
+
const defaultOptions = {
|
|
9038
|
+
adapter: DomUtils,
|
|
9039
|
+
equals: defaultEquals,
|
|
9040
|
+
};
|
|
9041
|
+
function convertOptionFormats(options) {
|
|
9042
|
+
var _a, _b, _c, _d;
|
|
9043
|
+
/*
|
|
9044
|
+
* We force one format of options to the other one.
|
|
9045
|
+
*/
|
|
9046
|
+
// @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.
|
|
9047
|
+
const opts = options !== null && options !== void 0 ? options : defaultOptions;
|
|
9048
|
+
// @ts-expect-error Same as above.
|
|
9049
|
+
(_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);
|
|
9050
|
+
// @ts-expect-error `equals` does not exist on `Options`
|
|
9051
|
+
(_b = opts.equals) !== null && _b !== void 0 ? _b : (opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals);
|
|
9052
|
+
return opts;
|
|
9053
|
+
}
|
|
9054
|
+
function getSelectorFunc(searchFunc) {
|
|
9055
|
+
return function select(query, elements, options) {
|
|
9056
|
+
const opts = convertOptionFormats(options);
|
|
9057
|
+
if (typeof query !== "function") {
|
|
9058
|
+
query = compileUnsafe(query, opts, elements);
|
|
9376
9059
|
}
|
|
9377
|
-
|
|
9378
|
-
|
|
9379
|
-
|
|
9060
|
+
const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);
|
|
9061
|
+
return searchFunc(query, filteredElements, opts);
|
|
9062
|
+
};
|
|
9063
|
+
}
|
|
9064
|
+
function prepareContext(elems, adapter, shouldTestNextSiblings = false) {
|
|
9065
|
+
/*
|
|
9066
|
+
* Add siblings if the query requires them.
|
|
9067
|
+
* See https://github.com/fb55/css-select/pull/43#issuecomment-225414692
|
|
9068
|
+
*/
|
|
9069
|
+
if (shouldTestNextSiblings) {
|
|
9070
|
+
elems = appendNextSiblings(elems, adapter);
|
|
9380
9071
|
}
|
|
9381
|
-
|
|
9382
|
-
|
|
9383
|
-
|
|
9072
|
+
return Array.isArray(elems)
|
|
9073
|
+
? adapter.removeSubsets(elems)
|
|
9074
|
+
: adapter.getChildren(elems);
|
|
9075
|
+
}
|
|
9076
|
+
function appendNextSiblings(elem, adapter) {
|
|
9077
|
+
// Order matters because jQuery seems to check the children before the siblings
|
|
9078
|
+
const elems = Array.isArray(elem) ? elem.slice(0) : [elem];
|
|
9079
|
+
const elemsLength = elems.length;
|
|
9080
|
+
for (let i = 0; i < elemsLength; i++) {
|
|
9081
|
+
const nextSiblings = getNextSiblings(elems[i], adapter);
|
|
9082
|
+
elems.push(...nextSiblings);
|
|
9384
9083
|
}
|
|
9385
|
-
|
|
9386
|
-
|
|
9084
|
+
return elems;
|
|
9085
|
+
}
|
|
9086
|
+
/**
|
|
9087
|
+
* @template Node The generic Node type for the DOM adapter being used.
|
|
9088
|
+
* @template ElementNode The Node type for elements for the DOM adapter being used.
|
|
9089
|
+
* @param elems Elements to query. If it is an element, its children will be queried..
|
|
9090
|
+
* @param query can be either a CSS selector string or a compiled query function.
|
|
9091
|
+
* @param [options] options for querying the document.
|
|
9092
|
+
* @see compile for supported selector queries.
|
|
9093
|
+
* @returns All matching elements.
|
|
9094
|
+
*
|
|
9095
|
+
*/
|
|
9096
|
+
const selectAll = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0
|
|
9097
|
+
? []
|
|
9098
|
+
: options.adapter.findAll(query, elems));
|
|
9099
|
+
/**
|
|
9100
|
+
* @template Node The generic Node type for the DOM adapter being used.
|
|
9101
|
+
* @template ElementNode The Node type for elements for the DOM adapter being used.
|
|
9102
|
+
* @param elems Elements to query. If it is an element, its children will be queried..
|
|
9103
|
+
* @param query can be either a CSS selector string or a compiled query function.
|
|
9104
|
+
* @param [options] options for querying the document.
|
|
9105
|
+
* @see compile for supported selector queries.
|
|
9106
|
+
* @returns the first match, or null if there was no match.
|
|
9107
|
+
*/
|
|
9108
|
+
const selectOne = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0
|
|
9109
|
+
? null
|
|
9110
|
+
: options.adapter.findOne(query, elems));
|
|
9111
|
+
|
|
9112
|
+
// Generated using scripts/write-decode-map.ts
|
|
9113
|
+
const htmlDecodeTree = /* #__PURE__ */ new Uint16Array(
|
|
9114
|
+
// prettier-ignore
|
|
9115
|
+
/* #__PURE__ */ "\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
|
|
9116
|
+
.split("")
|
|
9117
|
+
.map((c) => c.charCodeAt(0)));
|
|
9118
|
+
|
|
9119
|
+
// Generated using scripts/write-decode-map.ts
|
|
9120
|
+
const xmlDecodeTree = /* #__PURE__ */ new Uint16Array(
|
|
9121
|
+
// prettier-ignore
|
|
9122
|
+
/* #__PURE__ */ "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
9123
|
+
.split("")
|
|
9124
|
+
.map((c) => c.charCodeAt(0)));
|
|
9125
|
+
|
|
9126
|
+
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
9127
|
+
var _a;
|
|
9128
|
+
const decodeMap = new Map([
|
|
9129
|
+
[0, 65533],
|
|
9130
|
+
// C1 Unicode control character reference replacements
|
|
9131
|
+
[128, 8364],
|
|
9132
|
+
[130, 8218],
|
|
9133
|
+
[131, 402],
|
|
9134
|
+
[132, 8222],
|
|
9135
|
+
[133, 8230],
|
|
9136
|
+
[134, 8224],
|
|
9137
|
+
[135, 8225],
|
|
9138
|
+
[136, 710],
|
|
9139
|
+
[137, 8240],
|
|
9140
|
+
[138, 352],
|
|
9141
|
+
[139, 8249],
|
|
9142
|
+
[140, 338],
|
|
9143
|
+
[142, 381],
|
|
9144
|
+
[145, 8216],
|
|
9145
|
+
[146, 8217],
|
|
9146
|
+
[147, 8220],
|
|
9147
|
+
[148, 8221],
|
|
9148
|
+
[149, 8226],
|
|
9149
|
+
[150, 8211],
|
|
9150
|
+
[151, 8212],
|
|
9151
|
+
[152, 732],
|
|
9152
|
+
[153, 8482],
|
|
9153
|
+
[154, 353],
|
|
9154
|
+
[155, 8250],
|
|
9155
|
+
[156, 339],
|
|
9156
|
+
[158, 382],
|
|
9157
|
+
[159, 376],
|
|
9158
|
+
]);
|
|
9159
|
+
/**
|
|
9160
|
+
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
9161
|
+
*/
|
|
9162
|
+
const fromCodePoint =
|
|
9163
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
9164
|
+
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {
|
|
9165
|
+
let output = "";
|
|
9166
|
+
if (codePoint > 65535) {
|
|
9167
|
+
codePoint -= 65536;
|
|
9168
|
+
output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
|
|
9169
|
+
codePoint = 56320 | (codePoint & 1023);
|
|
9387
9170
|
}
|
|
9388
|
-
|
|
9389
|
-
|
|
9390
|
-
|
|
9391
|
-
|
|
9171
|
+
output += String.fromCharCode(codePoint);
|
|
9172
|
+
return output;
|
|
9173
|
+
};
|
|
9174
|
+
/**
|
|
9175
|
+
* Replace the given code point with a replacement character if it is a
|
|
9176
|
+
* surrogate or is outside the valid range. Otherwise return the code
|
|
9177
|
+
* point unchanged.
|
|
9178
|
+
*/
|
|
9179
|
+
function replaceCodePoint(codePoint) {
|
|
9180
|
+
var _a;
|
|
9181
|
+
if ((codePoint >= 55296 && codePoint <= 57343) ||
|
|
9182
|
+
codePoint > 1114111) {
|
|
9183
|
+
return 65533;
|
|
9392
9184
|
}
|
|
9393
|
-
|
|
9185
|
+
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
9394
9186
|
}
|
|
9395
9187
|
|
|
9396
|
-
|
|
9397
|
-
|
|
9398
|
-
|
|
9399
|
-
|
|
9400
|
-
|
|
9401
|
-
|
|
9188
|
+
var CharCodes$1;
|
|
9189
|
+
(function (CharCodes) {
|
|
9190
|
+
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
9191
|
+
CharCodes[CharCodes["SEMI"] = 59] = "SEMI";
|
|
9192
|
+
CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS";
|
|
9193
|
+
CharCodes[CharCodes["ZERO"] = 48] = "ZERO";
|
|
9194
|
+
CharCodes[CharCodes["NINE"] = 57] = "NINE";
|
|
9195
|
+
CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A";
|
|
9196
|
+
CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F";
|
|
9197
|
+
CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X";
|
|
9198
|
+
CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z";
|
|
9199
|
+
CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A";
|
|
9200
|
+
CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F";
|
|
9201
|
+
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
9202
|
+
})(CharCodes$1 || (CharCodes$1 = {}));
|
|
9203
|
+
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
9204
|
+
const TO_LOWER_BIT = 32;
|
|
9205
|
+
var BinTrieFlags;
|
|
9206
|
+
(function (BinTrieFlags) {
|
|
9207
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
9208
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
9209
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
9210
|
+
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
9211
|
+
function isNumber(code) {
|
|
9212
|
+
return code >= CharCodes$1.ZERO && code <= CharCodes$1.NINE;
|
|
9402
9213
|
}
|
|
9403
|
-
|
|
9404
|
-
|
|
9214
|
+
function isHexadecimalCharacter(code) {
|
|
9215
|
+
return ((code >= CharCodes$1.UPPER_A && code <= CharCodes$1.UPPER_F) ||
|
|
9216
|
+
(code >= CharCodes$1.LOWER_A && code <= CharCodes$1.LOWER_F));
|
|
9217
|
+
}
|
|
9218
|
+
function isAsciiAlphaNumeric(code) {
|
|
9219
|
+
return ((code >= CharCodes$1.UPPER_A && code <= CharCodes$1.UPPER_Z) ||
|
|
9220
|
+
(code >= CharCodes$1.LOWER_A && code <= CharCodes$1.LOWER_Z) ||
|
|
9221
|
+
isNumber(code));
|
|
9222
|
+
}
|
|
9223
|
+
/**
|
|
9224
|
+
* Checks if the given character is a valid end character for an entity in an attribute.
|
|
9225
|
+
*
|
|
9226
|
+
* Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
|
|
9227
|
+
* See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
|
|
9405
9228
|
*/
|
|
9406
|
-
function
|
|
9407
|
-
|
|
9408
|
-
|
|
9409
|
-
|
|
9410
|
-
|
|
9411
|
-
|
|
9412
|
-
|
|
9413
|
-
|
|
9414
|
-
|
|
9415
|
-
|
|
9416
|
-
|
|
9417
|
-
|
|
9229
|
+
function isEntityInAttributeInvalidEnd(code) {
|
|
9230
|
+
return code === CharCodes$1.EQUALS || isAsciiAlphaNumeric(code);
|
|
9231
|
+
}
|
|
9232
|
+
var EntityDecoderState;
|
|
9233
|
+
(function (EntityDecoderState) {
|
|
9234
|
+
EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart";
|
|
9235
|
+
EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart";
|
|
9236
|
+
EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal";
|
|
9237
|
+
EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex";
|
|
9238
|
+
EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity";
|
|
9239
|
+
})(EntityDecoderState || (EntityDecoderState = {}));
|
|
9240
|
+
var DecodingMode;
|
|
9241
|
+
(function (DecodingMode) {
|
|
9242
|
+
/** Entities in text nodes that can end with any character. */
|
|
9243
|
+
DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy";
|
|
9244
|
+
/** Only allow entities terminated with a semicolon. */
|
|
9245
|
+
DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
|
|
9246
|
+
/** Entities in attributes have limitations on ending characters. */
|
|
9247
|
+
DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
|
|
9248
|
+
})(DecodingMode || (DecodingMode = {}));
|
|
9249
|
+
/**
|
|
9250
|
+
* Token decoder with support of writing partial entities.
|
|
9251
|
+
*/
|
|
9252
|
+
class EntityDecoder {
|
|
9253
|
+
constructor(
|
|
9254
|
+
/** The tree used to decode entities. */
|
|
9255
|
+
decodeTree,
|
|
9256
|
+
/**
|
|
9257
|
+
* The function that is called when a codepoint is decoded.
|
|
9258
|
+
*
|
|
9259
|
+
* For multi-byte named entities, this will be called multiple times,
|
|
9260
|
+
* with the second codepoint, and the same `consumed` value.
|
|
9261
|
+
*
|
|
9262
|
+
* @param codepoint The decoded codepoint.
|
|
9263
|
+
* @param consumed The number of bytes consumed by the decoder.
|
|
9264
|
+
*/
|
|
9265
|
+
emitCodePoint,
|
|
9266
|
+
/** An object that is used to produce errors. */
|
|
9267
|
+
errors) {
|
|
9268
|
+
this.decodeTree = decodeTree;
|
|
9269
|
+
this.emitCodePoint = emitCodePoint;
|
|
9270
|
+
this.errors = errors;
|
|
9271
|
+
/** The current state of the decoder. */
|
|
9272
|
+
this.state = EntityDecoderState.EntityStart;
|
|
9273
|
+
/** Characters that were consumed while parsing an entity. */
|
|
9274
|
+
this.consumed = 1;
|
|
9275
|
+
/**
|
|
9276
|
+
* The result of the entity.
|
|
9277
|
+
*
|
|
9278
|
+
* Either the result index of a numeric entity, or the codepoint of a
|
|
9279
|
+
* numeric entity.
|
|
9280
|
+
*/
|
|
9281
|
+
this.result = 0;
|
|
9282
|
+
/** The current index in the decode tree. */
|
|
9283
|
+
this.treeIndex = 0;
|
|
9284
|
+
/** The number of characters that were consumed in excess. */
|
|
9285
|
+
this.excess = 1;
|
|
9286
|
+
/** The mode in which the decoder is operating. */
|
|
9287
|
+
this.decodeMode = DecodingMode.Strict;
|
|
9288
|
+
}
|
|
9289
|
+
/** Resets the instance to make it reusable. */
|
|
9290
|
+
startEntity(decodeMode) {
|
|
9291
|
+
this.decodeMode = decodeMode;
|
|
9292
|
+
this.state = EntityDecoderState.EntityStart;
|
|
9293
|
+
this.result = 0;
|
|
9294
|
+
this.treeIndex = 0;
|
|
9295
|
+
this.excess = 1;
|
|
9296
|
+
this.consumed = 1;
|
|
9297
|
+
}
|
|
9298
|
+
/**
|
|
9299
|
+
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
9300
|
+
* If the entity is incomplete, the decoder will return -1.
|
|
9301
|
+
*
|
|
9302
|
+
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
9303
|
+
* entity is incomplete, and resume when the next string is written.
|
|
9304
|
+
*
|
|
9305
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
9306
|
+
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
9307
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9308
|
+
*/
|
|
9309
|
+
write(input, offset) {
|
|
9310
|
+
switch (this.state) {
|
|
9311
|
+
case EntityDecoderState.EntityStart: {
|
|
9312
|
+
if (input.charCodeAt(offset) === CharCodes$1.NUM) {
|
|
9313
|
+
this.state = EntityDecoderState.NumericStart;
|
|
9314
|
+
this.consumed += 1;
|
|
9315
|
+
return this.stateNumericStart(input, offset + 1);
|
|
9316
|
+
}
|
|
9317
|
+
this.state = EntityDecoderState.NamedEntity;
|
|
9318
|
+
return this.stateNamedEntity(input, offset);
|
|
9418
9319
|
}
|
|
9419
|
-
|
|
9420
|
-
|
|
9320
|
+
case EntityDecoderState.NumericStart: {
|
|
9321
|
+
return this.stateNumericStart(input, offset);
|
|
9421
9322
|
}
|
|
9422
|
-
|
|
9423
|
-
|
|
9424
|
-
case SelectorType.Pseudo: {
|
|
9425
|
-
return compilePseudoSelector(next, selector, options, context, compileToken);
|
|
9426
|
-
}
|
|
9427
|
-
// Tags
|
|
9428
|
-
case SelectorType.Tag: {
|
|
9429
|
-
if (selector.namespace != null) {
|
|
9430
|
-
throw new Error("Namespaced tag names are not yet supported by css-select");
|
|
9323
|
+
case EntityDecoderState.NumericDecimal: {
|
|
9324
|
+
return this.stateNumericDecimal(input, offset);
|
|
9431
9325
|
}
|
|
9432
|
-
|
|
9433
|
-
|
|
9434
|
-
name = name.toLowerCase();
|
|
9326
|
+
case EntityDecoderState.NumericHex: {
|
|
9327
|
+
return this.stateNumericHex(input, offset);
|
|
9435
9328
|
}
|
|
9436
|
-
|
|
9437
|
-
return
|
|
9438
|
-
};
|
|
9439
|
-
}
|
|
9440
|
-
// Traversal
|
|
9441
|
-
case SelectorType.Descendant: {
|
|
9442
|
-
if (options.cacheResults === false ||
|
|
9443
|
-
typeof WeakSet === "undefined") {
|
|
9444
|
-
return function descendant(elem) {
|
|
9445
|
-
let current = elem;
|
|
9446
|
-
while ((current = getElementParent(current, adapter))) {
|
|
9447
|
-
if (next(current)) {
|
|
9448
|
-
return true;
|
|
9449
|
-
}
|
|
9450
|
-
}
|
|
9451
|
-
return false;
|
|
9452
|
-
};
|
|
9329
|
+
case EntityDecoderState.NamedEntity: {
|
|
9330
|
+
return this.stateNamedEntity(input, offset);
|
|
9453
9331
|
}
|
|
9454
|
-
// @ts-expect-error `ElementNode` is not extending object
|
|
9455
|
-
const isFalseCache = new WeakSet();
|
|
9456
|
-
return function cachedDescendant(elem) {
|
|
9457
|
-
let current = elem;
|
|
9458
|
-
while ((current = getElementParent(current, adapter))) {
|
|
9459
|
-
if (!isFalseCache.has(current)) {
|
|
9460
|
-
if (adapter.isTag(current) && next(current)) {
|
|
9461
|
-
return true;
|
|
9462
|
-
}
|
|
9463
|
-
isFalseCache.add(current);
|
|
9464
|
-
}
|
|
9465
|
-
}
|
|
9466
|
-
return false;
|
|
9467
|
-
};
|
|
9468
|
-
}
|
|
9469
|
-
case "_flexibleDescendant": {
|
|
9470
|
-
// Include element itself, only used while querying an array
|
|
9471
|
-
return function flexibleDescendant(elem) {
|
|
9472
|
-
let current = elem;
|
|
9473
|
-
do {
|
|
9474
|
-
if (next(current))
|
|
9475
|
-
return true;
|
|
9476
|
-
} while ((current = getElementParent(current, adapter)));
|
|
9477
|
-
return false;
|
|
9478
|
-
};
|
|
9479
9332
|
}
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
|
|
9483
|
-
|
|
9484
|
-
|
|
9485
|
-
|
|
9333
|
+
}
|
|
9334
|
+
/**
|
|
9335
|
+
* Switches between the numeric decimal and hexadecimal states.
|
|
9336
|
+
*
|
|
9337
|
+
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
9338
|
+
*
|
|
9339
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
9340
|
+
* @param offset The current offset.
|
|
9341
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9342
|
+
*/
|
|
9343
|
+
stateNumericStart(input, offset) {
|
|
9344
|
+
if (offset >= input.length) {
|
|
9345
|
+
return -1;
|
|
9486
9346
|
}
|
|
9487
|
-
|
|
9488
|
-
|
|
9489
|
-
|
|
9490
|
-
|
|
9491
|
-
};
|
|
9347
|
+
if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes$1.LOWER_X) {
|
|
9348
|
+
this.state = EntityDecoderState.NumericHex;
|
|
9349
|
+
this.consumed += 1;
|
|
9350
|
+
return this.stateNumericHex(input, offset + 1);
|
|
9492
9351
|
}
|
|
9493
|
-
|
|
9494
|
-
|
|
9495
|
-
|
|
9496
|
-
|
|
9497
|
-
|
|
9498
|
-
|
|
9499
|
-
|
|
9500
|
-
|
|
9501
|
-
|
|
9502
|
-
|
|
9503
|
-
}
|
|
9504
|
-
return false;
|
|
9505
|
-
};
|
|
9352
|
+
this.state = EntityDecoderState.NumericDecimal;
|
|
9353
|
+
return this.stateNumericDecimal(input, offset);
|
|
9354
|
+
}
|
|
9355
|
+
addToNumericResult(input, start, end, base) {
|
|
9356
|
+
if (start !== end) {
|
|
9357
|
+
const digitCount = end - start;
|
|
9358
|
+
this.result =
|
|
9359
|
+
this.result * Math.pow(base, digitCount) +
|
|
9360
|
+
Number.parseInt(input.substr(start, digitCount), base);
|
|
9361
|
+
this.consumed += digitCount;
|
|
9506
9362
|
}
|
|
9507
|
-
|
|
9508
|
-
|
|
9509
|
-
|
|
9510
|
-
|
|
9511
|
-
|
|
9512
|
-
|
|
9363
|
+
}
|
|
9364
|
+
/**
|
|
9365
|
+
* Parses a hexadecimal numeric entity.
|
|
9366
|
+
*
|
|
9367
|
+
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
9368
|
+
*
|
|
9369
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
9370
|
+
* @param offset The current offset.
|
|
9371
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9372
|
+
*/
|
|
9373
|
+
stateNumericHex(input, offset) {
|
|
9374
|
+
const startIndex = offset;
|
|
9375
|
+
while (offset < input.length) {
|
|
9376
|
+
const char = input.charCodeAt(offset);
|
|
9377
|
+
if (isNumber(char) || isHexadecimalCharacter(char)) {
|
|
9378
|
+
offset += 1;
|
|
9379
|
+
}
|
|
9380
|
+
else {
|
|
9381
|
+
this.addToNumericResult(input, startIndex, offset, 16);
|
|
9382
|
+
return this.emitNumericEntity(char, 3);
|
|
9513
9383
|
}
|
|
9514
|
-
return function adjacent(elem) {
|
|
9515
|
-
const siblings = adapter.getSiblings(elem);
|
|
9516
|
-
let lastElement;
|
|
9517
|
-
for (let i = 0; i < siblings.length; i++) {
|
|
9518
|
-
const currentSibling = siblings[i];
|
|
9519
|
-
if (equals(elem, currentSibling))
|
|
9520
|
-
break;
|
|
9521
|
-
if (adapter.isTag(currentSibling)) {
|
|
9522
|
-
lastElement = currentSibling;
|
|
9523
|
-
}
|
|
9524
|
-
}
|
|
9525
|
-
return !!lastElement && next(lastElement);
|
|
9526
|
-
};
|
|
9527
9384
|
}
|
|
9528
|
-
|
|
9529
|
-
|
|
9530
|
-
|
|
9385
|
+
this.addToNumericResult(input, startIndex, offset, 16);
|
|
9386
|
+
return -1;
|
|
9387
|
+
}
|
|
9388
|
+
/**
|
|
9389
|
+
* Parses a decimal numeric entity.
|
|
9390
|
+
*
|
|
9391
|
+
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
9392
|
+
*
|
|
9393
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
9394
|
+
* @param offset The current offset.
|
|
9395
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9396
|
+
*/
|
|
9397
|
+
stateNumericDecimal(input, offset) {
|
|
9398
|
+
const startIndex = offset;
|
|
9399
|
+
while (offset < input.length) {
|
|
9400
|
+
const char = input.charCodeAt(offset);
|
|
9401
|
+
if (isNumber(char)) {
|
|
9402
|
+
offset += 1;
|
|
9403
|
+
}
|
|
9404
|
+
else {
|
|
9405
|
+
this.addToNumericResult(input, startIndex, offset, 10);
|
|
9406
|
+
return this.emitNumericEntity(char, 2);
|
|
9531
9407
|
}
|
|
9532
|
-
return next;
|
|
9533
9408
|
}
|
|
9409
|
+
this.addToNumericResult(input, startIndex, offset, 10);
|
|
9410
|
+
return -1;
|
|
9534
9411
|
}
|
|
9535
|
-
|
|
9536
|
-
|
|
9537
|
-
|
|
9538
|
-
|
|
9539
|
-
|
|
9540
|
-
|
|
9541
|
-
|
|
9542
|
-
|
|
9543
|
-
|
|
9544
|
-
|
|
9545
|
-
|
|
9546
|
-
|
|
9547
|
-
|
|
9548
|
-
|
|
9549
|
-
|
|
9550
|
-
|
|
9551
|
-
|
|
9552
|
-
|
|
9553
|
-
|
|
9554
|
-
data: null,
|
|
9555
|
-
};
|
|
9556
|
-
/*
|
|
9557
|
-
* CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector
|
|
9558
|
-
* http://www.w3.org/TR/selectors4/#absolutizing
|
|
9559
|
-
*/
|
|
9560
|
-
function absolutize(token, { adapter }, context) {
|
|
9561
|
-
// TODO Use better check if the context is a document
|
|
9562
|
-
const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {
|
|
9563
|
-
const parent = adapter.isTag(e) && adapter.getParent(e);
|
|
9564
|
-
return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));
|
|
9565
|
-
}));
|
|
9566
|
-
for (const t of token) {
|
|
9567
|
-
if (t.length > 0 &&
|
|
9568
|
-
isTraversal(t[0]) &&
|
|
9569
|
-
t[0].type !== SelectorType.Descendant) ;
|
|
9570
|
-
else if (hasContext && !t.some(includesScopePseudo)) {
|
|
9571
|
-
t.unshift(DESCENDANT_TOKEN);
|
|
9412
|
+
/**
|
|
9413
|
+
* Validate and emit a numeric entity.
|
|
9414
|
+
*
|
|
9415
|
+
* Implements the logic from the `Hexademical character reference start
|
|
9416
|
+
* state` and `Numeric character reference end state` in the HTML spec.
|
|
9417
|
+
*
|
|
9418
|
+
* @param lastCp The last code point of the entity. Used to see if the
|
|
9419
|
+
* entity was terminated with a semicolon.
|
|
9420
|
+
* @param expectedLength The minimum number of characters that should be
|
|
9421
|
+
* consumed. Used to validate that at least one digit
|
|
9422
|
+
* was consumed.
|
|
9423
|
+
* @returns The number of characters that were consumed.
|
|
9424
|
+
*/
|
|
9425
|
+
emitNumericEntity(lastCp, expectedLength) {
|
|
9426
|
+
var _a;
|
|
9427
|
+
// Ensure we consumed at least one digit.
|
|
9428
|
+
if (this.consumed <= expectedLength) {
|
|
9429
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
9430
|
+
return 0;
|
|
9572
9431
|
}
|
|
9573
|
-
|
|
9574
|
-
|
|
9432
|
+
// Figure out if this is a legit end of the entity
|
|
9433
|
+
if (lastCp === CharCodes$1.SEMI) {
|
|
9434
|
+
this.consumed += 1;
|
|
9575
9435
|
}
|
|
9576
|
-
|
|
9577
|
-
|
|
9578
|
-
}
|
|
9579
|
-
|
|
9580
|
-
|
|
9581
|
-
|
|
9582
|
-
|
|
9583
|
-
|
|
9584
|
-
|
|
9585
|
-
|
|
9586
|
-
|
|
9587
|
-
absolutize(token, options, finalContext);
|
|
9588
|
-
}
|
|
9589
|
-
else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {
|
|
9590
|
-
throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");
|
|
9436
|
+
else if (this.decodeMode === DecodingMode.Strict) {
|
|
9437
|
+
return 0;
|
|
9438
|
+
}
|
|
9439
|
+
this.emitCodePoint(replaceCodePoint(this.result), this.consumed);
|
|
9440
|
+
if (this.errors) {
|
|
9441
|
+
if (lastCp !== CharCodes$1.SEMI) {
|
|
9442
|
+
this.errors.missingSemicolonAfterCharacterReference();
|
|
9443
|
+
}
|
|
9444
|
+
this.errors.validateNumericCharacterReference(this.result);
|
|
9445
|
+
}
|
|
9446
|
+
return this.consumed;
|
|
9591
9447
|
}
|
|
9592
|
-
|
|
9593
|
-
|
|
9594
|
-
|
|
9595
|
-
|
|
9596
|
-
|
|
9597
|
-
|
|
9598
|
-
|
|
9599
|
-
|
|
9600
|
-
|
|
9601
|
-
|
|
9448
|
+
/**
|
|
9449
|
+
* Parses a named entity.
|
|
9450
|
+
*
|
|
9451
|
+
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
9452
|
+
*
|
|
9453
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
9454
|
+
* @param offset The current offset.
|
|
9455
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9456
|
+
*/
|
|
9457
|
+
stateNamedEntity(input, offset) {
|
|
9458
|
+
const { decodeTree } = this;
|
|
9459
|
+
let current = decodeTree[this.treeIndex];
|
|
9460
|
+
// The mask is the number of bytes of the value, including the current byte.
|
|
9461
|
+
let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
9462
|
+
for (; offset < input.length; offset++, this.excess++) {
|
|
9463
|
+
const char = input.charCodeAt(offset);
|
|
9464
|
+
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
9465
|
+
if (this.treeIndex < 0) {
|
|
9466
|
+
return this.result === 0 ||
|
|
9467
|
+
// If we are parsing an attribute
|
|
9468
|
+
(this.decodeMode === DecodingMode.Attribute &&
|
|
9469
|
+
// We shouldn't have consumed any characters after the entity,
|
|
9470
|
+
(valueLength === 0 ||
|
|
9471
|
+
// And there should be no invalid characters.
|
|
9472
|
+
isEntityInAttributeInvalidEnd(char)))
|
|
9473
|
+
? 0
|
|
9474
|
+
: this.emitNotTerminatedNamedEntity();
|
|
9602
9475
|
}
|
|
9603
|
-
|
|
9604
|
-
|
|
9605
|
-
|
|
9476
|
+
current = decodeTree[this.treeIndex];
|
|
9477
|
+
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
9478
|
+
// If the branch is a value, store it and continue
|
|
9479
|
+
if (valueLength !== 0) {
|
|
9480
|
+
// If the entity is terminated by a semicolon, we are done.
|
|
9481
|
+
if (char === CharCodes$1.SEMI) {
|
|
9482
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
9483
|
+
}
|
|
9484
|
+
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
9485
|
+
if (this.decodeMode !== DecodingMode.Strict) {
|
|
9486
|
+
this.result = this.treeIndex;
|
|
9487
|
+
this.consumed += this.excess;
|
|
9488
|
+
this.excess = 0;
|
|
9489
|
+
}
|
|
9606
9490
|
}
|
|
9607
9491
|
}
|
|
9608
|
-
return
|
|
9609
|
-
})
|
|
9610
|
-
.reduce(reduceRules, boolbase.falseFunc);
|
|
9611
|
-
query.shouldTestNextSiblings = shouldTestNextSiblings;
|
|
9612
|
-
return query;
|
|
9613
|
-
}
|
|
9614
|
-
function compileRules(rules, options, context) {
|
|
9615
|
-
var _a;
|
|
9616
|
-
return rules.reduce((previous, rule) => previous === boolbase.falseFunc
|
|
9617
|
-
? boolbase.falseFunc
|
|
9618
|
-
: compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);
|
|
9619
|
-
}
|
|
9620
|
-
function reduceRules(a, b) {
|
|
9621
|
-
if (b === boolbase.falseFunc || a === boolbase.trueFunc) {
|
|
9622
|
-
return a;
|
|
9492
|
+
return -1;
|
|
9623
9493
|
}
|
|
9624
|
-
|
|
9625
|
-
|
|
9494
|
+
/**
|
|
9495
|
+
* Emit a named entity that was not terminated with a semicolon.
|
|
9496
|
+
*
|
|
9497
|
+
* @returns The number of characters consumed.
|
|
9498
|
+
*/
|
|
9499
|
+
emitNotTerminatedNamedEntity() {
|
|
9500
|
+
var _a;
|
|
9501
|
+
const { result, decodeTree } = this;
|
|
9502
|
+
const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
9503
|
+
this.emitNamedEntityData(result, valueLength, this.consumed);
|
|
9504
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
|
|
9505
|
+
return this.consumed;
|
|
9626
9506
|
}
|
|
9627
|
-
|
|
9628
|
-
|
|
9629
|
-
|
|
9630
|
-
|
|
9631
|
-
|
|
9632
|
-
|
|
9633
|
-
|
|
9634
|
-
|
|
9635
|
-
equals: defaultEquals,
|
|
9636
|
-
};
|
|
9637
|
-
function convertOptionFormats(options) {
|
|
9638
|
-
var _a, _b, _c, _d;
|
|
9639
|
-
/*
|
|
9640
|
-
* We force one format of options to the other one.
|
|
9507
|
+
/**
|
|
9508
|
+
* Emit a named entity.
|
|
9509
|
+
*
|
|
9510
|
+
* @param result The index of the entity in the decode tree.
|
|
9511
|
+
* @param valueLength The number of bytes in the entity.
|
|
9512
|
+
* @param consumed The number of characters consumed.
|
|
9513
|
+
*
|
|
9514
|
+
* @returns The number of characters consumed.
|
|
9641
9515
|
*/
|
|
9642
|
-
|
|
9643
|
-
|
|
9644
|
-
|
|
9645
|
-
|
|
9646
|
-
|
|
9647
|
-
|
|
9648
|
-
|
|
9649
|
-
|
|
9650
|
-
function getSelectorFunc(searchFunc) {
|
|
9651
|
-
return function select(query, elements, options) {
|
|
9652
|
-
const opts = convertOptionFormats(options);
|
|
9653
|
-
if (typeof query !== "function") {
|
|
9654
|
-
query = compileUnsafe(query, opts, elements);
|
|
9516
|
+
emitNamedEntityData(result, valueLength, consumed) {
|
|
9517
|
+
const { decodeTree } = this;
|
|
9518
|
+
this.emitCodePoint(valueLength === 1
|
|
9519
|
+
? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH
|
|
9520
|
+
: decodeTree[result + 1], consumed);
|
|
9521
|
+
if (valueLength === 3) {
|
|
9522
|
+
// For multi-byte values, we need to emit the second byte.
|
|
9523
|
+
this.emitCodePoint(decodeTree[result + 2], consumed);
|
|
9655
9524
|
}
|
|
9656
|
-
|
|
9657
|
-
return searchFunc(query, filteredElements, opts);
|
|
9658
|
-
};
|
|
9659
|
-
}
|
|
9660
|
-
function prepareContext(elems, adapter, shouldTestNextSiblings = false) {
|
|
9661
|
-
/*
|
|
9662
|
-
* Add siblings if the query requires them.
|
|
9663
|
-
* See https://github.com/fb55/css-select/pull/43#issuecomment-225414692
|
|
9664
|
-
*/
|
|
9665
|
-
if (shouldTestNextSiblings) {
|
|
9666
|
-
elems = appendNextSiblings(elems, adapter);
|
|
9525
|
+
return consumed;
|
|
9667
9526
|
}
|
|
9668
|
-
|
|
9669
|
-
|
|
9670
|
-
|
|
9671
|
-
|
|
9672
|
-
|
|
9673
|
-
|
|
9674
|
-
|
|
9675
|
-
|
|
9676
|
-
|
|
9677
|
-
|
|
9678
|
-
|
|
9527
|
+
/**
|
|
9528
|
+
* Signal to the parser that the end of the input was reached.
|
|
9529
|
+
*
|
|
9530
|
+
* Remaining data will be emitted and relevant errors will be produced.
|
|
9531
|
+
*
|
|
9532
|
+
* @returns The number of characters consumed.
|
|
9533
|
+
*/
|
|
9534
|
+
end() {
|
|
9535
|
+
var _a;
|
|
9536
|
+
switch (this.state) {
|
|
9537
|
+
case EntityDecoderState.NamedEntity: {
|
|
9538
|
+
// Emit a named entity if we have one.
|
|
9539
|
+
return this.result !== 0 &&
|
|
9540
|
+
(this.decodeMode !== DecodingMode.Attribute ||
|
|
9541
|
+
this.result === this.treeIndex)
|
|
9542
|
+
? this.emitNotTerminatedNamedEntity()
|
|
9543
|
+
: 0;
|
|
9544
|
+
}
|
|
9545
|
+
// Otherwise, emit a numeric entity if we have one.
|
|
9546
|
+
case EntityDecoderState.NumericDecimal: {
|
|
9547
|
+
return this.emitNumericEntity(0, 2);
|
|
9548
|
+
}
|
|
9549
|
+
case EntityDecoderState.NumericHex: {
|
|
9550
|
+
return this.emitNumericEntity(0, 3);
|
|
9551
|
+
}
|
|
9552
|
+
case EntityDecoderState.NumericStart: {
|
|
9553
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
9554
|
+
return 0;
|
|
9555
|
+
}
|
|
9556
|
+
case EntityDecoderState.EntityStart: {
|
|
9557
|
+
// Return 0 if we have no entity.
|
|
9558
|
+
return 0;
|
|
9559
|
+
}
|
|
9560
|
+
}
|
|
9679
9561
|
}
|
|
9680
|
-
return elems;
|
|
9681
9562
|
}
|
|
9682
9563
|
/**
|
|
9683
|
-
*
|
|
9684
|
-
*
|
|
9685
|
-
* @param elems Elements to query. If it is an element, its children will be queried..
|
|
9686
|
-
* @param query can be either a CSS selector string or a compiled query function.
|
|
9687
|
-
* @param [options] options for querying the document.
|
|
9688
|
-
* @see compile for supported selector queries.
|
|
9689
|
-
* @returns All matching elements.
|
|
9564
|
+
* Determines the branch of the current node that is taken given the current
|
|
9565
|
+
* character. This function is used to traverse the trie.
|
|
9690
9566
|
*
|
|
9567
|
+
* @param decodeTree The trie.
|
|
9568
|
+
* @param current The current node.
|
|
9569
|
+
* @param nodeIdx The index right after the current node and its value.
|
|
9570
|
+
* @param char The current character.
|
|
9571
|
+
* @returns The index of the next node, or -1 if no branch is taken.
|
|
9691
9572
|
*/
|
|
9692
|
-
|
|
9693
|
-
|
|
9694
|
-
|
|
9695
|
-
|
|
9696
|
-
|
|
9697
|
-
|
|
9698
|
-
|
|
9699
|
-
|
|
9700
|
-
|
|
9701
|
-
|
|
9702
|
-
|
|
9703
|
-
|
|
9704
|
-
|
|
9705
|
-
|
|
9706
|
-
:
|
|
9573
|
+
function determineBranch(decodeTree, current, nodeIndex, char) {
|
|
9574
|
+
const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
9575
|
+
const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
9576
|
+
// Case 1: Single branch encoded in jump offset
|
|
9577
|
+
if (branchCount === 0) {
|
|
9578
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
|
|
9579
|
+
}
|
|
9580
|
+
// Case 2: Multiple branches encoded in jump table
|
|
9581
|
+
if (jumpOffset) {
|
|
9582
|
+
const value = char - jumpOffset;
|
|
9583
|
+
return value < 0 || value >= branchCount
|
|
9584
|
+
? -1
|
|
9585
|
+
: decodeTree[nodeIndex + value] - 1;
|
|
9586
|
+
}
|
|
9587
|
+
// Case 3: Multiple branches encoded in dictionary
|
|
9588
|
+
// Binary search for the character.
|
|
9589
|
+
let lo = nodeIndex;
|
|
9590
|
+
let hi = lo + branchCount - 1;
|
|
9591
|
+
while (lo <= hi) {
|
|
9592
|
+
const mid = (lo + hi) >>> 1;
|
|
9593
|
+
const midValue = decodeTree[mid];
|
|
9594
|
+
if (midValue < char) {
|
|
9595
|
+
lo = mid + 1;
|
|
9596
|
+
}
|
|
9597
|
+
else if (midValue > char) {
|
|
9598
|
+
hi = mid - 1;
|
|
9599
|
+
}
|
|
9600
|
+
else {
|
|
9601
|
+
return decodeTree[mid + branchCount];
|
|
9602
|
+
}
|
|
9603
|
+
}
|
|
9604
|
+
return -1;
|
|
9605
|
+
}
|
|
9707
9606
|
|
|
9708
9607
|
var CharCodes;
|
|
9709
9608
|
(function (CharCodes) {
|
|
@@ -9807,6 +9706,7 @@ const Sequences = {
|
|
|
9807
9706
|
TextareaEnd: new Uint8Array([
|
|
9808
9707
|
0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,
|
|
9809
9708
|
]), // `</textarea`
|
|
9709
|
+
XmpEnd: new Uint8Array([0x3c, 0x2f, 0x78, 0x6d, 0x70]), // `</xmp`
|
|
9810
9710
|
};
|
|
9811
9711
|
class Tokenizer {
|
|
9812
9712
|
constructor({ xmlMode = false, decodeEntities = true, }, cbs) {
|
|
@@ -10035,7 +9935,8 @@ class Tokenizer {
|
|
|
10035
9935
|
else if (lower === Sequences.ScriptEnd[2]) {
|
|
10036
9936
|
this.state = State.BeforeSpecialS;
|
|
10037
9937
|
}
|
|
10038
|
-
else if (lower === Sequences.TitleEnd[2]
|
|
9938
|
+
else if (lower === Sequences.TitleEnd[2] ||
|
|
9939
|
+
lower === Sequences.XmpEnd[2]) {
|
|
10039
9940
|
this.state = State.BeforeSpecialT;
|
|
10040
9941
|
}
|
|
10041
9942
|
else {
|
|
@@ -10248,15 +10149,23 @@ class Tokenizer {
|
|
|
10248
10149
|
}
|
|
10249
10150
|
stateBeforeSpecialT(c) {
|
|
10250
10151
|
const lower = c | 0x20;
|
|
10251
|
-
|
|
10252
|
-
|
|
10253
|
-
|
|
10254
|
-
|
|
10255
|
-
|
|
10256
|
-
|
|
10257
|
-
|
|
10258
|
-
|
|
10259
|
-
|
|
10152
|
+
switch (lower) {
|
|
10153
|
+
case Sequences.TitleEnd[3]: {
|
|
10154
|
+
this.startSpecial(Sequences.TitleEnd, 4);
|
|
10155
|
+
break;
|
|
10156
|
+
}
|
|
10157
|
+
case Sequences.TextareaEnd[3]: {
|
|
10158
|
+
this.startSpecial(Sequences.TextareaEnd, 4);
|
|
10159
|
+
break;
|
|
10160
|
+
}
|
|
10161
|
+
case Sequences.XmpEnd[3]: {
|
|
10162
|
+
this.startSpecial(Sequences.XmpEnd, 4);
|
|
10163
|
+
break;
|
|
10164
|
+
}
|
|
10165
|
+
default: {
|
|
10166
|
+
this.state = State.InTagName;
|
|
10167
|
+
this.stateInTagName(c); // Consume the token again
|
|
10168
|
+
}
|
|
10260
10169
|
}
|
|
10261
10170
|
}
|
|
10262
10171
|
startEntity() {
|
|
@@ -10982,7 +10891,7 @@ function parseDocument(data, options) {
|
|
|
10982
10891
|
return handler.root;
|
|
10983
10892
|
}
|
|
10984
10893
|
|
|
10985
|
-
var picocolors_browserExports = requirePicocolors_browser();
|
|
10894
|
+
var picocolors_browserExports = /*@__PURE__*/ requirePicocolors_browser();
|
|
10986
10895
|
var pc = /*@__PURE__*/getDefaultExportFromCjs(picocolors_browserExports);
|
|
10987
10896
|
|
|
10988
10897
|
function parseStylesheet(stylesheet) {
|
|
@@ -11438,34 +11347,15 @@ function isSubpath(basePath, currentPath) {
|
|
|
11438
11347
|
return !_pathModule.relative(basePath, currentPath).startsWith("..");
|
|
11439
11348
|
}
|
|
11440
11349
|
|
|
11441
|
-
var __defProp = Object.defineProperty;
|
|
11442
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11443
|
-
var __publicField = (obj, key, value) => {
|
|
11444
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
11445
|
-
return value;
|
|
11446
|
-
};
|
|
11447
|
-
var __accessCheck = (obj, member, msg) => {
|
|
11448
|
-
if (!member.has(obj))
|
|
11449
|
-
throw TypeError("Cannot " + msg);
|
|
11450
|
-
};
|
|
11451
|
-
var __privateGet = (obj, member, getter) => {
|
|
11452
|
-
__accessCheck(obj, member, "read from private field");
|
|
11453
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
11454
|
-
};
|
|
11455
|
-
var __privateAdd = (obj, member, value) => {
|
|
11456
|
-
if (member.has(obj))
|
|
11457
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
11458
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
11459
|
-
};
|
|
11460
|
-
var _selectorCache;
|
|
11461
11350
|
const removePseudoClassesAndElementsPattern = /(?<!\\)::?[a-z-]+(?:\(.+\))?/gi;
|
|
11351
|
+
const doubleNestingPattern = />\s*(?=>|$)/g;
|
|
11462
11352
|
const removeTrailingCommasPattern = /\(\s*,|,\s*\)/g;
|
|
11463
11353
|
class Beasties {
|
|
11354
|
+
#selectorCache = /* @__PURE__ */ new Map();
|
|
11355
|
+
options;
|
|
11356
|
+
logger;
|
|
11357
|
+
fs;
|
|
11464
11358
|
constructor(options = {}) {
|
|
11465
|
-
__privateAdd(this, _selectorCache, /* @__PURE__ */ new Map());
|
|
11466
|
-
__publicField(this, "options");
|
|
11467
|
-
__publicField(this, "logger");
|
|
11468
|
-
__publicField(this, "fs");
|
|
11469
11359
|
this.options = Object.assign({
|
|
11470
11360
|
logLevel: "info",
|
|
11471
11361
|
path: "",
|
|
@@ -11486,8 +11376,7 @@ class Beasties {
|
|
|
11486
11376
|
const callback = (err, data) => {
|
|
11487
11377
|
if (err)
|
|
11488
11378
|
reject(err);
|
|
11489
|
-
else
|
|
11490
|
-
resolve(data.toString());
|
|
11379
|
+
else resolve(data.toString());
|
|
11491
11380
|
};
|
|
11492
11381
|
if (fs && fs.readFile) {
|
|
11493
11382
|
fs.readFile(filename, callback);
|
|
@@ -11616,11 +11505,6 @@ class Beasties {
|
|
|
11616
11505
|
*/
|
|
11617
11506
|
async embedLinkedStylesheet(link, document) {
|
|
11618
11507
|
const href = link.getAttribute("href");
|
|
11619
|
-
let media = link.getAttribute("media");
|
|
11620
|
-
if (media && !validateMediaQuery(media)) {
|
|
11621
|
-
media = void 0;
|
|
11622
|
-
}
|
|
11623
|
-
const preloadMode = this.options.preload;
|
|
11624
11508
|
if (!href?.endsWith(".css")) {
|
|
11625
11509
|
return void 0;
|
|
11626
11510
|
}
|
|
@@ -11637,6 +11521,11 @@ class Beasties {
|
|
|
11637
11521
|
if (this.checkInlineThreshold(link, style, sheet)) {
|
|
11638
11522
|
return;
|
|
11639
11523
|
}
|
|
11524
|
+
let media = link.getAttribute("media");
|
|
11525
|
+
if (media && !validateMediaQuery(media)) {
|
|
11526
|
+
media = void 0;
|
|
11527
|
+
}
|
|
11528
|
+
const preloadMode = this.options.preload;
|
|
11640
11529
|
let cssLoaderPreamble = "function $loadcss(u,m,l){(l=document.createElement('link')).rel='stylesheet';l.href=u;document.head.appendChild(l)}";
|
|
11641
11530
|
const lazy = preloadMode === "js-lazy";
|
|
11642
11531
|
if (lazy) {
|
|
@@ -11673,13 +11562,20 @@ class Beasties {
|
|
|
11673
11562
|
link.setAttribute("title", "styles");
|
|
11674
11563
|
link.setAttribute("onload", `this.title='';this.rel='stylesheet'`);
|
|
11675
11564
|
noscriptFallback = true;
|
|
11565
|
+
} else if (preloadMode === "swap-low") {
|
|
11566
|
+
link.setAttribute("rel", "alternate stylesheet");
|
|
11567
|
+
link.setAttribute("title", "styles");
|
|
11568
|
+
link.setAttribute("onload", `this.title='';this.rel='stylesheet'`);
|
|
11569
|
+
noscriptFallback = true;
|
|
11676
11570
|
} else if (preloadMode === "swap") {
|
|
11677
11571
|
link.setAttribute("onload", "this.rel='stylesheet'");
|
|
11572
|
+
updateLinkToPreload = true;
|
|
11678
11573
|
noscriptFallback = true;
|
|
11679
11574
|
} else {
|
|
11680
11575
|
const bodyLink = link.cloneNode(false);
|
|
11681
11576
|
bodyLink.removeAttribute("id");
|
|
11682
11577
|
document.body.appendChild(bodyLink);
|
|
11578
|
+
style.$$links.push(bodyLink);
|
|
11683
11579
|
updateLinkToPreload = true;
|
|
11684
11580
|
}
|
|
11685
11581
|
}
|
|
@@ -11701,21 +11597,22 @@ class Beasties {
|
|
|
11701
11597
|
pruneSource(style, before, sheetInverse) {
|
|
11702
11598
|
const minSize = this.options.minimumExternalSize;
|
|
11703
11599
|
const name = style.$$name;
|
|
11704
|
-
|
|
11600
|
+
const shouldInline = minSize && sheetInverse.length < minSize;
|
|
11601
|
+
if (shouldInline) {
|
|
11705
11602
|
this.logger.info?.(
|
|
11706
11603
|
`\x1B[32mInlined all of ${name} (non-critical external stylesheet would have been ${sheetInverse.length}b, which was below the threshold of ${minSize})\x1B[39m`
|
|
11707
11604
|
);
|
|
11605
|
+
}
|
|
11606
|
+
if (shouldInline || !sheetInverse) {
|
|
11708
11607
|
style.textContent = before;
|
|
11709
11608
|
if (style.$$links) {
|
|
11710
11609
|
for (const link of style.$$links) {
|
|
11711
11610
|
const parent = link.parentNode;
|
|
11712
|
-
|
|
11713
|
-
parent.removeChild(link);
|
|
11611
|
+
parent?.removeChild(link);
|
|
11714
11612
|
}
|
|
11715
11613
|
}
|
|
11716
|
-
return true;
|
|
11717
11614
|
}
|
|
11718
|
-
return
|
|
11615
|
+
return !!shouldInline;
|
|
11719
11616
|
}
|
|
11720
11617
|
/**
|
|
11721
11618
|
* Parse the stylesheet within a <style> element, then reduce it to contain only rules used by the document.
|
|
@@ -11833,7 +11730,7 @@ class Beasties {
|
|
|
11833
11730
|
}
|
|
11834
11731
|
}
|
|
11835
11732
|
}
|
|
11836
|
-
if (rule.type === "atrule" && rule.name === "font-face")
|
|
11733
|
+
if (rule.type === "atrule" && (rule.name === "font-face" || rule.name === "layer"))
|
|
11837
11734
|
return;
|
|
11838
11735
|
const hasRemainingRules = ("nodes" in rule && rule.nodes?.some((rule2) => !rule2.$$remove)) ?? true;
|
|
11839
11736
|
return hasRemainingRules;
|
|
@@ -11919,16 +11816,15 @@ class Beasties {
|
|
|
11919
11816
|
);
|
|
11920
11817
|
}
|
|
11921
11818
|
normalizeCssSelector(sel) {
|
|
11922
|
-
let normalizedSelector =
|
|
11819
|
+
let normalizedSelector = this.#selectorCache.get(sel);
|
|
11923
11820
|
if (normalizedSelector !== void 0) {
|
|
11924
11821
|
return normalizedSelector;
|
|
11925
11822
|
}
|
|
11926
|
-
normalizedSelector = sel.replace(removePseudoClassesAndElementsPattern, "").replace(removeTrailingCommasPattern, (match) => match.includes("(") ? "(" : ")").trim();
|
|
11927
|
-
|
|
11823
|
+
normalizedSelector = sel.replace(removePseudoClassesAndElementsPattern, "").replace(removeTrailingCommasPattern, (match) => match.includes("(") ? "(" : ")").replace(doubleNestingPattern, "> *").trim();
|
|
11824
|
+
this.#selectorCache.set(sel, normalizedSelector);
|
|
11928
11825
|
return normalizedSelector;
|
|
11929
11826
|
}
|
|
11930
11827
|
}
|
|
11931
|
-
_selectorCache = new WeakMap();
|
|
11932
11828
|
function formatSize(size) {
|
|
11933
11829
|
if (size <= 0) {
|
|
11934
11830
|
return "0 bytes";
|