diff options
Diffstat (limited to 'vendor/github.com/yuin/goldmark/util')
9 files changed, 0 insertions, 1648 deletions
diff --git a/vendor/github.com/yuin/goldmark/util/html5entities.gen.go b/vendor/github.com/yuin/goldmark/util/html5entities.gen.go deleted file mode 100644 index 631a59a8a..000000000 --- a/vendor/github.com/yuin/goldmark/util/html5entities.gen.go +++ /dev/null @@ -1,9 +0,0 @@ -// Code generated by _tools; DO NOT EDIT. -package util -const _html5entitiesLength = 2124 -const _html5entitiesName string = "AEligAMPAacuteAcircAcyAfrAgraveAlphaAmacrAndAogonAopfApplyFunctionAringAscrAssignAtildeAumlBackslashBarvBarwedBcyBecauseBernoullisBetaBfrBopfBreveBscrBumpeqCHcyCOPYCacuteCapCapitalDifferentialDCayleysCcaronCcedilCcircCconintCdotCedillaCenterDotCfrChiCircleDotCircleMinusCirclePlusCircleTimesClockwiseContourIntegralCloseCurlyDoubleQuoteCloseCurlyQuoteColonColoneCongruentConintContourIntegralCopfCoproductCounterClockwiseContourIntegralCrossCscrCupCupCapDDDDotrahdDJcyDScyDZcyDaggerDarrDashvDcaronDcyDelDeltaDfrDiacriticalAcuteDiacriticalDotDiacriticalDoubleAcuteDiacriticalGraveDiacriticalTildeDiamondDifferentialDDopfDotDotDotDotEqualDoubleContourIntegralDoubleDotDoubleDownArrowDoubleLeftArrowDoubleLeftRightArrowDoubleLeftTeeDoubleLongLeftArrowDoubleLongLeftRightArrowDoubleLongRightArrowDoubleRightArrowDoubleRightTeeDoubleUpArrowDoubleUpDownArrowDoubleVerticalBarDownArrowDownArrowBarDownArrowUpArrowDownBreveDownLeftRightVectorDownLeftTeeVectorDownLeftVectorDownLeftVectorBarDownRightTeeVectorDownRightVectorDownRightVectorBarDownTeeDownTeeArrowDownarrowDscrDstrokENGETHEacuteEcaronEcircEcyEdotEfrEgraveElementEmacrEmptySmallSquareEmptyVerySmallSquareEogonEopfEpsilonEqualEqualTildeEquilibriumEscrEsimEtaEumlExistsExponentialEFcyFfrFilledSmallSquareFilledVerySmallSquareFopfForAllFouriertrfFscrGJcyGTGammaGammadGbreveGcedilGcircGcyGdotGfrGgGopfGreaterEqualGreaterEqualLessGreaterFullEqualGreaterGreaterGreaterLessGreaterSlantEqualGreaterTildeGscrGtHARDcyHacekHatHcircHfrHilbertSpaceHopfHorizontalLineHscrHstrokHumpDownHumpHumpEqualIEcyIJligIOcyIacuteIcircIcyIdotIfrIgraveImImacrImaginaryIImpliesIntIntegralIntersectionInvisibleCommaInvisibleTimesIogonIopfIotaIscrItildeIukcyIumlJcircJcyJfrJopfJscrJsercyJukcyKHcyKJcyKappaKcedilKcyKfrKopfKscrLJcyLTLacuteLambdaLangLaplacetrfLarrLcaronLcedilLcyLeftAngleBracketLeftArrowLeftArrowBarLeftArrowRightArrowLeftCeilingLeftDoubleBracketLeftDownTeeVectorLeftDownVectorLeftDownVectorBarLeftFloorLeftRightArrowLeftRightVectorLeftTeeLeftTeeArrowLeftTeeVectorLeftTriangleLeftTriangleBarLeftTriangleEqualLeftUpDownVectorLeftUpTeeVectorLeftUpVectorLeftUpVectorBarLeftVectorLeftVectorBarLeftarrowLeftrightarrowLessEqualGreaterLessFullEqualLessGreaterLessLessLessSlantEqualLessTildeLfrLlLleftarrowLmidotLongLeftArrowLongLeftRightArrowLongRightArrowLongleftarrowLongleftrightarrowLongrightarrowLopfLowerLeftArrowLowerRightArrowLscrLshLstrokLtMapMcyMediumSpaceMellintrfMfrMinusPlusMopfMscrMuNJcyNacuteNcaronNcedilNcyNegativeMediumSpaceNegativeThickSpaceNegativeThinSpaceNegativeVeryThinSpaceNestedGreaterGreaterNestedLessLessNewLineNfrNoBreakNonBreakingSpaceNopfNotNotCongruentNotCupCapNotDoubleVerticalBarNotElementNotEqualNotEqualTildeNotExistsNotGreaterNotGreaterEqualNotGreaterFullEqualNotGreaterGreaterNotGreaterLessNotGreaterSlantEqualNotGreaterTildeNotHumpDownHumpNotHumpEqualNotLeftTriangleNotLeftTriangleBarNotLeftTriangleEqualNotLessNotLessEqualNotLessGreaterNotLessLessNotLessSlantEqualNotLessTildeNotNestedGreaterGreaterNotNestedLessLessNotPrecedesNotPrecedesEqualNotPrecedesSlantEqualNotReverseElementNotRightTriangleNotRightTriangleBarNotRightTriangleEqualNotSquareSubsetNotSquareSubsetEqualNotSquareSupersetNotSquareSupersetEqualNotSubsetNotSubsetEqualNotSucceedsNotSucceedsEqualNotSucceedsSlantEqualNotSucceedsTildeNotSupersetNotSupersetEqualNotTildeNotTildeEqualNotTildeFullEqualNotTildeTildeNotVerticalBarNscrNtildeNuOEligOacuteOcircOcyOdblacOfrOgraveOmacrOmegaOmicronOopfOpenCurlyDoubleQuoteOpenCurlyQuoteOrOscrOslashOtildeOtimesOumlOverBarOverBraceOverBracketOverParenthesisPartialDPcyPfrPhiPiPlusMinusPoincareplanePopfPrPrecedesPrecedesEqualPrecedesSlantEqualPrecedesTildePrimeProductProportionProportionalPscrPsiQUOTQfrQopfQscrRBarrREGRacuteRangRarrRarrtlRcaronRcedilRcyReReverseElementReverseEquilibriumReverseUpEquilibriumRfrRhoRightAngleBracketRightArrowRightArrowBarRightArrowLeftArrowRightCeilingRightDoubleBracketRightDownTeeVectorRightDownVectorRightDownVectorBarRightFloorRightTeeRightTeeArrowRightTeeVectorRightTriangleRightTriangleBarRightTriangleEqualRightUpDownVectorRightUpTeeVectorRightUpVectorRightUpVectorBarRightVectorRightVectorBarRightarrowRopfRoundImpliesRrightarrowRscrRshRuleDelayedSHCHcySHcySOFTcySacuteScScaronScedilScircScySfrShortDownArrowShortLeftArrowShortRightArrowShortUpArrowSigmaSmallCircleSopfSqrtSquareSquareIntersectionSquareSubsetSquareSubsetEqualSquareSupersetSquareSupersetEqualSquareUnionSscrStarSubSubsetSubsetEqualSucceedsSucceedsEqualSucceedsSlantEqualSucceedsTildeSuchThatSumSupSupersetSupersetEqualSupsetTHORNTRADETSHcyTScyTabTauTcaronTcedilTcyTfrThereforeThetaThickSpaceThinSpaceTildeTildeEqualTildeFullEqualTildeTildeTopfTripleDotTscrTstrokUacuteUarrUarrocirUbrcyUbreveUcircUcyUdblacUfrUgraveUmacrUnderBarUnderBraceUnderBracketUnderParenthesisUnionUnionPlusUogonUopfUpArrowUpArrowBarUpArrowDownArrowUpDownArrowUpEquilibriumUpTeeUpTeeArrowUparrowUpdownarrowUpperLeftArrowUpperRightArrowUpsiUpsilonUringUscrUtildeUumlVDashVbarVcyVdashVdashlVeeVerbarVertVerticalBarVerticalLineVerticalSeparatorVerticalTildeVeryThinSpaceVfrVopfVscrVvdashWcircWedgeWfrWopfWscrXfrXiXopfXscrYAcyYIcyYUcyYacuteYcircYcyYfrYopfYscrYumlZHcyZacuteZcaronZcyZdotZeroWidthSpaceZetaZfrZopfZscraacuteabreveacacEacdacircacuteacyaeligafafragravealefsymalephalphaamacramalgampandandandanddandslopeandvangangeangleangmsdangmsdaaangmsdabangmsdacangmsdadangmsdaeangmsdafangmsdagangmsdahangrtangrtvbangrtvbdangsphangstangzarraogonaopfapapEapacirapeapidaposapproxapproxeqaringascrastasympasympeqatildeaumlawconintawintbNotbackcongbackepsilonbackprimebacksimbacksimeqbarveebarwedbarwedgebbrkbbrktbrkbcongbcybdquobecausbecausebemptyvbepsibernoubetabethbetweenbfrbigcapbigcircbigcupbigodotbigoplusbigotimesbigsqcupbigstarbigtriangledownbigtriangleupbiguplusbigveebigwedgebkarowblacklozengeblacksquareblacktriangleblacktriangledownblacktriangleleftblacktrianglerightblankblk12blk14blk34blockbnebnequivbnotbopfbotbottombowtieboxDLboxDRboxDlboxDrboxHboxHDboxHUboxHdboxHuboxULboxURboxUlboxUrboxVboxVHboxVLboxVRboxVhboxVlboxVrboxboxboxdLboxdRboxdlboxdrboxhboxhDboxhUboxhdboxhuboxminusboxplusboxtimesboxuLboxuRboxulboxurboxvboxvHboxvLboxvRboxvhboxvlboxvrbprimebrevebrvbarbscrbsemibsimbsimebsolbsolbbsolhsubbullbulletbumpbumpEbumpebumpeqcacutecapcapandcapbrcupcapcapcapcupcapdotcapscaretcaronccapsccaronccedilccircccupsccupssmcdotcedilcemptyvcentcenterdotcfrchcycheckcheckmarkchicircirEcirccirceqcirclearrowleftcirclearrowrightcircledRcircledScircledastcircledcirccircleddashcirecirfnintcirmidcirscirclubsclubsuitcoloncolonecoloneqcommacommatcompcompfncomplementcomplexescongcongdotconintcopfcoprodcopycopysrcrarrcrosscscrcsubcsubecsupcsupectdotcudarrlcudarrrcueprcuesccularrcularrpcupcupbrcapcupcapcupcupcupdotcuporcupscurarrcurarrmcurlyeqpreccurlyeqsucccurlyveecurlywedgecurrencurvearrowleftcurvearrowrightcuveecuwedcwconintcwintcylctydArrdHardaggerdalethdarrdashdashvdbkarowdblacdcarondcyddddaggerddarrddotseqdegdeltademptyvdfishtdfrdharldharrdiamdiamonddiamondsuitdiamsdiedigammadisindivdividedivideontimesdivonxdjcydlcorndlcropdollardopfdotdoteqdoteqdotdotminusdotplusdotsquaredoublebarwedgedownarrowdowndownarrowsdownharpoonleftdownharpoonrightdrbkarowdrcorndrcropdscrdscydsoldstrokdtdotdtridtrifduarrduhardwangledzcydzigrarreDDoteDoteacuteeasterecaronecirecircecolonecyedoteeefDotefregegraveegsegsdotelelintersellelselsdotemacremptyemptysetemptyvemspemsp13emsp14engenspeogoneopfepareparsleplusepsiepsilonepsiveqcirceqcoloneqsimeqslantgtreqslantlessequalsequestequivequivDDeqvparslerDoterarrescresdotesimetaetheumleuroexclexistexpectationexponentialefallingdotseqfcyfemaleffiligffligfflligffrfiligfjligflatflligfltnsfnoffopfforallforkforkvfpartintfrac12frac13frac14frac15frac16frac18frac23frac25frac34frac35frac38frac45frac56frac58frac78fraslfrownfscrgEgElgacutegammagammadgapgbrevegcircgcygdotgegelgeqgeqqgeqslantgesgesccgesdotgesdotogesdotolgeslgeslesgfrggggggimelgjcyglglEglagljgnEgnapgnapproxgnegneqgneqqgnsimgopfgravegscrgsimgsimegsimlgtgtccgtcirgtdotgtlPargtquestgtrapproxgtrarrgtrdotgtreqlessgtreqqlessgtrlessgtrsimgvertneqqgvnEhArrhairsphalfhamilthardcyharrharrcirharrwhbarhcircheartsheartsuithellipherconhfrhksearowhkswarowhoarrhomththookleftarrowhookrightarrowhopfhorbarhscrhslashhstrokhybullhypheniacuteicicircicyiecyiexcliffifrigraveiiiiiintiiintiinfiniiotaijligimacrimageimaglineimagpartimathimofimpedinincareinfininfintieinodotintintcalintegersintercalintlarhkintprodiocyiogoniopfiotaiprodiquestiscrisinisinEisindotisinsisinsvisinvititildeiukcyiumljcircjcyjfrjmathjopfjscrjsercyjukcykappakappavkcedilkcykfrkgreenkhcykjcykopfkscrlAarrlArrlAtaillBarrlElEglHarlacutelaemptyvlagranlambdalanglangdlanglelaplaquolarrlarrblarrbfslarrfslarrhklarrlplarrpllarrsimlarrtllatlataillatelateslbarrlbbrklbracelbracklbrkelbrksldlbrkslulcaronlcedillceillcublcyldcaldquoldquorldrdharldrusharldshleleftarrowleftarrowtailleftharpoondownleftharpoonupleftleftarrowsleftrightarrowleftrightarrowsleftrightharpoonsleftrightsquigarrowleftthreetimeslegleqleqqleqslantleslescclesdotlesdotolesdotorlesglesgeslessapproxlessdotlesseqgtrlesseqqgtrlessgtrlesssimlfishtlfloorlfrlglgElhardlharulharullhblkljcyllllarrllcornerllhardlltrilmidotlmoustlmoustachelnElnaplnapproxlnelneqlneqqlnsimloangloarrlobrklongleftarrowlongleftrightarrowlongmapstolongrightarrowlooparrowleftlooparrowrightloparlopflopluslotimeslowastlowbarlozlozengelozflparlparltlrarrlrcornerlrharlrhardlrmlrtrilsaquolscrlshlsimlsimelsimglsqblsquolsquorlstrokltltccltcirltdotlthreeltimesltlarrltquestltrParltriltrieltriflurdsharluruharlvertneqqlvnEmDDotmacrmalemaltmaltesemapmapstomapstodownmapstoleftmapstoupmarkermcommamcymdashmeasuredanglemfrmhomicromidmidastmidcirmiddotminusminusbminusdminusdumlcpmldrmnplusmodelsmopfmpmscrmstposmumultimapmumapnGgnGtnGtvnLeftarrownLeftrightarrownLlnLtnLtvnRightarrownVDashnVdashnablanacutenangnapnapEnapidnaposnapproxnaturnaturalnaturalsnbspnbumpnbumpencapncaronncedilncongncongdotncupncyndashneneArrnearhknearrnearrownedotnequivnesearnesimnexistnexistsnfrngEngengeqngeqqngeqslantngesngsimngtngtrnhArrnharrnhparninisnisdnivnjcynlArrnlEnlarrnldrnlenleftarrownleftrightarrownleqnleqqnleqslantnlesnlessnlsimnltnltrinltrienmidnopfnotnotinnotinEnotindotnotinvanotinvbnotinvcnotninotnivanotnivbnotnivcnparnparallelnparslnpartnpolintnprnprcuenprenprecnpreceqnrArrnrarrnrarrcnrarrwnrightarrownrtrinrtrienscnsccuenscenscrnshortmidnshortparallelnsimnsimensimeqnsmidnsparnsqsubensqsupensubnsubEnsubensubsetnsubseteqnsubseteqqnsuccnsucceqnsupnsupEnsupensupsetnsupseteqnsupseteqqntglntildentlgntriangleleftntrianglelefteqntrianglerightntrianglerighteqnunumnumeronumspnvDashnvHarrnvapnvdashnvgenvgtnvinfinnvlArrnvlenvltnvltrienvrArrnvrtrienvsimnwArrnwarhknwarrnwarrownwnearoSoacuteoastocirocircocyodashodblacodivodotodsoldoeligofcirofrogonograveogtohbarohmointolarrolcirolcrossolineoltomacromegaomicronomidominusoopfoparoperpoplusororarrordorderorderofordfordmorigoforororslopeorvoscroslashosolotildeotimesotimesasoumlovbarparparaparallelparsimparslpartpcypercntperiodpermilperppertenkpfrphiphivphmmatphonepipitchforkpivplanckplanckhplankvplusplusacirplusbpluscirplusdoplusdupluseplusmnplussimplustwopmpointintpopfpoundprprEprapprcuepreprecprecapproxpreccurlyeqpreceqprecnapproxprecneqqprecnsimprecsimprimeprimesprnEprnapprnsimprodprofalarproflineprofsurfpropproptoprsimprurelpscrpsipuncspqfrqintqopfqprimeqscrquaternionsquatintquestquesteqquotrAarrrArrrAtailrBarrrHarraceracuteradicraemptyvrangrangdrangerangleraquorarrrarraprarrbrarrbfsrarrcrarrfsrarrhkrarrlprarrplrarrsimrarrtlrarrwratailratiorationalsrbarrrbbrkrbracerbrackrbrkerbrksldrbrkslurcaronrcedilrceilrcubrcyrdcardldharrdquordquorrdshrealrealinerealpartrealsrectregrfishtrfloorrfrrhardrharurharulrhorhovrightarrowrightarrowtailrightharpoondownrightharpoonuprightleftarrowsrightleftharpoonsrightrightarrowsrightsquigarrowrightthreetimesringrisingdotseqrlarrrlharrlmrmoustrmoustachernmidroangroarrrobrkroparropfroplusrotimesrparrpargtrppolintrrarrrsaquorscrrshrsqbrsquorsquorrthreertimesrtrirtriertrifrtriltriruluharrxsacutesbquoscscEscapscaronsccuescescedilscircscnEscnapscnsimscpolintscsimscysdotsdotbsdoteseArrsearhksearrsearrowsectsemiseswarsetminussetmnsextsfrsfrownsharpshchcyshcyshortmidshortparallelshysigmasigmafsigmavsimsimdotsimesimeqsimgsimgEsimlsimlEsimnesimplussimrarrslarrsmallsetminussmashpsmeparslsmidsmilesmtsmtesmtessoftcysolsolbsolbarsopfspadesspadesuitsparsqcapsqcapssqcupsqcupssqsubsqsubesqsubsetsqsubseteqsqsupsqsupesqsupsetsqsupseteqsqusquaresquarfsqufsrarrsscrssetmnssmilesstarfstarstarfstraightepsilonstraightphistrnssubsubEsubdotsubesubedotsubmultsubnEsubnesubplussubrarrsubsetsubseteqsubseteqqsubsetneqsubsetneqqsubsimsubsubsubsupsuccsuccapproxsucccurlyeqsucceqsuccnapproxsuccneqqsuccnsimsuccsimsumsungsupsup1sup2sup3supEsupdotsupdsubsupesupedotsuphsolsuphsubsuplarrsupmultsupnEsupnesupplussupsetsupseteqsupseteqqsupsetneqsupsetneqqsupsimsupsubsupsupswArrswarhkswarrswarrowswnwarszligtargettautbrktcarontcediltcytdottelrectfrthere4thereforethetathetasymthetavthickapproxthicksimthinspthkapthksimthorntildetimestimesbtimesbartimesdtinttoeatoptopbottopcirtopftopforktosatprimetradetriangletriangledowntrianglelefttrianglelefteqtriangleqtrianglerighttrianglerighteqtridottrietriminustriplustrisbtritimetrpeziumtscrtscytshcytstroktwixttwoheadleftarrowtwoheadrightarrowuArruHaruacuteuarrubrcyubreveucircucyudarrudblacudharufishtufrugraveuharluharruhblkulcornulcornerulcropultriumacrumluogonuopfuparrowupdownarrowupharpoonleftupharpoonrightuplusupsiupsihupsilonupuparrowsurcornurcornerurcropuringurtriuscrutdotutildeutriutrifuuarruumluwanglevArrvBarvBarvvDashvangrtvarepsilonvarkappavarnothingvarphivarpivarproptovarrvarrhovarsigmavarsubsetneqvarsubsetneqqvarsupsetneqvarsupsetneqqvarthetavartriangleleftvartrianglerightvcyvdashveeveebarveeeqvellipverbarvertvfrvltrivnsubvnsupvopfvpropvrtrivscrvsubnEvsubnevsupnEvsupnevzigzagwcircwedbarwedgewedgeqweierpwfrwopfwpwrwreathwscrxcapxcircxcupxdtrixfrxhArrxharrxixlArrxlarrxmapxnisxodotxopfxoplusxotimexrArrxrarrxscrxsqcupxuplusxutrixveexwedgeyacuteyacyycircycyyenyfryicyyopfyscryucyyumlzacutezcaronzcyzdotzeetrfzetazfrzhcyzigrarrzopfzscrzwjzwnj" -const _html5entitiesNameIndex = "\x05\x03\x06\x05\x03\x03\x06\x05\x05\x03\x05\x04\x0d\x05\x04\x06\x06\x04\x09\x04\x06\x03\x07\x0a\x04\x03\x04\x05\x04\x06\x04\x04\x06\x03\x14\x07\x06\x06\x05\x07\x04\x07\x09\x03\x03\x09\x0b\x0a\x0b\x18\x15\x0f\x05\x06\x09\x06\x0f\x04\x09\x1f\x05\x04\x03\x06\x02\x08\x04\x04\x04\x06\x04\x05\x06\x03\x03\x05\x03\x10\x0e\x16\x10\x10\x07\x0d\x04\x03\x06\x08\x15\x09\x0f\x0f\x14\x0d\x13\x18\x14\x10\x0e\x0d\x11\x11\x09\x0c\x10\x09\x13\x11\x0e\x11\x12\x0f\x12\x07\x0c\x09\x04\x06\x03\x03\x06\x06\x05\x03\x04\x03\x06\x07\x05\x10\x14\x05\x04\x07\x05\x0a\x0b\x04\x04\x03\x04\x06\x0c\x03\x03\x11\x15\x04\x06\x0a\x04\x04\x02\x05\x06\x06\x06\x05\x03\x04\x03\x02\x04\x0c\x10\x10\x0e\x0b\x11\x0c\x04\x02\x06\x05\x03\x05\x03\x0c\x04\x0e\x04\x06\x0c\x09\x04\x05\x04\x06\x05\x03\x04\x03\x06\x02\x05\x0a\x07\x03\x08\x0c\x0e\x0e\x05\x04\x04\x04\x06\x05\x04\x05\x03\x03\x04\x04\x06\x05\x04\x04\x05\x06\x03\x03\x04\x04\x04\x02\x06\x06\x04\x0a\x04\x06\x06\x03\x10\x09\x0c\x13\x0b\x11\x11\x0e\x11\x09\x0e\x0f\x07\x0c\x0d\x0c\x0f\x11\x10\x0f\x0c\x0f\x0a\x0d\x09\x0e\x10\x0d\x0b\x08\x0e\x09\x03\x02\x0a\x06\x0d\x12\x0e\x0d\x12\x0e\x04\x0e\x0f\x04\x03\x06\x02\x03\x03\x0b\x09\x03\x09\x04\x04\x02\x04\x06\x06\x06\x03\x13\x12\x11\x15\x14\x0e\x07\x03\x07\x10\x04\x03\x0c\x09\x14\x0a\x08\x0d\x09\x0a\x0f\x13\x11\x0e\x14\x0f\x0f\x0c\x0f\x12\x14\x07\x0c\x0e\x0b\x11\x0c\x17\x11\x0b\x10\x15\x11\x10\x13\x15\x0f\x14\x11\x16\x09\x0e\x0b\x10\x15\x10\x0b\x10\x08\x0d\x11\x0d\x0e\x04\x06\x02\x05\x06\x05\x03\x06\x03\x06\x05\x05\x07\x04\x14\x0e\x02\x04\x06\x06\x06\x04\x07\x09\x0b\x0f\x08\x03\x03\x03\x02\x09\x0d\x04\x02\x08\x0d\x12\x0d\x05\x07\x0a\x0c\x04\x03\x04\x03\x04\x04\x05\x03\x06\x04\x04\x06\x06\x06\x03\x02\x0e\x12\x14\x03\x03\x11\x0a\x0d\x13\x0c\x12\x12\x0f\x12\x0a\x08\x0d\x0e\x0d\x10\x12\x11\x10\x0d\x10\x0b\x0e\x0a\x04\x0c\x0b\x04\x03\x0b\x06\x04\x06\x06\x02\x06\x06\x05\x03\x03\x0e\x0e\x0f\x0c\x05\x0b\x04\x04\x06\x12\x0c\x11\x0e\x13\x0b\x04\x04\x03\x06\x0b\x08\x0d\x12\x0d\x08\x03\x03\x08\x0d\x06\x05\x05\x05\x04\x03\x03\x06\x06\x03\x03\x09\x05\x0a\x09\x05\x0a\x0e\x0a\x04\x09\x04\x06\x06\x04\x08\x05\x06\x05\x03\x06\x03\x06\x05\x08\x0a\x0c\x10\x05\x09\x05\x04\x07\x0a\x10\x0b\x0d\x05\x0a\x07\x0b\x0e\x0f\x04\x07\x05\x04\x06\x04\x05\x04\x03\x05\x06\x03\x06\x04\x0b\x0c\x11\x0d\x0d\x03\x04\x04\x06\x05\x05\x03\x04\x04\x03\x02\x04\x04\x04\x04\x04\x06\x05\x03\x03\x04\x04\x04\x04\x06\x06\x03\x04\x0e\x04\x03\x04\x04\x06\x06\x02\x03\x03\x05\x05\x03\x05\x02\x03\x06\x07\x05\x05\x05\x05\x03\x03\x06\x04\x08\x04\x03\x04\x05\x06\x08\x08\x08\x08\x08\x08\x08\x08\x05\x07\x08\x06\x05\x07\x05\x04\x02\x03\x06\x03\x04\x04\x06\x08\x05\x04\x03\x05\x07\x06\x04\x08\x05\x04\x08\x0b\x09\x07\x09\x06\x06\x08\x04\x08\x05\x03\x05\x06\x07\x07\x05\x06\x04\x04\x07\x03\x06\x07\x06\x07\x08\x09\x08\x07\x0f\x0d\x08\x06\x08\x06\x0c\x0b\x0d\x11\x11\x12\x05\x05\x05\x05\x05\x03\x07\x04\x04\x03\x06\x06\x05\x05\x05\x05\x04\x05\x05\x05\x05\x05\x05\x05\x05\x04\x05\x05\x05\x05\x05\x05\x06\x05\x05\x05\x05\x04\x05\x05\x05\x05\x08\x07\x08\x05\x05\x05\x05\x04\x05\x05\x05\x05\x05\x05\x06\x05\x06\x04\x05\x04\x05\x04\x05\x08\x04\x06\x04\x05\x05\x06\x06\x03\x06\x08\x06\x06\x06\x04\x05\x05\x05\x06\x06\x05\x05\x07\x04\x05\x07\x04\x09\x03\x04\x05\x09\x03\x03\x04\x04\x06\x0f\x10\x08\x08\x0a\x0b\x0b\x04\x08\x06\x07\x05\x08\x05\x06\x07\x05\x06\x04\x06\x0a\x09\x04\x07\x06\x04\x06\x04\x06\x05\x05\x04\x04\x05\x04\x05\x05\x07\x07\x05\x05\x06\x07\x03\x08\x06\x06\x06\x05\x04\x06\x07\x0b\x0b\x08\x0a\x06\x0e\x0f\x05\x05\x08\x05\x06\x04\x04\x06\x06\x04\x04\x05\x07\x05\x06\x03\x02\x07\x05\x07\x03\x05\x07\x06\x03\x05\x05\x04\x07\x0b\x05\x03\x07\x05\x03\x06\x0d\x06\x04\x06\x06\x06\x04\x03\x05\x08\x08\x07\x09\x0e\x09\x0e\x0f\x10\x08\x06\x06\x04\x04\x04\x06\x05\x04\x05\x05\x05\x07\x04\x08\x05\x04\x06\x06\x06\x04\x05\x06\x03\x04\x02\x05\x03\x02\x06\x03\x06\x02\x08\x03\x03\x06\x05\x05\x08\x06\x04\x06\x06\x03\x04\x05\x04\x04\x06\x05\x04\x07\x05\x06\x07\x05\x0a\x0b\x06\x06\x05\x07\x08\x05\x05\x04\x05\x04\x03\x03\x04\x04\x04\x05\x0b\x0c\x0d\x03\x06\x06\x05\x06\x03\x05\x05\x04\x05\x05\x04\x04\x06\x04\x05\x08\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x05\x05\x04\x02\x03\x06\x05\x06\x03\x06\x05\x03\x04\x02\x03\x03\x04\x08\x03\x05\x06\x07\x08\x04\x06\x03\x02\x03\x05\x04\x02\x03\x03\x03\x03\x04\x08\x03\x04\x05\x05\x04\x05\x04\x04\x05\x05\x02\x04\x05\x05\x06\x07\x09\x06\x06\x09\x0a\x07\x06\x09\x04\x04\x06\x04\x06\x06\x04\x07\x05\x04\x05\x06\x09\x06\x06\x03\x08\x08\x05\x06\x0d\x0e\x04\x06\x04\x06\x06\x06\x06\x06\x02\x05\x03\x04\x05\x03\x03\x06\x02\x06\x05\x06\x05\x05\x05\x05\x08\x08\x05\x04\x05\x02\x06\x05\x08\x06\x03\x06\x08\x08\x08\x07\x04\x05\x04\x04\x05\x06\x04\x04\x05\x07\x05\x06\x05\x02\x06\x05\x04\x05\x03\x03\x05\x04\x04\x06\x05\x05\x06\x06\x03\x03\x06\x04\x04\x04\x04\x05\x04\x06\x05\x02\x03\x04\x06\x08\x06\x06\x04\x05\x06\x03\x05\x04\x05\x07\x06\x06\x06\x06\x07\x06\x03\x06\x04\x05\x05\x05\x06\x06\x05\x07\x07\x06\x06\x05\x04\x03\x04\x05\x06\x07\x08\x04\x02\x09\x0d\x0f\x0d\x0e\x0e\x0f\x11\x13\x0e\x03\x03\x04\x08\x03\x05\x06\x07\x08\x04\x06\x0a\x07\x09\x0a\x07\x07\x06\x06\x03\x02\x03\x05\x05\x06\x05\x04\x02\x05\x08\x06\x05\x06\x06\x0a\x03\x04\x08\x03\x04\x05\x05\x05\x05\x05\x0d\x12\x0a\x0e\x0d\x0e\x05\x04\x06\x07\x06\x06\x03\x07\x04\x04\x06\x05\x08\x05\x06\x03\x05\x06\x04\x03\x04\x05\x05\x04\x05\x06\x06\x02\x04\x05\x05\x06\x06\x06\x07\x06\x04\x05\x05\x08\x07\x09\x04\x05\x04\x04\x04\x07\x03\x06\x0a\x0a\x08\x06\x06\x03\x05\x0d\x03\x03\x05\x03\x06\x06\x06\x05\x06\x06\x07\x04\x04\x06\x06\x04\x02\x04\x06\x02\x08\x05\x03\x03\x04\x0a\x0f\x03\x03\x04\x0b\x06\x06\x05\x06\x04\x03\x04\x05\x05\x07\x05\x07\x08\x04\x05\x06\x04\x06\x06\x05\x08\x04\x03\x05\x02\x05\x06\x05\x07\x05\x06\x06\x05\x06\x07\x03\x03\x03\x04\x05\x09\x04\x05\x03\x04\x05\x05\x05\x02\x03\x04\x03\x04\x05\x03\x05\x04\x03\x0a\x0f\x04\x05\x09\x04\x05\x05\x03\x05\x06\x04\x04\x03\x05\x06\x08\x07\x07\x07\x05\x07\x07\x07\x04\x09\x06\x05\x07\x03\x06\x04\x05\x07\x05\x05\x06\x06\x0b\x05\x06\x03\x06\x04\x04\x09\x0e\x04\x05\x06\x05\x05\x07\x07\x04\x05\x05\x07\x09\x0a\x05\x07\x04\x05\x05\x07\x09\x0a\x04\x06\x04\x0d\x0f\x0e\x10\x02\x03\x06\x05\x06\x06\x04\x06\x04\x04\x07\x06\x04\x04\x07\x06\x07\x05\x05\x06\x05\x07\x06\x02\x06\x04\x04\x05\x03\x05\x06\x04\x04\x06\x05\x05\x03\x04\x06\x03\x05\x03\x04\x05\x05\x07\x05\x03\x05\x05\x07\x04\x06\x04\x04\x05\x05\x02\x05\x03\x05\x07\x04\x04\x06\x04\x07\x03\x04\x06\x04\x06\x06\x08\x04\x05\x03\x04\x08\x06\x05\x04\x03\x06\x06\x06\x04\x07\x03\x03\x04\x06\x05\x02\x09\x03\x06\x07\x06\x04\x08\x05\x07\x06\x06\x05\x06\x07\x07\x02\x08\x04\x05\x02\x03\x04\x05\x03\x04\x0a\x0b\x06\x0b\x08\x08\x07\x05\x06\x04\x05\x06\x04\x08\x08\x08\x04\x06\x05\x06\x04\x03\x06\x03\x04\x04\x06\x04\x0b\x07\x05\x07\x04\x05\x04\x06\x05\x04\x04\x06\x05\x08\x04\x05\x05\x06\x05\x04\x06\x05\x07\x05\x06\x06\x06\x06\x07\x06\x05\x06\x05\x09\x05\x05\x06\x06\x05\x07\x07\x06\x06\x05\x04\x03\x04\x07\x05\x06\x04\x04\x07\x08\x05\x04\x03\x06\x06\x03\x05\x05\x06\x03\x04\x0a\x0e\x10\x0e\x0f\x11\x10\x0f\x0f\x04\x0c\x05\x05\x03\x06\x0a\x05\x05\x05\x05\x05\x04\x06\x07\x04\x06\x08\x05\x06\x04\x03\x04\x05\x06\x06\x06\x04\x05\x05\x08\x07\x02\x06\x05\x02\x03\x04\x06\x05\x03\x06\x05\x04\x05\x06\x08\x05\x03\x04\x05\x05\x05\x06\x05\x07\x04\x04\x06\x08\x05\x04\x03\x06\x05\x06\x04\x08\x0d\x03\x05\x06\x06\x03\x06\x04\x05\x04\x05\x04\x05\x05\x07\x07\x05\x0d\x06\x08\x04\x05\x03\x04\x05\x06\x03\x04\x06\x04\x06\x09\x04\x05\x06\x05\x06\x05\x06\x08\x0a\x05\x06\x08\x0a\x03\x06\x06\x04\x05\x04\x06\x06\x06\x04\x05\x0f\x0b\x05\x03\x04\x06\x04\x07\x07\x05\x05\x07\x07\x06\x08\x09\x09\x0a\x06\x06\x06\x04\x0a\x0b\x06\x0b\x08\x08\x07\x03\x04\x03\x04\x04\x04\x04\x06\x07\x04\x07\x07\x07\x07\x07\x05\x05\x07\x06\x08\x09\x09\x0a\x06\x06\x06\x05\x06\x05\x07\x06\x05\x06\x03\x04\x06\x06\x03\x04\x06\x03\x06\x09\x05\x08\x06\x0b\x08\x06\x05\x06\x05\x05\x05\x06\x08\x06\x04\x04\x03\x06\x06\x04\x07\x04\x06\x05\x08\x0c\x0c\x0e\x09\x0d\x0f\x06\x04\x08\x07\x05\x07\x08\x04\x04\x05\x06\x05\x10\x11\x04\x04\x06\x04\x05\x06\x05\x03\x05\x06\x05\x06\x03\x06\x05\x05\x05\x06\x08\x06\x05\x05\x03\x05\x04\x07\x0b\x0d\x0e\x05\x04\x05\x07\x0a\x06\x08\x06\x05\x05\x04\x05\x06\x04\x05\x05\x04\x07\x04\x04\x05\x05\x06\x0a\x08\x0a\x06\x05\x09\x04\x06\x08\x0c\x0d\x0c\x0d\x08\x0f\x10\x03\x05\x03\x06\x05\x06\x06\x04\x03\x05\x05\x05\x04\x05\x05\x04\x06\x06\x06\x06\x07\x05\x06\x05\x06\x06\x03\x04\x02\x02\x06\x04\x04\x05\x04\x05\x03\x05\x05\x02\x05\x05\x04\x04\x05\x04\x06\x06\x05\x05\x04\x06\x06\x05\x04\x06\x06\x04\x05\x03\x03\x03\x04\x04\x04\x04\x04\x06\x06\x03\x04\x06\x04\x03\x04\x07\x04\x04\x03\x04" -var _html5entitiesCodePoints = [...]int{198, 38, 193, 194, 1040, 120068, 192, 913, 256, 10835, 260, 120120, 8289, 197, 119964, 8788, 195, 196, 8726, 10983, 8966, 1041, 8757, 8492, 914, 120069, 120121, 728, 8492, 8782, 1063, 169, 262, 8914, 8517, 8493, 268, 199, 264, 8752, 266, 184, 183, 8493, 935, 8857, 8854, 8853, 8855, 8754, 8221, 8217, 8759, 10868, 8801, 8751, 8750, 8450, 8720, 8755, 10799, 119966, 8915, 8781, 8517, 10513, 1026, 1029, 1039, 8225, 8609, 10980, 270, 1044, 8711, 916, 120071, 180, 729, 733, 96, 732, 8900, 8518, 120123, 168, 8412, 8784, 8751, 168, 8659, 8656, 8660, 10980, 10232, 10234, 10233, 8658, 8872, 8657, 8661, 8741, 8595, 10515, 8693, 785, 10576, 10590, 8637, 10582, 10591, 8641, 10583, 8868, 8615, 8659, 119967, 272, 330, 208, 201, 282, 202, 1069, 278, 120072, 200, 8712, 274, 9723, 9643, 280, 120124, 917, 10869, 8770, 8652, 8496, 10867, 919, 203, 8707, 8519, 1060, 120073, 9724, 9642, 120125, 8704, 8497, 8497, 1027, 62, 915, 988, 286, 290, 284, 1043, 288, 120074, 8921, 120126, 8805, 8923, 8807, 10914, 8823, 10878, 8819, 119970, 8811, 1066, 711, 94, 292, 8460, 8459, 8461, 9472, 8459, 294, 8782, 8783, 1045, 306, 1025, 205, 206, 1048, 304, 8465, 204, 8465, 298, 8520, 8658, 8748, 8747, 8898, 8291, 8290, 302, 120128, 921, 8464, 296, 1030, 207, 308, 1049, 120077, 120129, 119973, 1032, 1028, 1061, 1036, 922, 310, 1050, 120078, 120130, 119974, 1033, 60, 313, 923, 10218, 8466, 8606, 317, 315, 1051, 10216, 8592, 8676, 8646, 8968, 10214, 10593, 8643, 10585, 8970, 8596, 10574, 8867, 8612, 10586, 8882, 10703, 8884, 10577, 10592, 8639, 10584, 8636, 10578, 8656, 8660, 8922, 8806, 8822, 10913, 10877, 8818, 120079, 8920, 8666, 319, 10229, 10231, 10230, 10232, 10234, 10233, 120131, 8601, 8600, 8466, 8624, 321, 8810, 10501, 1052, 8287, 8499, 120080, 8723, 120132, 8499, 924, 1034, 323, 327, 325, 1053, 8203, 8203, 8203, 8203, 8811, 8810, 10, 120081, 8288, 160, 8469, 10988, 8802, 8813, 8742, 8713, 8800, 877, 24, 8708, 8815, 8817, 880, 24, 881, 24, 8825, 1087, 24, 8821, 878, 24, 878, 24, 8938, 1070, 24, 8940, 8814, 8816, 8824, 881, 24, 1087, 24, 8820, 1091, 24, 1091, 24, 8832, 1092, 24, 8928, 8716, 8939, 1070, 24, 8941, 884, 24, 8930, 884, 24, 8931, 883, 402, 8840, 8833, 1092, 24, 8929, 883, 24, 883, 402, 8841, 8769, 8772, 8775, 8777, 8740, 119977, 209, 925, 338, 211, 212, 1054, 336, 120082, 210, 332, 937, 927, 120134, 8220, 8216, 10836, 119978, 216, 213, 10807, 214, 8254, 9182, 9140, 9180, 8706, 1055, 120083, 934, 928, 177, 8460, 8473, 10939, 8826, 10927, 8828, 8830, 8243, 8719, 8759, 8733, 119979, 936, 34, 120084, 8474, 119980, 10512, 174, 340, 10219, 8608, 10518, 344, 342, 1056, 8476, 8715, 8651, 10607, 8476, 929, 10217, 8594, 8677, 8644, 8969, 10215, 10589, 8642, 10581, 8971, 8866, 8614, 10587, 8883, 10704, 8885, 10575, 10588, 8638, 10580, 8640, 10579, 8658, 8477, 10608, 8667, 8475, 8625, 10740, 1065, 1064, 1068, 346, 10940, 352, 350, 348, 1057, 120086, 8595, 8592, 8594, 8593, 931, 8728, 120138, 8730, 9633, 8851, 8847, 8849, 8848, 8850, 8852, 119982, 8902, 8912, 8912, 8838, 8827, 10928, 8829, 8831, 8715, 8721, 8913, 8835, 8839, 8913, 222, 8482, 1035, 1062, 9, 932, 356, 354, 1058, 120087, 8756, 920, 828, 202, 8201, 8764, 8771, 8773, 8776, 120139, 8411, 119983, 358, 218, 8607, 10569, 1038, 364, 219, 1059, 368, 120088, 217, 362, 95, 9183, 9141, 9181, 8899, 8846, 370, 120140, 8593, 10514, 8645, 8597, 10606, 8869, 8613, 8657, 8661, 8598, 8599, 978, 933, 366, 119984, 360, 220, 8875, 10987, 1042, 8873, 10982, 8897, 8214, 8214, 8739, 124, 10072, 8768, 8202, 120089, 120141, 119985, 8874, 372, 8896, 120090, 120142, 119986, 120091, 926, 120143, 119987, 1071, 1031, 1070, 221, 374, 1067, 120092, 120144, 119988, 376, 1046, 377, 381, 1047, 379, 8203, 918, 8488, 8484, 119989, 225, 259, 8766, 876, 19, 8767, 226, 180, 1072, 230, 8289, 120094, 224, 8501, 8501, 945, 257, 10815, 38, 8743, 10837, 10844, 10840, 10842, 8736, 10660, 8736, 8737, 10664, 10665, 10666, 10667, 10668, 10669, 10670, 10671, 8735, 8894, 10653, 8738, 197, 9084, 261, 120146, 8776, 10864, 10863, 8778, 8779, 39, 8776, 8778, 229, 119990, 42, 8776, 8781, 227, 228, 8755, 10769, 10989, 8780, 1014, 8245, 8765, 8909, 8893, 8965, 8965, 9141, 9142, 8780, 1073, 8222, 8757, 8757, 10672, 1014, 8492, 946, 8502, 8812, 120095, 8898, 9711, 8899, 10752, 10753, 10754, 10758, 9733, 9661, 9651, 10756, 8897, 8896, 10509, 10731, 9642, 9652, 9662, 9666, 9656, 9251, 9618, 9617, 9619, 9608, 6, 421, 880, 421, 8976, 120147, 8869, 8869, 8904, 9559, 9556, 9558, 9555, 9552, 9574, 9577, 9572, 9575, 9565, 9562, 9564, 9561, 9553, 9580, 9571, 9568, 9579, 9570, 9567, 10697, 9557, 9554, 9488, 9484, 9472, 9573, 9576, 9516, 9524, 8863, 8862, 8864, 9563, 9560, 9496, 9492, 9474, 9578, 9569, 9566, 9532, 9508, 9500, 8245, 728, 166, 119991, 8271, 8765, 8909, 92, 10693, 10184, 8226, 8226, 8782, 10926, 8783, 8783, 263, 8745, 10820, 10825, 10827, 10823, 10816, 874, 5024, 8257, 711, 10829, 269, 231, 265, 10828, 10832, 267, 184, 10674, 162, 183, 120096, 1095, 10003, 10003, 967, 9675, 10691, 710, 8791, 8634, 8635, 174, 9416, 8859, 8858, 8861, 8791, 10768, 10991, 10690, 9827, 9827, 58, 8788, 8788, 44, 64, 8705, 8728, 8705, 8450, 8773, 10861, 8750, 120148, 8720, 169, 8471, 8629, 10007, 119992, 10959, 10961, 10960, 10962, 8943, 10552, 10549, 8926, 8927, 8630, 10557, 8746, 10824, 10822, 10826, 8845, 10821, 874, 5024, 8631, 10556, 8926, 8927, 8910, 8911, 164, 8630, 8631, 8910, 8911, 8754, 8753, 9005, 8659, 10597, 8224, 8504, 8595, 8208, 8867, 10511, 733, 271, 1076, 8518, 8225, 8650, 10871, 176, 948, 10673, 10623, 120097, 8643, 8642, 8900, 8900, 9830, 9830, 168, 989, 8946, 247, 247, 8903, 8903, 1106, 8990, 8973, 36, 120149, 729, 8784, 8785, 8760, 8724, 8865, 8966, 8595, 8650, 8643, 8642, 10512, 8991, 8972, 119993, 1109, 10742, 273, 8945, 9663, 9662, 8693, 10607, 10662, 1119, 10239, 10871, 8785, 233, 10862, 283, 8790, 234, 8789, 1101, 279, 8519, 8786, 120098, 10906, 232, 10902, 10904, 10905, 9191, 8467, 10901, 10903, 275, 8709, 8709, 8709, 8195, 8196, 8197, 331, 8194, 281, 120150, 8917, 10723, 10865, 949, 949, 1013, 8790, 8789, 8770, 10902, 10901, 61, 8799, 8801, 10872, 10725, 8787, 10609, 8495, 8784, 8770, 951, 240, 235, 8364, 33, 8707, 8496, 8519, 8786, 1092, 9792, 64259, 64256, 64260, 120099, 64257, 10, 06, 9837, 64258, 9649, 402, 120151, 8704, 8916, 10969, 10765, 189, 8531, 188, 8533, 8537, 8539, 8532, 8534, 190, 8535, 8540, 8536, 8538, 8541, 8542, 8260, 8994, 119995, 8807, 10892, 501, 947, 989, 10886, 287, 285, 1075, 289, 8805, 8923, 8805, 8807, 10878, 10878, 10921, 10880, 10882, 10884, 892, 5024, 10900, 120100, 8811, 8921, 8503, 1107, 8823, 10898, 10917, 10916, 8809, 10890, 10890, 10888, 10888, 8809, 8935, 120152, 96, 8458, 8819, 10894, 10896, 62, 10919, 10874, 8919, 10645, 10876, 10886, 10616, 8919, 8923, 10892, 8823, 8819, 880, 5024, 880, 5024, 8660, 8202, 189, 8459, 1098, 8596, 10568, 8621, 8463, 293, 9829, 9829, 8230, 8889, 120101, 10533, 10534, 8703, 8763, 8617, 8618, 120153, 8213, 119997, 8463, 295, 8259, 8208, 237, 8291, 238, 1080, 1077, 161, 8660, 120102, 236, 8520, 10764, 8749, 10716, 8489, 307, 299, 8465, 8464, 8465, 305, 8887, 437, 8712, 8453, 8734, 10717, 305, 8747, 8890, 8484, 8890, 10775, 10812, 1105, 303, 120154, 953, 10812, 191, 119998, 8712, 8953, 8949, 8948, 8947, 8712, 8290, 297, 1110, 239, 309, 1081, 120103, 567, 120155, 119999, 1112, 1108, 954, 1008, 311, 1082, 120104, 312, 1093, 1116, 120156, 120000, 8666, 8656, 10523, 10510, 8806, 10891, 10594, 314, 10676, 8466, 955, 10216, 10641, 10216, 10885, 171, 8592, 8676, 10527, 10525, 8617, 8619, 10553, 10611, 8610, 10923, 10521, 10925, 1092, 5024, 10508, 10098, 123, 91, 10635, 10639, 10637, 318, 316, 8968, 123, 1083, 10550, 8220, 8222, 10599, 10571, 8626, 8804, 8592, 8610, 8637, 8636, 8647, 8596, 8646, 8651, 8621, 8907, 8922, 8804, 8806, 10877, 10877, 10920, 10879, 10881, 10883, 892, 5024, 10899, 10885, 8918, 8922, 10891, 8822, 8818, 10620, 8970, 120105, 8822, 10897, 8637, 8636, 10602, 9604, 1113, 8810, 8647, 8990, 10603, 9722, 320, 9136, 9136, 8808, 10889, 10889, 10887, 10887, 8808, 8934, 10220, 8701, 10214, 10229, 10231, 10236, 10230, 8619, 8620, 10629, 120157, 10797, 10804, 8727, 95, 9674, 9674, 10731, 40, 10643, 8646, 8991, 8651, 10605, 8206, 8895, 8249, 120001, 8624, 8818, 10893, 10895, 91, 8216, 8218, 322, 60, 10918, 10873, 8918, 8907, 8905, 10614, 10875, 10646, 9667, 8884, 9666, 10570, 10598, 880, 5024, 880, 5024, 8762, 175, 9794, 10016, 10016, 8614, 8614, 8615, 8612, 8613, 9646, 10793, 1084, 8212, 8737, 120106, 8487, 181, 8739, 42, 10992, 183, 8722, 8863, 8760, 10794, 10971, 8230, 8723, 8871, 120158, 8723, 120002, 8766, 956, 8888, 8888, 892, 24, 881, 402, 881, 24, 8653, 8654, 892, 24, 881, 402, 881, 24, 8655, 8879, 8878, 8711, 324, 873, 402, 8777, 1086, 24, 877, 24, 329, 8777, 9838, 9838, 8469, 160, 878, 24, 878, 24, 10819, 328, 326, 8775, 1086, 24, 10818, 1085, 8211, 8800, 8663, 10532, 8599, 8599, 878, 24, 8802, 10536, 877, 24, 8708, 8708, 120107, 880, 24, 8817, 8817, 880, 24, 1087, 24, 1087, 24, 8821, 8815, 8815, 8654, 8622, 10994, 8715, 8956, 8954, 8715, 1114, 8653, 880, 24, 8602, 8229, 8816, 8602, 8622, 8816, 880, 24, 1087, 24, 1087, 24, 8814, 8820, 8814, 8938, 8940, 8740, 120159, 172, 8713, 895, 24, 894, 24, 8713, 8951, 8950, 8716, 8716, 8958, 8957, 8742, 8742, 1100, 421, 870, 24, 10772, 8832, 8928, 1092, 24, 8832, 1092, 24, 8655, 8603, 1054, 24, 860, 24, 8603, 8939, 8941, 8833, 8929, 1092, 24, 120003, 8740, 8742, 8769, 8772, 8772, 8740, 8742, 8930, 8931, 8836, 1094, 24, 8840, 883, 402, 8840, 1094, 24, 8833, 1092, 24, 8837, 1095, 24, 8841, 883, 402, 8841, 1095, 24, 8825, 241, 8824, 8938, 8940, 8939, 8941, 957, 35, 8470, 8199, 8877, 10500, 878, 402, 8876, 880, 402, 6, 402, 10718, 10498, 880, 402, 6, 402, 888, 402, 10499, 888, 402, 876, 402, 8662, 10531, 8598, 8598, 10535, 9416, 243, 8859, 8858, 244, 1086, 8861, 337, 10808, 8857, 10684, 339, 10687, 120108, 731, 242, 10689, 10677, 937, 8750, 8634, 10686, 10683, 8254, 10688, 333, 969, 959, 10678, 8854, 120160, 10679, 10681, 8853, 8744, 8635, 10845, 8500, 8500, 170, 186, 8886, 10838, 10839, 10843, 8500, 248, 8856, 245, 8855, 10806, 246, 9021, 8741, 182, 8741, 10995, 11005, 8706, 1087, 37, 46, 8240, 8869, 8241, 120109, 966, 981, 8499, 9742, 960, 8916, 982, 8463, 8462, 8463, 43, 10787, 8862, 10786, 8724, 10789, 10866, 177, 10790, 10791, 177, 10773, 120161, 163, 8826, 10931, 10935, 8828, 10927, 8826, 10935, 8828, 10927, 10937, 10933, 8936, 8830, 8242, 8473, 10933, 10937, 8936, 8719, 9006, 8978, 8979, 8733, 8733, 8830, 8880, 120005, 968, 8200, 120110, 10764, 120162, 8279, 120006, 8461, 10774, 63, 8799, 34, 8667, 8658, 10524, 10511, 10596, 876, 17, 341, 8730, 10675, 10217, 10642, 10661, 10217, 187, 8594, 10613, 8677, 10528, 10547, 10526, 8618, 8620, 10565, 10612, 8611, 8605, 10522, 8758, 8474, 10509, 10099, 125, 93, 10636, 10638, 10640, 345, 343, 8969, 125, 1088, 10551, 10601, 8221, 8221, 8627, 8476, 8475, 8476, 8477, 9645, 174, 10621, 8971, 120111, 8641, 8640, 10604, 961, 1009, 8594, 8611, 8641, 8640, 8644, 8652, 8649, 8605, 8908, 730, 8787, 8644, 8652, 8207, 9137, 9137, 10990, 10221, 8702, 10215, 10630, 120163, 10798, 10805, 41, 10644, 10770, 8649, 8250, 120007, 8625, 93, 8217, 8217, 8908, 8906, 9657, 8885, 9656, 10702, 10600, 8478, 347, 8218, 8827, 10932, 10936, 353, 8829, 10928, 351, 349, 10934, 10938, 8937, 10771, 8831, 1089, 8901, 8865, 10854, 8664, 10533, 8600, 8600, 167, 59, 10537, 8726, 8726, 10038, 120112, 8994, 9839, 1097, 1096, 8739, 8741, 173, 963, 962, 962, 8764, 10858, 8771, 8771, 10910, 10912, 10909, 10911, 8774, 10788, 10610, 8592, 8726, 10803, 10724, 8739, 8995, 10922, 10924, 1092, 5024, 1100, 47, 10692, 9023, 120164, 9824, 9824, 8741, 8851, 885, 5024, 8852, 885, 5024, 8847, 8849, 8847, 8849, 8848, 8850, 8848, 8850, 9633, 9633, 9642, 9642, 8594, 120008, 8726, 8995, 8902, 9734, 9733, 1013, 981, 175, 8834, 10949, 10941, 8838, 10947, 10945, 10955, 8842, 10943, 10617, 8834, 8838, 10949, 8842, 10955, 10951, 10965, 10963, 8827, 10936, 8829, 10928, 10938, 10934, 8937, 8831, 8721, 9834, 8835, 185, 178, 179, 10950, 10942, 10968, 8839, 10948, 10185, 10967, 10619, 10946, 10956, 8843, 10944, 8835, 8839, 10950, 8843, 10956, 10952, 10964, 10966, 8665, 10534, 8601, 8601, 10538, 223, 8982, 964, 9140, 357, 355, 1090, 8411, 8981, 120113, 8756, 8756, 952, 977, 977, 8776, 8764, 8201, 8776, 8764, 254, 732, 215, 8864, 10801, 10800, 8749, 10536, 8868, 9014, 10993, 120165, 10970, 10537, 8244, 8482, 9653, 9663, 9667, 8884, 8796, 9657, 8885, 9708, 8796, 10810, 10809, 10701, 10811, 9186, 120009, 1094, 1115, 359, 8812, 8606, 8608, 8657, 10595, 250, 8593, 1118, 365, 251, 1091, 8645, 369, 10606, 10622, 120114, 249, 8639, 8638, 9600, 8988, 8988, 8975, 9720, 363, 168, 371, 120166, 8593, 8597, 8639, 8638, 8846, 965, 978, 965, 8648, 8989, 8989, 8974, 367, 9721, 120010, 8944, 361, 9653, 9652, 8648, 252, 10663, 8661, 10984, 10985, 8872, 10652, 1013, 1008, 8709, 981, 982, 8733, 8597, 1009, 962, 884, 5024, 1095, 5024, 884, 5024, 1095, 5024, 977, 8882, 8883, 1074, 8866, 8744, 8891, 8794, 8942, 124, 124, 120115, 8882, 883, 402, 883, 402, 120167, 8733, 8883, 120011, 1095, 5024, 884, 5024, 1095, 5024, 884, 5024, 10650, 373, 10847, 8743, 8793, 8472, 120116, 120168, 8472, 8768, 8768, 120012, 8898, 9711, 8899, 9661, 120117, 10234, 10231, 958, 10232, 10229, 10236, 8955, 10752, 120169, 10753, 10754, 10233, 10230, 120013, 10758, 10756, 9651, 8897, 8896, 253, 1103, 375, 1099, 165, 120118, 1111, 120170, 120014, 1102, 255, 378, 382, 1079, 380, 8488, 950, 120119, 1078, 8669, 120171, 120015, 8205, 8204} -var _html5entitiesCodePointsIndex = "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x02\x02\x01\x02\x01\x02\x02\x01\x02\x01\x01\x01\x01\x02\x02\x01\x02\x02\x01\x02\x01\x01\x01\x02\x01\x02\x01\x02\x01\x02\x01\x01\x02\x01\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x01\x01\x02\x02\x02\x01\x01\x01\x01\x01\x02\x01\x02\x02\x01\x01\x01\x01\x01\x01\x02\x02\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x02\x01\x01\x01\x02\x01\x01\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x01\x01\x01\x02\x01\x02\x01\x01\x02\x02\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x02\x02\x01\x01\x02\x02\x02\x01\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x01\x01\x01\x01\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01" -var _html5entitiesCharacters = [...]byte{0xc3, 0x86, 0x26, 0xc3, 0x81, 0xc3, 0x82, 0xd0, 0x90, 0xf0, 0x9d, 0x94, 0x84, 0xc3, 0x80, 0xce, 0x91, 0xc4, 0x80, 0xe2, 0xa9, 0x93, 0xc4, 0x84, 0xf0, 0x9d, 0x94, 0xb8, 0xe2, 0x81, 0xa1, 0xc3, 0x85, 0xf0, 0x9d, 0x92, 0x9c, 0xe2, 0x89, 0x94, 0xc3, 0x83, 0xc3, 0x84, 0xe2, 0x88, 0x96, 0xe2, 0xab, 0xa7, 0xe2, 0x8c, 0x86, 0xd0, 0x91, 0xe2, 0x88, 0xb5, 0xe2, 0x84, 0xac, 0xce, 0x92, 0xf0, 0x9d, 0x94, 0x85, 0xf0, 0x9d, 0x94, 0xb9, 0xcb, 0x98, 0xe2, 0x84, 0xac, 0xe2, 0x89, 0x8e, 0xd0, 0xa7, 0xc2, 0xa9, 0xc4, 0x86, 0xe2, 0x8b, 0x92, 0xe2, 0x85, 0x85, 0xe2, 0x84, 0xad, 0xc4, 0x8c, 0xc3, 0x87, 0xc4, 0x88, 0xe2, 0x88, 0xb0, 0xc4, 0x8a, 0xc2, 0xb8, 0xc2, 0xb7, 0xe2, 0x84, 0xad, 0xce, 0xa7, 0xe2, 0x8a, 0x99, 0xe2, 0x8a, 0x96, 0xe2, 0x8a, 0x95, 0xe2, 0x8a, 0x97, 0xe2, 0x88, 0xb2, 0xe2, 0x80, 0x9d, 0xe2, 0x80, 0x99, 0xe2, 0x88, 0xb7, 0xe2, 0xa9, 0xb4, 0xe2, 0x89, 0xa1, 0xe2, 0x88, 0xaf, 0xe2, 0x88, 0xae, 0xe2, 0x84, 0x82, 0xe2, 0x88, 0x90, 0xe2, 0x88, 0xb3, 0xe2, 0xa8, 0xaf, 0xf0, 0x9d, 0x92, 0x9e, 0xe2, 0x8b, 0x93, 0xe2, 0x89, 0x8d, 0xe2, 0x85, 0x85, 0xe2, 0xa4, 0x91, 0xd0, 0x82, 0xd0, 0x85, 0xd0, 0x8f, 0xe2, 0x80, 0xa1, 0xe2, 0x86, 0xa1, 0xe2, 0xab, 0xa4, 0xc4, 0x8e, 0xd0, 0x94, 0xe2, 0x88, 0x87, 0xce, 0x94, 0xf0, 0x9d, 0x94, 0x87, 0xc2, 0xb4, 0xcb, 0x99, 0xcb, 0x9d, 0x60, 0xcb, 0x9c, 0xe2, 0x8b, 0x84, 0xe2, 0x85, 0x86, 0xf0, 0x9d, 0x94, 0xbb, 0xc2, 0xa8, 0xe2, 0x83, 0x9c, 0xe2, 0x89, 0x90, 0xe2, 0x88, 0xaf, 0xc2, 0xa8, 0xe2, 0x87, 0x93, 0xe2, 0x87, 0x90, 0xe2, 0x87, 0x94, 0xe2, 0xab, 0xa4, 0xe2, 0x9f, 0xb8, 0xe2, 0x9f, 0xba, 0xe2, 0x9f, 0xb9, 0xe2, 0x87, 0x92, 0xe2, 0x8a, 0xa8, 0xe2, 0x87, 0x91, 0xe2, 0x87, 0x95, 0xe2, 0x88, 0xa5, 0xe2, 0x86, 0x93, 0xe2, 0xa4, 0x93, 0xe2, 0x87, 0xb5, 0xcc, 0x91, 0xe2, 0xa5, 0x90, 0xe2, 0xa5, 0x9e, 0xe2, 0x86, 0xbd, 0xe2, 0xa5, 0x96, 0xe2, 0xa5, 0x9f, 0xe2, 0x87, 0x81, 0xe2, 0xa5, 0x97, 0xe2, 0x8a, 0xa4, 0xe2, 0x86, 0xa7, 0xe2, 0x87, 0x93, 0xf0, 0x9d, 0x92, 0x9f, 0xc4, 0x90, 0xc5, 0x8a, 0xc3, 0x90, 0xc3, 0x89, 0xc4, 0x9a, 0xc3, 0x8a, 0xd0, 0xad, 0xc4, 0x96, 0xf0, 0x9d, 0x94, 0x88, 0xc3, 0x88, 0xe2, 0x88, 0x88, 0xc4, 0x92, 0xe2, 0x97, 0xbb, 0xe2, 0x96, 0xab, 0xc4, 0x98, 0xf0, 0x9d, 0x94, 0xbc, 0xce, 0x95, 0xe2, 0xa9, 0xb5, 0xe2, 0x89, 0x82, 0xe2, 0x87, 0x8c, 0xe2, 0x84, 0xb0, 0xe2, 0xa9, 0xb3, 0xce, 0x97, 0xc3, 0x8b, 0xe2, 0x88, 0x83, 0xe2, 0x85, 0x87, 0xd0, 0xa4, 0xf0, 0x9d, 0x94, 0x89, 0xe2, 0x97, 0xbc, 0xe2, 0x96, 0xaa, 0xf0, 0x9d, 0x94, 0xbd, 0xe2, 0x88, 0x80, 0xe2, 0x84, 0xb1, 0xe2, 0x84, 0xb1, 0xd0, 0x83, 0x3e, 0xce, 0x93, 0xcf, 0x9c, 0xc4, 0x9e, 0xc4, 0xa2, 0xc4, 0x9c, 0xd0, 0x93, 0xc4, 0xa0, 0xf0, 0x9d, 0x94, 0x8a, 0xe2, 0x8b, 0x99, 0xf0, 0x9d, 0x94, 0xbe, 0xe2, 0x89, 0xa5, 0xe2, 0x8b, 0x9b, 0xe2, 0x89, 0xa7, 0xe2, 0xaa, 0xa2, 0xe2, 0x89, 0xb7, 0xe2, 0xa9, 0xbe, 0xe2, 0x89, 0xb3, 0xf0, 0x9d, 0x92, 0xa2, 0xe2, 0x89, 0xab, 0xd0, 0xaa, 0xcb, 0x87, 0x5e, 0xc4, 0xa4, 0xe2, 0x84, 0x8c, 0xe2, 0x84, 0x8b, 0xe2, 0x84, 0x8d, 0xe2, 0x94, 0x80, 0xe2, 0x84, 0x8b, 0xc4, 0xa6, 0xe2, 0x89, 0x8e, 0xe2, 0x89, 0x8f, 0xd0, 0x95, 0xc4, 0xb2, 0xd0, 0x81, 0xc3, 0x8d, 0xc3, 0x8e, 0xd0, 0x98, 0xc4, 0xb0, 0xe2, 0x84, 0x91, 0xc3, 0x8c, 0xe2, 0x84, 0x91, 0xc4, 0xaa, 0xe2, 0x85, 0x88, 0xe2, 0x87, 0x92, 0xe2, 0x88, 0xac, 0xe2, 0x88, 0xab, 0xe2, 0x8b, 0x82, 0xe2, 0x81, 0xa3, 0xe2, 0x81, 0xa2, 0xc4, 0xae, 0xf0, 0x9d, 0x95, 0x80, 0xce, 0x99, 0xe2, 0x84, 0x90, 0xc4, 0xa8, 0xd0, 0x86, 0xc3, 0x8f, 0xc4, 0xb4, 0xd0, 0x99, 0xf0, 0x9d, 0x94, 0x8d, 0xf0, 0x9d, 0x95, 0x81, 0xf0, 0x9d, 0x92, 0xa5, 0xd0, 0x88, 0xd0, 0x84, 0xd0, 0xa5, 0xd0, 0x8c, 0xce, 0x9a, 0xc4, 0xb6, 0xd0, 0x9a, 0xf0, 0x9d, 0x94, 0x8e, 0xf0, 0x9d, 0x95, 0x82, 0xf0, 0x9d, 0x92, 0xa6, 0xd0, 0x89, 0x3c, 0xc4, 0xb9, 0xce, 0x9b, 0xe2, 0x9f, 0xaa, 0xe2, 0x84, 0x92, 0xe2, 0x86, 0x9e, 0xc4, 0xbd, 0xc4, 0xbb, 0xd0, 0x9b, 0xe2, 0x9f, 0xa8, 0xe2, 0x86, 0x90, 0xe2, 0x87, 0xa4, 0xe2, 0x87, 0x86, 0xe2, 0x8c, 0x88, 0xe2, 0x9f, 0xa6, 0xe2, 0xa5, 0xa1, 0xe2, 0x87, 0x83, 0xe2, 0xa5, 0x99, 0xe2, 0x8c, 0x8a, 0xe2, 0x86, 0x94, 0xe2, 0xa5, 0x8e, 0xe2, 0x8a, 0xa3, 0xe2, 0x86, 0xa4, 0xe2, 0xa5, 0x9a, 0xe2, 0x8a, 0xb2, 0xe2, 0xa7, 0x8f, 0xe2, 0x8a, 0xb4, 0xe2, 0xa5, 0x91, 0xe2, 0xa5, 0xa0, 0xe2, 0x86, 0xbf, 0xe2, 0xa5, 0x98, 0xe2, 0x86, 0xbc, 0xe2, 0xa5, 0x92, 0xe2, 0x87, 0x90, 0xe2, 0x87, 0x94, 0xe2, 0x8b, 0x9a, 0xe2, 0x89, 0xa6, 0xe2, 0x89, 0xb6, 0xe2, 0xaa, 0xa1, 0xe2, 0xa9, 0xbd, 0xe2, 0x89, 0xb2, 0xf0, 0x9d, 0x94, 0x8f, 0xe2, 0x8b, 0x98, 0xe2, 0x87, 0x9a, 0xc4, 0xbf, 0xe2, 0x9f, 0xb5, 0xe2, 0x9f, 0xb7, 0xe2, 0x9f, 0xb6, 0xe2, 0x9f, 0xb8, 0xe2, 0x9f, 0xba, 0xe2, 0x9f, 0xb9, 0xf0, 0x9d, 0x95, 0x83, 0xe2, 0x86, 0x99, 0xe2, 0x86, 0x98, 0xe2, 0x84, 0x92, 0xe2, 0x86, 0xb0, 0xc5, 0x81, 0xe2, 0x89, 0xaa, 0xe2, 0xa4, 0x85, 0xd0, 0x9c, 0xe2, 0x81, 0x9f, 0xe2, 0x84, 0xb3, 0xf0, 0x9d, 0x94, 0x90, 0xe2, 0x88, 0x93, 0xf0, 0x9d, 0x95, 0x84, 0xe2, 0x84, 0xb3, 0xce, 0x9c, 0xd0, 0x8a, 0xc5, 0x83, 0xc5, 0x87, 0xc5, 0x85, 0xd0, 0x9d, 0xe2, 0x80, 0x8b, 0xe2, 0x80, 0x8b, 0xe2, 0x80, 0x8b, 0xe2, 0x80, 0x8b, 0xe2, 0x89, 0xab, 0xe2, 0x89, 0xaa, 0xa, 0xf0, 0x9d, 0x94, 0x91, 0xe2, 0x81, 0xa0, 0xc2, 0xa0, 0xe2, 0x84, 0x95, 0xe2, 0xab, 0xac, 0xe2, 0x89, 0xa2, 0xe2, 0x89, 0xad, 0xe2, 0x88, 0xa6, 0xe2, 0x88, 0x89, 0xe2, 0x89, 0xa0, 0xe2, 0x89, 0x82, 0xcc, 0xb8, 0xe2, 0x88, 0x84, 0xe2, 0x89, 0xaf, 0xe2, 0x89, 0xb1, 0xe2, 0x89, 0xa7, 0xcc, 0xb8, 0xe2, 0x89, 0xab, 0xcc, 0xb8, 0xe2, 0x89, 0xb9, 0xe2, 0xa9, 0xbe, 0xcc, 0xb8, 0xe2, 0x89, 0xb5, 0xe2, 0x89, 0x8e, 0xcc, 0xb8, 0xe2, 0x89, 0x8f, 0xcc, 0xb8, 0xe2, 0x8b, 0xaa, 0xe2, 0xa7, 0x8f, 0xcc, 0xb8, 0xe2, 0x8b, 0xac, 0xe2, 0x89, 0xae, 0xe2, 0x89, 0xb0, 0xe2, 0x89, 0xb8, 0xe2, 0x89, 0xaa, 0xcc, 0xb8, 0xe2, 0xa9, 0xbd, 0xcc, 0xb8, 0xe2, 0x89, 0xb4, 0xe2, 0xaa, 0xa2, 0xcc, 0xb8, 0xe2, 0xaa, 0xa1, 0xcc, 0xb8, 0xe2, 0x8a, 0x80, 0xe2, 0xaa, 0xaf, 0xcc, 0xb8, 0xe2, 0x8b, 0xa0, 0xe2, 0x88, 0x8c, 0xe2, 0x8b, 0xab, 0xe2, 0xa7, 0x90, 0xcc, 0xb8, 0xe2, 0x8b, 0xad, 0xe2, 0x8a, 0x8f, 0xcc, 0xb8, 0xe2, 0x8b, 0xa2, 0xe2, 0x8a, 0x90, 0xcc, 0xb8, 0xe2, 0x8b, 0xa3, 0xe2, 0x8a, 0x82, 0xe2, 0x83, 0x92, 0xe2, 0x8a, 0x88, 0xe2, 0x8a, 0x81, 0xe2, 0xaa, 0xb0, 0xcc, 0xb8, 0xe2, 0x8b, 0xa1, 0xe2, 0x89, 0xbf, 0xcc, 0xb8, 0xe2, 0x8a, 0x83, 0xe2, 0x83, 0x92, 0xe2, 0x8a, 0x89, 0xe2, 0x89, 0x81, 0xe2, 0x89, 0x84, 0xe2, 0x89, 0x87, 0xe2, 0x89, 0x89, 0xe2, 0x88, 0xa4, 0xf0, 0x9d, 0x92, 0xa9, 0xc3, 0x91, 0xce, 0x9d, 0xc5, 0x92, 0xc3, 0x93, 0xc3, 0x94, 0xd0, 0x9e, 0xc5, 0x90, 0xf0, 0x9d, 0x94, 0x92, 0xc3, 0x92, 0xc5, 0x8c, 0xce, 0xa9, 0xce, 0x9f, 0xf0, 0x9d, 0x95, 0x86, 0xe2, 0x80, 0x9c, 0xe2, 0x80, 0x98, 0xe2, 0xa9, 0x94, 0xf0, 0x9d, 0x92, 0xaa, 0xc3, 0x98, 0xc3, 0x95, 0xe2, 0xa8, 0xb7, 0xc3, 0x96, 0xe2, 0x80, 0xbe, 0xe2, 0x8f, 0x9e, 0xe2, 0x8e, 0xb4, 0xe2, 0x8f, 0x9c, 0xe2, 0x88, 0x82, 0xd0, 0x9f, 0xf0, 0x9d, 0x94, 0x93, 0xce, 0xa6, 0xce, 0xa0, 0xc2, 0xb1, 0xe2, 0x84, 0x8c, 0xe2, 0x84, 0x99, 0xe2, 0xaa, 0xbb, 0xe2, 0x89, 0xba, 0xe2, 0xaa, 0xaf, 0xe2, 0x89, 0xbc, 0xe2, 0x89, 0xbe, 0xe2, 0x80, 0xb3, 0xe2, 0x88, 0x8f, 0xe2, 0x88, 0xb7, 0xe2, 0x88, 0x9d, 0xf0, 0x9d, 0x92, 0xab, 0xce, 0xa8, 0x22, 0xf0, 0x9d, 0x94, 0x94, 0xe2, 0x84, 0x9a, 0xf0, 0x9d, 0x92, 0xac, 0xe2, 0xa4, 0x90, 0xc2, 0xae, 0xc5, 0x94, 0xe2, 0x9f, 0xab, 0xe2, 0x86, 0xa0, 0xe2, 0xa4, 0x96, 0xc5, 0x98, 0xc5, 0x96, 0xd0, 0xa0, 0xe2, 0x84, 0x9c, 0xe2, 0x88, 0x8b, 0xe2, 0x87, 0x8b, 0xe2, 0xa5, 0xaf, 0xe2, 0x84, 0x9c, 0xce, 0xa1, 0xe2, 0x9f, 0xa9, 0xe2, 0x86, 0x92, 0xe2, 0x87, 0xa5, 0xe2, 0x87, 0x84, 0xe2, 0x8c, 0x89, 0xe2, 0x9f, 0xa7, 0xe2, 0xa5, 0x9d, 0xe2, 0x87, 0x82, 0xe2, 0xa5, 0x95, 0xe2, 0x8c, 0x8b, 0xe2, 0x8a, 0xa2, 0xe2, 0x86, 0xa6, 0xe2, 0xa5, 0x9b, 0xe2, 0x8a, 0xb3, 0xe2, 0xa7, 0x90, 0xe2, 0x8a, 0xb5, 0xe2, 0xa5, 0x8f, 0xe2, 0xa5, 0x9c, 0xe2, 0x86, 0xbe, 0xe2, 0xa5, 0x94, 0xe2, 0x87, 0x80, 0xe2, 0xa5, 0x93, 0xe2, 0x87, 0x92, 0xe2, 0x84, 0x9d, 0xe2, 0xa5, 0xb0, 0xe2, 0x87, 0x9b, 0xe2, 0x84, 0x9b, 0xe2, 0x86, 0xb1, 0xe2, 0xa7, 0xb4, 0xd0, 0xa9, 0xd0, 0xa8, 0xd0, 0xac, 0xc5, 0x9a, 0xe2, 0xaa, 0xbc, 0xc5, 0xa0, 0xc5, 0x9e, 0xc5, 0x9c, 0xd0, 0xa1, 0xf0, 0x9d, 0x94, 0x96, 0xe2, 0x86, 0x93, 0xe2, 0x86, 0x90, 0xe2, 0x86, 0x92, 0xe2, 0x86, 0x91, 0xce, 0xa3, 0xe2, 0x88, 0x98, 0xf0, 0x9d, 0x95, 0x8a, 0xe2, 0x88, 0x9a, 0xe2, 0x96, 0xa1, 0xe2, 0x8a, 0x93, 0xe2, 0x8a, 0x8f, 0xe2, 0x8a, 0x91, 0xe2, 0x8a, 0x90, 0xe2, 0x8a, 0x92, 0xe2, 0x8a, 0x94, 0xf0, 0x9d, 0x92, 0xae, 0xe2, 0x8b, 0x86, 0xe2, 0x8b, 0x90, 0xe2, 0x8b, 0x90, 0xe2, 0x8a, 0x86, 0xe2, 0x89, 0xbb, 0xe2, 0xaa, 0xb0, 0xe2, 0x89, 0xbd, 0xe2, 0x89, 0xbf, 0xe2, 0x88, 0x8b, 0xe2, 0x88, 0x91, 0xe2, 0x8b, 0x91, 0xe2, 0x8a, 0x83, 0xe2, 0x8a, 0x87, 0xe2, 0x8b, 0x91, 0xc3, 0x9e, 0xe2, 0x84, 0xa2, 0xd0, 0x8b, 0xd0, 0xa6, 0x9, 0xce, 0xa4, 0xc5, 0xa4, 0xc5, 0xa2, 0xd0, 0xa2, 0xf0, 0x9d, 0x94, 0x97, 0xe2, 0x88, 0xb4, 0xce, 0x98, 0xe2, 0x81, 0x9f, 0xe2, 0x80, 0x8a, 0xe2, 0x80, 0x89, 0xe2, 0x88, 0xbc, 0xe2, 0x89, 0x83, 0xe2, 0x89, 0x85, 0xe2, 0x89, 0x88, 0xf0, 0x9d, 0x95, 0x8b, 0xe2, 0x83, 0x9b, 0xf0, 0x9d, 0x92, 0xaf, 0xc5, 0xa6, 0xc3, 0x9a, 0xe2, 0x86, 0x9f, 0xe2, 0xa5, 0x89, 0xd0, 0x8e, 0xc5, 0xac, 0xc3, 0x9b, 0xd0, 0xa3, 0xc5, 0xb0, 0xf0, 0x9d, 0x94, 0x98, 0xc3, 0x99, 0xc5, 0xaa, 0x5f, 0xe2, 0x8f, 0x9f, 0xe2, 0x8e, 0xb5, 0xe2, 0x8f, 0x9d, 0xe2, 0x8b, 0x83, 0xe2, 0x8a, 0x8e, 0xc5, 0xb2, 0xf0, 0x9d, 0x95, 0x8c, 0xe2, 0x86, 0x91, 0xe2, 0xa4, 0x92, 0xe2, 0x87, 0x85, 0xe2, 0x86, 0x95, 0xe2, 0xa5, 0xae, 0xe2, 0x8a, 0xa5, 0xe2, 0x86, 0xa5, 0xe2, 0x87, 0x91, 0xe2, 0x87, 0x95, 0xe2, 0x86, 0x96, 0xe2, 0x86, 0x97, 0xcf, 0x92, 0xce, 0xa5, 0xc5, 0xae, 0xf0, 0x9d, 0x92, 0xb0, 0xc5, 0xa8, 0xc3, 0x9c, 0xe2, 0x8a, 0xab, 0xe2, 0xab, 0xab, 0xd0, 0x92, 0xe2, 0x8a, 0xa9, 0xe2, 0xab, 0xa6, 0xe2, 0x8b, 0x81, 0xe2, 0x80, 0x96, 0xe2, 0x80, 0x96, 0xe2, 0x88, 0xa3, 0x7c, 0xe2, 0x9d, 0x98, 0xe2, 0x89, 0x80, 0xe2, 0x80, 0x8a, 0xf0, 0x9d, 0x94, 0x99, 0xf0, 0x9d, 0x95, 0x8d, 0xf0, 0x9d, 0x92, 0xb1, 0xe2, 0x8a, 0xaa, 0xc5, 0xb4, 0xe2, 0x8b, 0x80, 0xf0, 0x9d, 0x94, 0x9a, 0xf0, 0x9d, 0x95, 0x8e, 0xf0, 0x9d, 0x92, 0xb2, 0xf0, 0x9d, 0x94, 0x9b, 0xce, 0x9e, 0xf0, 0x9d, 0x95, 0x8f, 0xf0, 0x9d, 0x92, 0xb3, 0xd0, 0xaf, 0xd0, 0x87, 0xd0, 0xae, 0xc3, 0x9d, 0xc5, 0xb6, 0xd0, 0xab, 0xf0, 0x9d, 0x94, 0x9c, 0xf0, 0x9d, 0x95, 0x90, 0xf0, 0x9d, 0x92, 0xb4, 0xc5, 0xb8, 0xd0, 0x96, 0xc5, 0xb9, 0xc5, 0xbd, 0xd0, 0x97, 0xc5, 0xbb, 0xe2, 0x80, 0x8b, 0xce, 0x96, 0xe2, 0x84, 0xa8, 0xe2, 0x84, 0xa4, 0xf0, 0x9d, 0x92, 0xb5, 0xc3, 0xa1, 0xc4, 0x83, 0xe2, 0x88, 0xbe, 0xe2, 0x88, 0xbe, 0xcc, 0xb3, 0xe2, 0x88, 0xbf, 0xc3, 0xa2, 0xc2, 0xb4, 0xd0, 0xb0, 0xc3, 0xa6, 0xe2, 0x81, 0xa1, 0xf0, 0x9d, 0x94, 0x9e, 0xc3, 0xa0, 0xe2, 0x84, 0xb5, 0xe2, 0x84, 0xb5, 0xce, 0xb1, 0xc4, 0x81, 0xe2, 0xa8, 0xbf, 0x26, 0xe2, 0x88, 0xa7, 0xe2, 0xa9, 0x95, 0xe2, 0xa9, 0x9c, 0xe2, 0xa9, 0x98, 0xe2, 0xa9, 0x9a, 0xe2, 0x88, 0xa0, 0xe2, 0xa6, 0xa4, 0xe2, 0x88, 0xa0, 0xe2, 0x88, 0xa1, 0xe2, 0xa6, 0xa8, 0xe2, 0xa6, 0xa9, 0xe2, 0xa6, 0xaa, 0xe2, 0xa6, 0xab, 0xe2, 0xa6, 0xac, 0xe2, 0xa6, 0xad, 0xe2, 0xa6, 0xae, 0xe2, 0xa6, 0xaf, 0xe2, 0x88, 0x9f, 0xe2, 0x8a, 0xbe, 0xe2, 0xa6, 0x9d, 0xe2, 0x88, 0xa2, 0xc3, 0x85, 0xe2, 0x8d, 0xbc, 0xc4, 0x85, 0xf0, 0x9d, 0x95, 0x92, 0xe2, 0x89, 0x88, 0xe2, 0xa9, 0xb0, 0xe2, 0xa9, 0xaf, 0xe2, 0x89, 0x8a, 0xe2, 0x89, 0x8b, 0x27, 0xe2, 0x89, 0x88, 0xe2, 0x89, 0x8a, 0xc3, 0xa5, 0xf0, 0x9d, 0x92, 0xb6, 0x2a, 0xe2, 0x89, 0x88, 0xe2, 0x89, 0x8d, 0xc3, 0xa3, 0xc3, 0xa4, 0xe2, 0x88, 0xb3, 0xe2, 0xa8, 0x91, 0xe2, 0xab, 0xad, 0xe2, 0x89, 0x8c, 0xcf, 0xb6, 0xe2, 0x80, 0xb5, 0xe2, 0x88, 0xbd, 0xe2, 0x8b, 0x8d, 0xe2, 0x8a, 0xbd, 0xe2, 0x8c, 0x85, 0xe2, 0x8c, 0x85, 0xe2, 0x8e, 0xb5, 0xe2, 0x8e, 0xb6, 0xe2, 0x89, 0x8c, 0xd0, 0xb1, 0xe2, 0x80, 0x9e, 0xe2, 0x88, 0xb5, 0xe2, 0x88, 0xb5, 0xe2, 0xa6, 0xb0, 0xcf, 0xb6, 0xe2, 0x84, 0xac, 0xce, 0xb2, 0xe2, 0x84, 0xb6, 0xe2, 0x89, 0xac, 0xf0, 0x9d, 0x94, 0x9f, 0xe2, 0x8b, 0x82, 0xe2, 0x97, 0xaf, 0xe2, 0x8b, 0x83, 0xe2, 0xa8, 0x80, 0xe2, 0xa8, 0x81, 0xe2, 0xa8, 0x82, 0xe2, 0xa8, 0x86, 0xe2, 0x98, 0x85, 0xe2, 0x96, 0xbd, 0xe2, 0x96, 0xb3, 0xe2, 0xa8, 0x84, 0xe2, 0x8b, 0x81, 0xe2, 0x8b, 0x80, 0xe2, 0xa4, 0x8d, 0xe2, 0xa7, 0xab, 0xe2, 0x96, 0xaa, 0xe2, 0x96, 0xb4, 0xe2, 0x96, 0xbe, 0xe2, 0x97, 0x82, 0xe2, 0x96, 0xb8, 0xe2, 0x90, 0xa3, 0xe2, 0x96, 0x92, 0xe2, 0x96, 0x91, 0xe2, 0x96, 0x93, 0xe2, 0x96, 0x88, 0x3d, 0xe2, 0x83, 0xa5, 0xe2, 0x89, 0xa1, 0xe2, 0x83, 0xa5, 0xe2, 0x8c, 0x90, 0xf0, 0x9d, 0x95, 0x93, 0xe2, 0x8a, 0xa5, 0xe2, 0x8a, 0xa5, 0xe2, 0x8b, 0x88, 0xe2, 0x95, 0x97, 0xe2, 0x95, 0x94, 0xe2, 0x95, 0x96, 0xe2, 0x95, 0x93, 0xe2, 0x95, 0x90, 0xe2, 0x95, 0xa6, 0xe2, 0x95, 0xa9, 0xe2, 0x95, 0xa4, 0xe2, 0x95, 0xa7, 0xe2, 0x95, 0x9d, 0xe2, 0x95, 0x9a, 0xe2, 0x95, 0x9c, 0xe2, 0x95, 0x99, 0xe2, 0x95, 0x91, 0xe2, 0x95, 0xac, 0xe2, 0x95, 0xa3, 0xe2, 0x95, 0xa0, 0xe2, 0x95, 0xab, 0xe2, 0x95, 0xa2, 0xe2, 0x95, 0x9f, 0xe2, 0xa7, 0x89, 0xe2, 0x95, 0x95, 0xe2, 0x95, 0x92, 0xe2, 0x94, 0x90, 0xe2, 0x94, 0x8c, 0xe2, 0x94, 0x80, 0xe2, 0x95, 0xa5, 0xe2, 0x95, 0xa8, 0xe2, 0x94, 0xac, 0xe2, 0x94, 0xb4, 0xe2, 0x8a, 0x9f, 0xe2, 0x8a, 0x9e, 0xe2, 0x8a, 0xa0, 0xe2, 0x95, 0x9b, 0xe2, 0x95, 0x98, 0xe2, 0x94, 0x98, 0xe2, 0x94, 0x94, 0xe2, 0x94, 0x82, 0xe2, 0x95, 0xaa, 0xe2, 0x95, 0xa1, 0xe2, 0x95, 0x9e, 0xe2, 0x94, 0xbc, 0xe2, 0x94, 0xa4, 0xe2, 0x94, 0x9c, 0xe2, 0x80, 0xb5, 0xcb, 0x98, 0xc2, 0xa6, 0xf0, 0x9d, 0x92, 0xb7, 0xe2, 0x81, 0x8f, 0xe2, 0x88, 0xbd, 0xe2, 0x8b, 0x8d, 0x5c, 0xe2, 0xa7, 0x85, 0xe2, 0x9f, 0x88, 0xe2, 0x80, 0xa2, 0xe2, 0x80, 0xa2, 0xe2, 0x89, 0x8e, 0xe2, 0xaa, 0xae, 0xe2, 0x89, 0x8f, 0xe2, 0x89, 0x8f, 0xc4, 0x87, 0xe2, 0x88, 0xa9, 0xe2, 0xa9, 0x84, 0xe2, 0xa9, 0x89, 0xe2, 0xa9, 0x8b, 0xe2, 0xa9, 0x87, 0xe2, 0xa9, 0x80, 0xe2, 0x88, 0xa9, 0xef, 0xb8, 0x80, 0xe2, 0x81, 0x81, 0xcb, 0x87, 0xe2, 0xa9, 0x8d, 0xc4, 0x8d, 0xc3, 0xa7, 0xc4, 0x89, 0xe2, 0xa9, 0x8c, 0xe2, 0xa9, 0x90, 0xc4, 0x8b, 0xc2, 0xb8, 0xe2, 0xa6, 0xb2, 0xc2, 0xa2, 0xc2, 0xb7, 0xf0, 0x9d, 0x94, 0xa0, 0xd1, 0x87, 0xe2, 0x9c, 0x93, 0xe2, 0x9c, 0x93, 0xcf, 0x87, 0xe2, 0x97, 0x8b, 0xe2, 0xa7, 0x83, 0xcb, 0x86, 0xe2, 0x89, 0x97, 0xe2, 0x86, 0xba, 0xe2, 0x86, 0xbb, 0xc2, 0xae, 0xe2, 0x93, 0x88, 0xe2, 0x8a, 0x9b, 0xe2, 0x8a, 0x9a, 0xe2, 0x8a, 0x9d, 0xe2, 0x89, 0x97, 0xe2, 0xa8, 0x90, 0xe2, 0xab, 0xaf, 0xe2, 0xa7, 0x82, 0xe2, 0x99, 0xa3, 0xe2, 0x99, 0xa3, 0x3a, 0xe2, 0x89, 0x94, 0xe2, 0x89, 0x94, 0x2c, 0x40, 0xe2, 0x88, 0x81, 0xe2, 0x88, 0x98, 0xe2, 0x88, 0x81, 0xe2, 0x84, 0x82, 0xe2, 0x89, 0x85, 0xe2, 0xa9, 0xad, 0xe2, 0x88, 0xae, 0xf0, 0x9d, 0x95, 0x94, 0xe2, 0x88, 0x90, 0xc2, 0xa9, 0xe2, 0x84, 0x97, 0xe2, 0x86, 0xb5, 0xe2, 0x9c, 0x97, 0xf0, 0x9d, 0x92, 0xb8, 0xe2, 0xab, 0x8f, 0xe2, 0xab, 0x91, 0xe2, 0xab, 0x90, 0xe2, 0xab, 0x92, 0xe2, 0x8b, 0xaf, 0xe2, 0xa4, 0xb8, 0xe2, 0xa4, 0xb5, 0xe2, 0x8b, 0x9e, 0xe2, 0x8b, 0x9f, 0xe2, 0x86, 0xb6, 0xe2, 0xa4, 0xbd, 0xe2, 0x88, 0xaa, 0xe2, 0xa9, 0x88, 0xe2, 0xa9, 0x86, 0xe2, 0xa9, 0x8a, 0xe2, 0x8a, 0x8d, 0xe2, 0xa9, 0x85, 0xe2, 0x88, 0xaa, 0xef, 0xb8, 0x80, 0xe2, 0x86, 0xb7, 0xe2, 0xa4, 0xbc, 0xe2, 0x8b, 0x9e, 0xe2, 0x8b, 0x9f, 0xe2, 0x8b, 0x8e, 0xe2, 0x8b, 0x8f, 0xc2, 0xa4, 0xe2, 0x86, 0xb6, 0xe2, 0x86, 0xb7, 0xe2, 0x8b, 0x8e, 0xe2, 0x8b, 0x8f, 0xe2, 0x88, 0xb2, 0xe2, 0x88, 0xb1, 0xe2, 0x8c, 0xad, 0xe2, 0x87, 0x93, 0xe2, 0xa5, 0xa5, 0xe2, 0x80, 0xa0, 0xe2, 0x84, 0xb8, 0xe2, 0x86, 0x93, 0xe2, 0x80, 0x90, 0xe2, 0x8a, 0xa3, 0xe2, 0xa4, 0x8f, 0xcb, 0x9d, 0xc4, 0x8f, 0xd0, 0xb4, 0xe2, 0x85, 0x86, 0xe2, 0x80, 0xa1, 0xe2, 0x87, 0x8a, 0xe2, 0xa9, 0xb7, 0xc2, 0xb0, 0xce, 0xb4, 0xe2, 0xa6, 0xb1, 0xe2, 0xa5, 0xbf, 0xf0, 0x9d, 0x94, 0xa1, 0xe2, 0x87, 0x83, 0xe2, 0x87, 0x82, 0xe2, 0x8b, 0x84, 0xe2, 0x8b, 0x84, 0xe2, 0x99, 0xa6, 0xe2, 0x99, 0xa6, 0xc2, 0xa8, 0xcf, 0x9d, 0xe2, 0x8b, 0xb2, 0xc3, 0xb7, 0xc3, 0xb7, 0xe2, 0x8b, 0x87, 0xe2, 0x8b, 0x87, 0xd1, 0x92, 0xe2, 0x8c, 0x9e, 0xe2, 0x8c, 0x8d, 0x24, 0xf0, 0x9d, 0x95, 0x95, 0xcb, 0x99, 0xe2, 0x89, 0x90, 0xe2, 0x89, 0x91, 0xe2, 0x88, 0xb8, 0xe2, 0x88, 0x94, 0xe2, 0x8a, 0xa1, 0xe2, 0x8c, 0x86, 0xe2, 0x86, 0x93, 0xe2, 0x87, 0x8a, 0xe2, 0x87, 0x83, 0xe2, 0x87, 0x82, 0xe2, 0xa4, 0x90, 0xe2, 0x8c, 0x9f, 0xe2, 0x8c, 0x8c, 0xf0, 0x9d, 0x92, 0xb9, 0xd1, 0x95, 0xe2, 0xa7, 0xb6, 0xc4, 0x91, 0xe2, 0x8b, 0xb1, 0xe2, 0x96, 0xbf, 0xe2, 0x96, 0xbe, 0xe2, 0x87, 0xb5, 0xe2, 0xa5, 0xaf, 0xe2, 0xa6, 0xa6, 0xd1, 0x9f, 0xe2, 0x9f, 0xbf, 0xe2, 0xa9, 0xb7, 0xe2, 0x89, 0x91, 0xc3, 0xa9, 0xe2, 0xa9, 0xae, 0xc4, 0x9b, 0xe2, 0x89, 0x96, 0xc3, 0xaa, 0xe2, 0x89, 0x95, 0xd1, 0x8d, 0xc4, 0x97, 0xe2, 0x85, 0x87, 0xe2, 0x89, 0x92, 0xf0, 0x9d, 0x94, 0xa2, 0xe2, 0xaa, 0x9a, 0xc3, 0xa8, 0xe2, 0xaa, 0x96, 0xe2, 0xaa, 0x98, 0xe2, 0xaa, 0x99, 0xe2, 0x8f, 0xa7, 0xe2, 0x84, 0x93, 0xe2, 0xaa, 0x95, 0xe2, 0xaa, 0x97, 0xc4, 0x93, 0xe2, 0x88, 0x85, 0xe2, 0x88, 0x85, 0xe2, 0x88, 0x85, 0xe2, 0x80, 0x83, 0xe2, 0x80, 0x84, 0xe2, 0x80, 0x85, 0xc5, 0x8b, 0xe2, 0x80, 0x82, 0xc4, 0x99, 0xf0, 0x9d, 0x95, 0x96, 0xe2, 0x8b, 0x95, 0xe2, 0xa7, 0xa3, 0xe2, 0xa9, 0xb1, 0xce, 0xb5, 0xce, 0xb5, 0xcf, 0xb5, 0xe2, 0x89, 0x96, 0xe2, 0x89, 0x95, 0xe2, 0x89, 0x82, 0xe2, 0xaa, 0x96, 0xe2, 0xaa, 0x95, 0x3d, 0xe2, 0x89, 0x9f, 0xe2, 0x89, 0xa1, 0xe2, 0xa9, 0xb8, 0xe2, 0xa7, 0xa5, 0xe2, 0x89, 0x93, 0xe2, 0xa5, 0xb1, 0xe2, 0x84, 0xaf, 0xe2, 0x89, 0x90, 0xe2, 0x89, 0x82, 0xce, 0xb7, 0xc3, 0xb0, 0xc3, 0xab, 0xe2, 0x82, 0xac, 0x21, 0xe2, 0x88, 0x83, 0xe2, 0x84, 0xb0, 0xe2, 0x85, 0x87, 0xe2, 0x89, 0x92, 0xd1, 0x84, 0xe2, 0x99, 0x80, 0xef, 0xac, 0x83, 0xef, 0xac, 0x80, 0xef, 0xac, 0x84, 0xf0, 0x9d, 0x94, 0xa3, 0xef, 0xac, 0x81, 0x66, 0x6a, 0xe2, 0x99, 0xad, 0xef, 0xac, 0x82, 0xe2, 0x96, 0xb1, 0xc6, 0x92, 0xf0, 0x9d, 0x95, 0x97, 0xe2, 0x88, 0x80, 0xe2, 0x8b, 0x94, 0xe2, 0xab, 0x99, 0xe2, 0xa8, 0x8d, 0xc2, 0xbd, 0xe2, 0x85, 0x93, 0xc2, 0xbc, 0xe2, 0x85, 0x95, 0xe2, 0x85, 0x99, 0xe2, 0x85, 0x9b, 0xe2, 0x85, 0x94, 0xe2, 0x85, 0x96, 0xc2, 0xbe, 0xe2, 0x85, 0x97, 0xe2, 0x85, 0x9c, 0xe2, 0x85, 0x98, 0xe2, 0x85, 0x9a, 0xe2, 0x85, 0x9d, 0xe2, 0x85, 0x9e, 0xe2, 0x81, 0x84, 0xe2, 0x8c, 0xa2, 0xf0, 0x9d, 0x92, 0xbb, 0xe2, 0x89, 0xa7, 0xe2, 0xaa, 0x8c, 0xc7, 0xb5, 0xce, 0xb3, 0xcf, 0x9d, 0xe2, 0xaa, 0x86, 0xc4, 0x9f, 0xc4, 0x9d, 0xd0, 0xb3, 0xc4, 0xa1, 0xe2, 0x89, 0xa5, 0xe2, 0x8b, 0x9b, 0xe2, 0x89, 0xa5, 0xe2, 0x89, 0xa7, 0xe2, 0xa9, 0xbe, 0xe2, 0xa9, 0xbe, 0xe2, 0xaa, 0xa9, 0xe2, 0xaa, 0x80, 0xe2, 0xaa, 0x82, 0xe2, 0xaa, 0x84, 0xe2, 0x8b, 0x9b, 0xef, 0xb8, 0x80, 0xe2, 0xaa, 0x94, 0xf0, 0x9d, 0x94, 0xa4, 0xe2, 0x89, 0xab, 0xe2, 0x8b, 0x99, 0xe2, 0x84, 0xb7, 0xd1, 0x93, 0xe2, 0x89, 0xb7, 0xe2, 0xaa, 0x92, 0xe2, 0xaa, 0xa5, 0xe2, 0xaa, 0xa4, 0xe2, 0x89, 0xa9, 0xe2, 0xaa, 0x8a, 0xe2, 0xaa, 0x8a, 0xe2, 0xaa, 0x88, 0xe2, 0xaa, 0x88, 0xe2, 0x89, 0xa9, 0xe2, 0x8b, 0xa7, 0xf0, 0x9d, 0x95, 0x98, 0x60, 0xe2, 0x84, 0x8a, 0xe2, 0x89, 0xb3, 0xe2, 0xaa, 0x8e, 0xe2, 0xaa, 0x90, 0x3e, 0xe2, 0xaa, 0xa7, 0xe2, 0xa9, 0xba, 0xe2, 0x8b, 0x97, 0xe2, 0xa6, 0x95, 0xe2, 0xa9, 0xbc, 0xe2, 0xaa, 0x86, 0xe2, 0xa5, 0xb8, 0xe2, 0x8b, 0x97, 0xe2, 0x8b, 0x9b, 0xe2, 0xaa, 0x8c, 0xe2, 0x89, 0xb7, 0xe2, 0x89, 0xb3, 0xe2, 0x89, 0xa9, 0xef, 0xb8, 0x80, 0xe2, 0x89, 0xa9, 0xef, 0xb8, 0x80, 0xe2, 0x87, 0x94, 0xe2, 0x80, 0x8a, 0xc2, 0xbd, 0xe2, 0x84, 0x8b, 0xd1, 0x8a, 0xe2, 0x86, 0x94, 0xe2, 0xa5, 0x88, 0xe2, 0x86, 0xad, 0xe2, 0x84, 0x8f, 0xc4, 0xa5, 0xe2, 0x99, 0xa5, 0xe2, 0x99, 0xa5, 0xe2, 0x80, 0xa6, 0xe2, 0x8a, 0xb9, 0xf0, 0x9d, 0x94, 0xa5, 0xe2, 0xa4, 0xa5, 0xe2, 0xa4, 0xa6, 0xe2, 0x87, 0xbf, 0xe2, 0x88, 0xbb, 0xe2, 0x86, 0xa9, 0xe2, 0x86, 0xaa, 0xf0, 0x9d, 0x95, 0x99, 0xe2, 0x80, 0x95, 0xf0, 0x9d, 0x92, 0xbd, 0xe2, 0x84, 0x8f, 0xc4, 0xa7, 0xe2, 0x81, 0x83, 0xe2, 0x80, 0x90, 0xc3, 0xad, 0xe2, 0x81, 0xa3, 0xc3, 0xae, 0xd0, 0xb8, 0xd0, 0xb5, 0xc2, 0xa1, 0xe2, 0x87, 0x94, 0xf0, 0x9d, 0x94, 0xa6, 0xc3, 0xac, 0xe2, 0x85, 0x88, 0xe2, 0xa8, 0x8c, 0xe2, 0x88, 0xad, 0xe2, 0xa7, 0x9c, 0xe2, 0x84, 0xa9, 0xc4, 0xb3, 0xc4, 0xab, 0xe2, 0x84, 0x91, 0xe2, 0x84, 0x90, 0xe2, 0x84, 0x91, 0xc4, 0xb1, 0xe2, 0x8a, 0xb7, 0xc6, 0xb5, 0xe2, 0x88, 0x88, 0xe2, 0x84, 0x85, 0xe2, 0x88, 0x9e, 0xe2, 0xa7, 0x9d, 0xc4, 0xb1, 0xe2, 0x88, 0xab, 0xe2, 0x8a, 0xba, 0xe2, 0x84, 0xa4, 0xe2, 0x8a, 0xba, 0xe2, 0xa8, 0x97, 0xe2, 0xa8, 0xbc, 0xd1, 0x91, 0xc4, 0xaf, 0xf0, 0x9d, 0x95, 0x9a, 0xce, 0xb9, 0xe2, 0xa8, 0xbc, 0xc2, 0xbf, 0xf0, 0x9d, 0x92, 0xbe, 0xe2, 0x88, 0x88, 0xe2, 0x8b, 0xb9, 0xe2, 0x8b, 0xb5, 0xe2, 0x8b, 0xb4, 0xe2, 0x8b, 0xb3, 0xe2, 0x88, 0x88, 0xe2, 0x81, 0xa2, 0xc4, 0xa9, 0xd1, 0x96, 0xc3, 0xaf, 0xc4, 0xb5, 0xd0, 0xb9, 0xf0, 0x9d, 0x94, 0xa7, 0xc8, 0xb7, 0xf0, 0x9d, 0x95, 0x9b, 0xf0, 0x9d, 0x92, 0xbf, 0xd1, 0x98, 0xd1, 0x94, 0xce, 0xba, 0xcf, 0xb0, 0xc4, 0xb7, 0xd0, 0xba, 0xf0, 0x9d, 0x94, 0xa8, 0xc4, 0xb8, 0xd1, 0x85, 0xd1, 0x9c, 0xf0, 0x9d, 0x95, 0x9c, 0xf0, 0x9d, 0x93, 0x80, 0xe2, 0x87, 0x9a, 0xe2, 0x87, 0x90, 0xe2, 0xa4, 0x9b, 0xe2, 0xa4, 0x8e, 0xe2, 0x89, 0xa6, 0xe2, 0xaa, 0x8b, 0xe2, 0xa5, 0xa2, 0xc4, 0xba, 0xe2, 0xa6, 0xb4, 0xe2, 0x84, 0x92, 0xce, 0xbb, 0xe2, 0x9f, 0xa8, 0xe2, 0xa6, 0x91, 0xe2, 0x9f, 0xa8, 0xe2, 0xaa, 0x85, 0xc2, 0xab, 0xe2, 0x86, 0x90, 0xe2, 0x87, 0xa4, 0xe2, 0xa4, 0x9f, 0xe2, 0xa4, 0x9d, 0xe2, 0x86, 0xa9, 0xe2, 0x86, 0xab, 0xe2, 0xa4, 0xb9, 0xe2, 0xa5, 0xb3, 0xe2, 0x86, 0xa2, 0xe2, 0xaa, 0xab, 0xe2, 0xa4, 0x99, 0xe2, 0xaa, 0xad, 0xe2, 0xaa, 0xad, 0xef, 0xb8, 0x80, 0xe2, 0xa4, 0x8c, 0xe2, 0x9d, 0xb2, 0x7b, 0x5b, 0xe2, 0xa6, 0x8b, 0xe2, 0xa6, 0x8f, 0xe2, 0xa6, 0x8d, 0xc4, 0xbe, 0xc4, 0xbc, 0xe2, 0x8c, 0x88, 0x7b, 0xd0, 0xbb, 0xe2, 0xa4, 0xb6, 0xe2, 0x80, 0x9c, 0xe2, 0x80, 0x9e, 0xe2, 0xa5, 0xa7, 0xe2, 0xa5, 0x8b, 0xe2, 0x86, 0xb2, 0xe2, 0x89, 0xa4, 0xe2, 0x86, 0x90, 0xe2, 0x86, 0xa2, 0xe2, 0x86, 0xbd, 0xe2, 0x86, 0xbc, 0xe2, 0x87, 0x87, 0xe2, 0x86, 0x94, 0xe2, 0x87, 0x86, 0xe2, 0x87, 0x8b, 0xe2, 0x86, 0xad, 0xe2, 0x8b, 0x8b, 0xe2, 0x8b, 0x9a, 0xe2, 0x89, 0xa4, 0xe2, 0x89, 0xa6, 0xe2, 0xa9, 0xbd, 0xe2, 0xa9, 0xbd, 0xe2, 0xaa, 0xa8, 0xe2, 0xa9, 0xbf, 0xe2, 0xaa, 0x81, 0xe2, 0xaa, 0x83, 0xe2, 0x8b, 0x9a, 0xef, 0xb8, 0x80, 0xe2, 0xaa, 0x93, 0xe2, 0xaa, 0x85, 0xe2, 0x8b, 0x96, 0xe2, 0x8b, 0x9a, 0xe2, 0xaa, 0x8b, 0xe2, 0x89, 0xb6, 0xe2, 0x89, 0xb2, 0xe2, 0xa5, 0xbc, 0xe2, 0x8c, 0x8a, 0xf0, 0x9d, 0x94, 0xa9, 0xe2, 0x89, 0xb6, 0xe2, 0xaa, 0x91, 0xe2, 0x86, 0xbd, 0xe2, 0x86, 0xbc, 0xe2, 0xa5, 0xaa, 0xe2, 0x96, 0x84, 0xd1, 0x99, 0xe2, 0x89, 0xaa, 0xe2, 0x87, 0x87, 0xe2, 0x8c, 0x9e, 0xe2, 0xa5, 0xab, 0xe2, 0x97, 0xba, 0xc5, 0x80, 0xe2, 0x8e, 0xb0, 0xe2, 0x8e, 0xb0, 0xe2, 0x89, 0xa8, 0xe2, 0xaa, 0x89, 0xe2, 0xaa, 0x89, 0xe2, 0xaa, 0x87, 0xe2, 0xaa, 0x87, 0xe2, 0x89, 0xa8, 0xe2, 0x8b, 0xa6, 0xe2, 0x9f, 0xac, 0xe2, 0x87, 0xbd, 0xe2, 0x9f, 0xa6, 0xe2, 0x9f, 0xb5, 0xe2, 0x9f, 0xb7, 0xe2, 0x9f, 0xbc, 0xe2, 0x9f, 0xb6, 0xe2, 0x86, 0xab, 0xe2, 0x86, 0xac, 0xe2, 0xa6, 0x85, 0xf0, 0x9d, 0x95, 0x9d, 0xe2, 0xa8, 0xad, 0xe2, 0xa8, 0xb4, 0xe2, 0x88, 0x97, 0x5f, 0xe2, 0x97, 0x8a, 0xe2, 0x97, 0x8a, 0xe2, 0xa7, 0xab, 0x28, 0xe2, 0xa6, 0x93, 0xe2, 0x87, 0x86, 0xe2, 0x8c, 0x9f, 0xe2, 0x87, 0x8b, 0xe2, 0xa5, 0xad, 0xe2, 0x80, 0x8e, 0xe2, 0x8a, 0xbf, 0xe2, 0x80, 0xb9, 0xf0, 0x9d, 0x93, 0x81, 0xe2, 0x86, 0xb0, 0xe2, 0x89, 0xb2, 0xe2, 0xaa, 0x8d, 0xe2, 0xaa, 0x8f, 0x5b, 0xe2, 0x80, 0x98, 0xe2, 0x80, 0x9a, 0xc5, 0x82, 0x3c, 0xe2, 0xaa, 0xa6, 0xe2, 0xa9, 0xb9, 0xe2, 0x8b, 0x96, 0xe2, 0x8b, 0x8b, 0xe2, 0x8b, 0x89, 0xe2, 0xa5, 0xb6, 0xe2, 0xa9, 0xbb, 0xe2, 0xa6, 0x96, 0xe2, 0x97, 0x83, 0xe2, 0x8a, 0xb4, 0xe2, 0x97, 0x82, 0xe2, 0xa5, 0x8a, 0xe2, 0xa5, 0xa6, 0xe2, 0x89, 0xa8, 0xef, 0xb8, 0x80, 0xe2, 0x89, 0xa8, 0xef, 0xb8, 0x80, 0xe2, 0x88, 0xba, 0xc2, 0xaf, 0xe2, 0x99, 0x82, 0xe2, 0x9c, 0xa0, 0xe2, 0x9c, 0xa0, 0xe2, 0x86, 0xa6, 0xe2, 0x86, 0xa6, 0xe2, 0x86, 0xa7, 0xe2, 0x86, 0xa4, 0xe2, 0x86, 0xa5, 0xe2, 0x96, 0xae, 0xe2, 0xa8, 0xa9, 0xd0, 0xbc, 0xe2, 0x80, 0x94, 0xe2, 0x88, 0xa1, 0xf0, 0x9d, 0x94, 0xaa, 0xe2, 0x84, 0xa7, 0xc2, 0xb5, 0xe2, 0x88, 0xa3, 0x2a, 0xe2, 0xab, 0xb0, 0xc2, 0xb7, 0xe2, 0x88, 0x92, 0xe2, 0x8a, 0x9f, 0xe2, 0x88, 0xb8, 0xe2, 0xa8, 0xaa, 0xe2, 0xab, 0x9b, 0xe2, 0x80, 0xa6, 0xe2, 0x88, 0x93, 0xe2, 0x8a, 0xa7, 0xf0, 0x9d, 0x95, 0x9e, 0xe2, 0x88, 0x93, 0xf0, 0x9d, 0x93, 0x82, 0xe2, 0x88, 0xbe, 0xce, 0xbc, 0xe2, 0x8a, 0xb8, 0xe2, 0x8a, 0xb8, 0xe2, 0x8b, 0x99, 0xcc, 0xb8, 0xe2, 0x89, 0xab, 0xe2, 0x83, 0x92, 0xe2, 0x89, 0xab, 0xcc, 0xb8, 0xe2, 0x87, 0x8d, 0xe2, 0x87, 0x8e, 0xe2, 0x8b, 0x98, 0xcc, 0xb8, 0xe2, 0x89, 0xaa, 0xe2, 0x83, 0x92, 0xe2, 0x89, 0xaa, 0xcc, 0xb8, 0xe2, 0x87, 0x8f, 0xe2, 0x8a, 0xaf, 0xe2, 0x8a, 0xae, 0xe2, 0x88, 0x87, 0xc5, 0x84, 0xe2, 0x88, 0xa0, 0xe2, 0x83, 0x92, 0xe2, 0x89, 0x89, 0xe2, 0xa9, 0xb0, 0xcc, 0xb8, 0xe2, 0x89, 0x8b, 0xcc, 0xb8, 0xc5, 0x89, 0xe2, 0x89, 0x89, 0xe2, 0x99, 0xae, 0xe2, 0x99, 0xae, 0xe2, 0x84, 0x95, 0xc2, 0xa0, 0xe2, 0x89, 0x8e, 0xcc, 0xb8, 0xe2, 0x89, 0x8f, 0xcc, 0xb8, 0xe2, 0xa9, 0x83, 0xc5, 0x88, 0xc5, 0x86, 0xe2, 0x89, 0x87, 0xe2, 0xa9, 0xad, 0xcc, 0xb8, 0xe2, 0xa9, 0x82, 0xd0, 0xbd, 0xe2, 0x80, 0x93, 0xe2, 0x89, 0xa0, 0xe2, 0x87, 0x97, 0xe2, 0xa4, 0xa4, 0xe2, 0x86, 0x97, 0xe2, 0x86, 0x97, 0xe2, 0x89, 0x90, 0xcc, 0xb8, 0xe2, 0x89, 0xa2, 0xe2, 0xa4, 0xa8, 0xe2, 0x89, 0x82, 0xcc, 0xb8, 0xe2, 0x88, 0x84, 0xe2, 0x88, 0x84, 0xf0, 0x9d, 0x94, 0xab, 0xe2, 0x89, 0xa7, 0xcc, 0xb8, 0xe2, 0x89, 0xb1, 0xe2, 0x89, 0xb1, 0xe2, 0x89, 0xa7, 0xcc, 0xb8, 0xe2, 0xa9, 0xbe, 0xcc, 0xb8, 0xe2, 0xa9, 0xbe, 0xcc, 0xb8, 0xe2, 0x89, 0xb5, 0xe2, 0x89, 0xaf, 0xe2, 0x89, 0xaf, 0xe2, 0x87, 0x8e, 0xe2, 0x86, 0xae, 0xe2, 0xab, 0xb2, 0xe2, 0x88, 0x8b, 0xe2, 0x8b, 0xbc, 0xe2, 0x8b, 0xba, 0xe2, 0x88, 0x8b, 0xd1, 0x9a, 0xe2, 0x87, 0x8d, 0xe2, 0x89, 0xa6, 0xcc, 0xb8, 0xe2, 0x86, 0x9a, 0xe2, 0x80, 0xa5, 0xe2, 0x89, 0xb0, 0xe2, 0x86, 0x9a, 0xe2, 0x86, 0xae, 0xe2, 0x89, 0xb0, 0xe2, 0x89, 0xa6, 0xcc, 0xb8, 0xe2, 0xa9, 0xbd, 0xcc, 0xb8, 0xe2, 0xa9, 0xbd, 0xcc, 0xb8, 0xe2, 0x89, 0xae, 0xe2, 0x89, 0xb4, 0xe2, 0x89, 0xae, 0xe2, 0x8b, 0xaa, 0xe2, 0x8b, 0xac, 0xe2, 0x88, 0xa4, 0xf0, 0x9d, 0x95, 0x9f, 0xc2, 0xac, 0xe2, 0x88, 0x89, 0xe2, 0x8b, 0xb9, 0xcc, 0xb8, 0xe2, 0x8b, 0xb5, 0xcc, 0xb8, 0xe2, 0x88, 0x89, 0xe2, 0x8b, 0xb7, 0xe2, 0x8b, 0xb6, 0xe2, 0x88, 0x8c, 0xe2, 0x88, 0x8c, 0xe2, 0x8b, 0xbe, 0xe2, 0x8b, 0xbd, 0xe2, 0x88, 0xa6, 0xe2, 0x88, 0xa6, 0xe2, 0xab, 0xbd, 0xe2, 0x83, 0xa5, 0xe2, 0x88, 0x82, 0xcc, 0xb8, 0xe2, 0xa8, 0x94, 0xe2, 0x8a, 0x80, 0xe2, 0x8b, 0xa0, 0xe2, 0xaa, 0xaf, 0xcc, 0xb8, 0xe2, 0x8a, 0x80, 0xe2, 0xaa, 0xaf, 0xcc, 0xb8, 0xe2, 0x87, 0x8f, 0xe2, 0x86, 0x9b, 0xe2, 0xa4, 0xb3, 0xcc, 0xb8, 0xe2, 0x86, 0x9d, 0xcc, 0xb8, 0xe2, 0x86, 0x9b, 0xe2, 0x8b, 0xab, 0xe2, 0x8b, 0xad, 0xe2, 0x8a, 0x81, 0xe2, 0x8b, 0xa1, 0xe2, 0xaa, 0xb0, 0xcc, 0xb8, 0xf0, 0x9d, 0x93, 0x83, 0xe2, 0x88, 0xa4, 0xe2, 0x88, 0xa6, 0xe2, 0x89, 0x81, 0xe2, 0x89, 0x84, 0xe2, 0x89, 0x84, 0xe2, 0x88, 0xa4, 0xe2, 0x88, 0xa6, 0xe2, 0x8b, 0xa2, 0xe2, 0x8b, 0xa3, 0xe2, 0x8a, 0x84, 0xe2, 0xab, 0x85, 0xcc, 0xb8, 0xe2, 0x8a, 0x88, 0xe2, 0x8a, 0x82, 0xe2, 0x83, 0x92, 0xe2, 0x8a, 0x88, 0xe2, 0xab, 0x85, 0xcc, 0xb8, 0xe2, 0x8a, 0x81, 0xe2, 0xaa, 0xb0, 0xcc, 0xb8, 0xe2, 0x8a, 0x85, 0xe2, 0xab, 0x86, 0xcc, 0xb8, 0xe2, 0x8a, 0x89, 0xe2, 0x8a, 0x83, 0xe2, 0x83, 0x92, 0xe2, 0x8a, 0x89, 0xe2, 0xab, 0x86, 0xcc, 0xb8, 0xe2, 0x89, 0xb9, 0xc3, 0xb1, 0xe2, 0x89, 0xb8, 0xe2, 0x8b, 0xaa, 0xe2, 0x8b, 0xac, 0xe2, 0x8b, 0xab, 0xe2, 0x8b, 0xad, 0xce, 0xbd, 0x23, 0xe2, 0x84, 0x96, 0xe2, 0x80, 0x87, 0xe2, 0x8a, 0xad, 0xe2, 0xa4, 0x84, 0xe2, 0x89, 0x8d, 0xe2, 0x83, 0x92, 0xe2, 0x8a, 0xac, 0xe2, 0x89, 0xa5, 0xe2, 0x83, 0x92, 0x3e, 0xe2, 0x83, 0x92, 0xe2, 0xa7, 0x9e, 0xe2, 0xa4, 0x82, 0xe2, 0x89, 0xa4, 0xe2, 0x83, 0x92, 0x3c, 0xe2, 0x83, 0x92, 0xe2, 0x8a, 0xb4, 0xe2, 0x83, 0x92, 0xe2, 0xa4, 0x83, 0xe2, 0x8a, 0xb5, 0xe2, 0x83, 0x92, 0xe2, 0x88, 0xbc, 0xe2, 0x83, 0x92, 0xe2, 0x87, 0x96, 0xe2, 0xa4, 0xa3, 0xe2, 0x86, 0x96, 0xe2, 0x86, 0x96, 0xe2, 0xa4, 0xa7, 0xe2, 0x93, 0x88, 0xc3, 0xb3, 0xe2, 0x8a, 0x9b, 0xe2, 0x8a, 0x9a, 0xc3, 0xb4, 0xd0, 0xbe, 0xe2, 0x8a, 0x9d, 0xc5, 0x91, 0xe2, 0xa8, 0xb8, 0xe2, 0x8a, 0x99, 0xe2, 0xa6, 0xbc, 0xc5, 0x93, 0xe2, 0xa6, 0xbf, 0xf0, 0x9d, 0x94, 0xac, 0xcb, 0x9b, 0xc3, 0xb2, 0xe2, 0xa7, 0x81, 0xe2, 0xa6, 0xb5, 0xce, 0xa9, 0xe2, 0x88, 0xae, 0xe2, 0x86, 0xba, 0xe2, 0xa6, 0xbe, 0xe2, 0xa6, 0xbb, 0xe2, 0x80, 0xbe, 0xe2, 0xa7, 0x80, 0xc5, 0x8d, 0xcf, 0x89, 0xce, 0xbf, 0xe2, 0xa6, 0xb6, 0xe2, 0x8a, 0x96, 0xf0, 0x9d, 0x95, 0xa0, 0xe2, 0xa6, 0xb7, 0xe2, 0xa6, 0xb9, 0xe2, 0x8a, 0x95, 0xe2, 0x88, 0xa8, 0xe2, 0x86, 0xbb, 0xe2, 0xa9, 0x9d, 0xe2, 0x84, 0xb4, 0xe2, 0x84, 0xb4, 0xc2, 0xaa, 0xc2, 0xba, 0xe2, 0x8a, 0xb6, 0xe2, 0xa9, 0x96, 0xe2, 0xa9, 0x97, 0xe2, 0xa9, 0x9b, 0xe2, 0x84, 0xb4, 0xc3, 0xb8, 0xe2, 0x8a, 0x98, 0xc3, 0xb5, 0xe2, 0x8a, 0x97, 0xe2, 0xa8, 0xb6, 0xc3, 0xb6, 0xe2, 0x8c, 0xbd, 0xe2, 0x88, 0xa5, 0xc2, 0xb6, 0xe2, 0x88, 0xa5, 0xe2, 0xab, 0xb3, 0xe2, 0xab, 0xbd, 0xe2, 0x88, 0x82, 0xd0, 0xbf, 0x25, 0x2e, 0xe2, 0x80, 0xb0, 0xe2, 0x8a, 0xa5, 0xe2, 0x80, 0xb1, 0xf0, 0x9d, 0x94, 0xad, 0xcf, 0x86, 0xcf, 0x95, 0xe2, 0x84, 0xb3, 0xe2, 0x98, 0x8e, 0xcf, 0x80, 0xe2, 0x8b, 0x94, 0xcf, 0x96, 0xe2, 0x84, 0x8f, 0xe2, 0x84, 0x8e, 0xe2, 0x84, 0x8f, 0x2b, 0xe2, 0xa8, 0xa3, 0xe2, 0x8a, 0x9e, 0xe2, 0xa8, 0xa2, 0xe2, 0x88, 0x94, 0xe2, 0xa8, 0xa5, 0xe2, 0xa9, 0xb2, 0xc2, 0xb1, 0xe2, 0xa8, 0xa6, 0xe2, 0xa8, 0xa7, 0xc2, 0xb1, 0xe2, 0xa8, 0x95, 0xf0, 0x9d, 0x95, 0xa1, 0xc2, 0xa3, 0xe2, 0x89, 0xba, 0xe2, 0xaa, 0xb3, 0xe2, 0xaa, 0xb7, 0xe2, 0x89, 0xbc, 0xe2, 0xaa, 0xaf, 0xe2, 0x89, 0xba, 0xe2, 0xaa, 0xb7, 0xe2, 0x89, 0xbc, 0xe2, 0xaa, 0xaf, 0xe2, 0xaa, 0xb9, 0xe2, 0xaa, 0xb5, 0xe2, 0x8b, 0xa8, 0xe2, 0x89, 0xbe, 0xe2, 0x80, 0xb2, 0xe2, 0x84, 0x99, 0xe2, 0xaa, 0xb5, 0xe2, 0xaa, 0xb9, 0xe2, 0x8b, 0xa8, 0xe2, 0x88, 0x8f, 0xe2, 0x8c, 0xae, 0xe2, 0x8c, 0x92, 0xe2, 0x8c, 0x93, 0xe2, 0x88, 0x9d, 0xe2, 0x88, 0x9d, 0xe2, 0x89, 0xbe, 0xe2, 0x8a, 0xb0, 0xf0, 0x9d, 0x93, 0x85, 0xcf, 0x88, 0xe2, 0x80, 0x88, 0xf0, 0x9d, 0x94, 0xae, 0xe2, 0xa8, 0x8c, 0xf0, 0x9d, 0x95, 0xa2, 0xe2, 0x81, 0x97, 0xf0, 0x9d, 0x93, 0x86, 0xe2, 0x84, 0x8d, 0xe2, 0xa8, 0x96, 0x3f, 0xe2, 0x89, 0x9f, 0x22, 0xe2, 0x87, 0x9b, 0xe2, 0x87, 0x92, 0xe2, 0xa4, 0x9c, 0xe2, 0xa4, 0x8f, 0xe2, 0xa5, 0xa4, 0xe2, 0x88, 0xbd, 0xcc, 0xb1, 0xc5, 0x95, 0xe2, 0x88, 0x9a, 0xe2, 0xa6, 0xb3, 0xe2, 0x9f, 0xa9, 0xe2, 0xa6, 0x92, 0xe2, 0xa6, 0xa5, 0xe2, 0x9f, 0xa9, 0xc2, 0xbb, 0xe2, 0x86, 0x92, 0xe2, 0xa5, 0xb5, 0xe2, 0x87, 0xa5, 0xe2, 0xa4, 0xa0, 0xe2, 0xa4, 0xb3, 0xe2, 0xa4, 0x9e, 0xe2, 0x86, 0xaa, 0xe2, 0x86, 0xac, 0xe2, 0xa5, 0x85, 0xe2, 0xa5, 0xb4, 0xe2, 0x86, 0xa3, 0xe2, 0x86, 0x9d, 0xe2, 0xa4, 0x9a, 0xe2, 0x88, 0xb6, 0xe2, 0x84, 0x9a, 0xe2, 0xa4, 0x8d, 0xe2, 0x9d, 0xb3, 0x7d, 0x5d, 0xe2, 0xa6, 0x8c, 0xe2, 0xa6, 0x8e, 0xe2, 0xa6, 0x90, 0xc5, 0x99, 0xc5, 0x97, 0xe2, 0x8c, 0x89, 0x7d, 0xd1, 0x80, 0xe2, 0xa4, 0xb7, 0xe2, 0xa5, 0xa9, 0xe2, 0x80, 0x9d, 0xe2, 0x80, 0x9d, 0xe2, 0x86, 0xb3, 0xe2, 0x84, 0x9c, 0xe2, 0x84, 0x9b, 0xe2, 0x84, 0x9c, 0xe2, 0x84, 0x9d, 0xe2, 0x96, 0xad, 0xc2, 0xae, 0xe2, 0xa5, 0xbd, 0xe2, 0x8c, 0x8b, 0xf0, 0x9d, 0x94, 0xaf, 0xe2, 0x87, 0x81, 0xe2, 0x87, 0x80, 0xe2, 0xa5, 0xac, 0xcf, 0x81, 0xcf, 0xb1, 0xe2, 0x86, 0x92, 0xe2, 0x86, 0xa3, 0xe2, 0x87, 0x81, 0xe2, 0x87, 0x80, 0xe2, 0x87, 0x84, 0xe2, 0x87, 0x8c, 0xe2, 0x87, 0x89, 0xe2, 0x86, 0x9d, 0xe2, 0x8b, 0x8c, 0xcb, 0x9a, 0xe2, 0x89, 0x93, 0xe2, 0x87, 0x84, 0xe2, 0x87, 0x8c, 0xe2, 0x80, 0x8f, 0xe2, 0x8e, 0xb1, 0xe2, 0x8e, 0xb1, 0xe2, 0xab, 0xae, 0xe2, 0x9f, 0xad, 0xe2, 0x87, 0xbe, 0xe2, 0x9f, 0xa7, 0xe2, 0xa6, 0x86, 0xf0, 0x9d, 0x95, 0xa3, 0xe2, 0xa8, 0xae, 0xe2, 0xa8, 0xb5, 0x29, 0xe2, 0xa6, 0x94, 0xe2, 0xa8, 0x92, 0xe2, 0x87, 0x89, 0xe2, 0x80, 0xba, 0xf0, 0x9d, 0x93, 0x87, 0xe2, 0x86, 0xb1, 0x5d, 0xe2, 0x80, 0x99, 0xe2, 0x80, 0x99, 0xe2, 0x8b, 0x8c, 0xe2, 0x8b, 0x8a, 0xe2, 0x96, 0xb9, 0xe2, 0x8a, 0xb5, 0xe2, 0x96, 0xb8, 0xe2, 0xa7, 0x8e, 0xe2, 0xa5, 0xa8, 0xe2, 0x84, 0x9e, 0xc5, 0x9b, 0xe2, 0x80, 0x9a, 0xe2, 0x89, 0xbb, 0xe2, 0xaa, 0xb4, 0xe2, 0xaa, 0xb8, 0xc5, 0xa1, 0xe2, 0x89, 0xbd, 0xe2, 0xaa, 0xb0, 0xc5, 0x9f, 0xc5, 0x9d, 0xe2, 0xaa, 0xb6, 0xe2, 0xaa, 0xba, 0xe2, 0x8b, 0xa9, 0xe2, 0xa8, 0x93, 0xe2, 0x89, 0xbf, 0xd1, 0x81, 0xe2, 0x8b, 0x85, 0xe2, 0x8a, 0xa1, 0xe2, 0xa9, 0xa6, 0xe2, 0x87, 0x98, 0xe2, 0xa4, 0xa5, 0xe2, 0x86, 0x98, 0xe2, 0x86, 0x98, 0xc2, 0xa7, 0x3b, 0xe2, 0xa4, 0xa9, 0xe2, 0x88, 0x96, 0xe2, 0x88, 0x96, 0xe2, 0x9c, 0xb6, 0xf0, 0x9d, 0x94, 0xb0, 0xe2, 0x8c, 0xa2, 0xe2, 0x99, 0xaf, 0xd1, 0x89, 0xd1, 0x88, 0xe2, 0x88, 0xa3, 0xe2, 0x88, 0xa5, 0xc2, 0xad, 0xcf, 0x83, 0xcf, 0x82, 0xcf, 0x82, 0xe2, 0x88, 0xbc, 0xe2, 0xa9, 0xaa, 0xe2, 0x89, 0x83, 0xe2, 0x89, 0x83, 0xe2, 0xaa, 0x9e, 0xe2, 0xaa, 0xa0, 0xe2, 0xaa, 0x9d, 0xe2, 0xaa, 0x9f, 0xe2, 0x89, 0x86, 0xe2, 0xa8, 0xa4, 0xe2, 0xa5, 0xb2, 0xe2, 0x86, 0x90, 0xe2, 0x88, 0x96, 0xe2, 0xa8, 0xb3, 0xe2, 0xa7, 0xa4, 0xe2, 0x88, 0xa3, 0xe2, 0x8c, 0xa3, 0xe2, 0xaa, 0xaa, 0xe2, 0xaa, 0xac, 0xe2, 0xaa, 0xac, 0xef, 0xb8, 0x80, 0xd1, 0x8c, 0x2f, 0xe2, 0xa7, 0x84, 0xe2, 0x8c, 0xbf, 0xf0, 0x9d, 0x95, 0xa4, 0xe2, 0x99, 0xa0, 0xe2, 0x99, 0xa0, 0xe2, 0x88, 0xa5, 0xe2, 0x8a, 0x93, 0xe2, 0x8a, 0x93, 0xef, 0xb8, 0x80, 0xe2, 0x8a, 0x94, 0xe2, 0x8a, 0x94, 0xef, 0xb8, 0x80, 0xe2, 0x8a, 0x8f, 0xe2, 0x8a, 0x91, 0xe2, 0x8a, 0x8f, 0xe2, 0x8a, 0x91, 0xe2, 0x8a, 0x90, 0xe2, 0x8a, 0x92, 0xe2, 0x8a, 0x90, 0xe2, 0x8a, 0x92, 0xe2, 0x96, 0xa1, 0xe2, 0x96, 0xa1, 0xe2, 0x96, 0xaa, 0xe2, 0x96, 0xaa, 0xe2, 0x86, 0x92, 0xf0, 0x9d, 0x93, 0x88, 0xe2, 0x88, 0x96, 0xe2, 0x8c, 0xa3, 0xe2, 0x8b, 0x86, 0xe2, 0x98, 0x86, 0xe2, 0x98, 0x85, 0xcf, 0xb5, 0xcf, 0x95, 0xc2, 0xaf, 0xe2, 0x8a, 0x82, 0xe2, 0xab, 0x85, 0xe2, 0xaa, 0xbd, 0xe2, 0x8a, 0x86, 0xe2, 0xab, 0x83, 0xe2, 0xab, 0x81, 0xe2, 0xab, 0x8b, 0xe2, 0x8a, 0x8a, 0xe2, 0xaa, 0xbf, 0xe2, 0xa5, 0xb9, 0xe2, 0x8a, 0x82, 0xe2, 0x8a, 0x86, 0xe2, 0xab, 0x85, 0xe2, 0x8a, 0x8a, 0xe2, 0xab, 0x8b, 0xe2, 0xab, 0x87, 0xe2, 0xab, 0x95, 0xe2, 0xab, 0x93, 0xe2, 0x89, 0xbb, 0xe2, 0xaa, 0xb8, 0xe2, 0x89, 0xbd, 0xe2, 0xaa, 0xb0, 0xe2, 0xaa, 0xba, 0xe2, 0xaa, 0xb6, 0xe2, 0x8b, 0xa9, 0xe2, 0x89, 0xbf, 0xe2, 0x88, 0x91, 0xe2, 0x99, 0xaa, 0xe2, 0x8a, 0x83, 0xc2, 0xb9, 0xc2, 0xb2, 0xc2, 0xb3, 0xe2, 0xab, 0x86, 0xe2, 0xaa, 0xbe, 0xe2, 0xab, 0x98, 0xe2, 0x8a, 0x87, 0xe2, 0xab, 0x84, 0xe2, 0x9f, 0x89, 0xe2, 0xab, 0x97, 0xe2, 0xa5, 0xbb, 0xe2, 0xab, 0x82, 0xe2, 0xab, 0x8c, 0xe2, 0x8a, 0x8b, 0xe2, 0xab, 0x80, 0xe2, 0x8a, 0x83, 0xe2, 0x8a, 0x87, 0xe2, 0xab, 0x86, 0xe2, 0x8a, 0x8b, 0xe2, 0xab, 0x8c, 0xe2, 0xab, 0x88, 0xe2, 0xab, 0x94, 0xe2, 0xab, 0x96, 0xe2, 0x87, 0x99, 0xe2, 0xa4, 0xa6, 0xe2, 0x86, 0x99, 0xe2, 0x86, 0x99, 0xe2, 0xa4, 0xaa, 0xc3, 0x9f, 0xe2, 0x8c, 0x96, 0xcf, 0x84, 0xe2, 0x8e, 0xb4, 0xc5, 0xa5, 0xc5, 0xa3, 0xd1, 0x82, 0xe2, 0x83, 0x9b, 0xe2, 0x8c, 0x95, 0xf0, 0x9d, 0x94, 0xb1, 0xe2, 0x88, 0xb4, 0xe2, 0x88, 0xb4, 0xce, 0xb8, 0xcf, 0x91, 0xcf, 0x91, 0xe2, 0x89, 0x88, 0xe2, 0x88, 0xbc, 0xe2, 0x80, 0x89, 0xe2, 0x89, 0x88, 0xe2, 0x88, 0xbc, 0xc3, 0xbe, 0xcb, 0x9c, 0xc3, 0x97, 0xe2, 0x8a, 0xa0, 0xe2, 0xa8, 0xb1, 0xe2, 0xa8, 0xb0, 0xe2, 0x88, 0xad, 0xe2, 0xa4, 0xa8, 0xe2, 0x8a, 0xa4, 0xe2, 0x8c, 0xb6, 0xe2, 0xab, 0xb1, 0xf0, 0x9d, 0x95, 0xa5, 0xe2, 0xab, 0x9a, 0xe2, 0xa4, 0xa9, 0xe2, 0x80, 0xb4, 0xe2, 0x84, 0xa2, 0xe2, 0x96, 0xb5, 0xe2, 0x96, 0xbf, 0xe2, 0x97, 0x83, 0xe2, 0x8a, 0xb4, 0xe2, 0x89, 0x9c, 0xe2, 0x96, 0xb9, 0xe2, 0x8a, 0xb5, 0xe2, 0x97, 0xac, 0xe2, 0x89, 0x9c, 0xe2, 0xa8, 0xba, 0xe2, 0xa8, 0xb9, 0xe2, 0xa7, 0x8d, 0xe2, 0xa8, 0xbb, 0xe2, 0x8f, 0xa2, 0xf0, 0x9d, 0x93, 0x89, 0xd1, 0x86, 0xd1, 0x9b, 0xc5, 0xa7, 0xe2, 0x89, 0xac, 0xe2, 0x86, 0x9e, 0xe2, 0x86, 0xa0, 0xe2, 0x87, 0x91, 0xe2, 0xa5, 0xa3, 0xc3, 0xba, 0xe2, 0x86, 0x91, 0xd1, 0x9e, 0xc5, 0xad, 0xc3, 0xbb, 0xd1, 0x83, 0xe2, 0x87, 0x85, 0xc5, 0xb1, 0xe2, 0xa5, 0xae, 0xe2, 0xa5, 0xbe, 0xf0, 0x9d, 0x94, 0xb2, 0xc3, 0xb9, 0xe2, 0x86, 0xbf, 0xe2, 0x86, 0xbe, 0xe2, 0x96, 0x80, 0xe2, 0x8c, 0x9c, 0xe2, 0x8c, 0x9c, 0xe2, 0x8c, 0x8f, 0xe2, 0x97, 0xb8, 0xc5, 0xab, 0xc2, 0xa8, 0xc5, 0xb3, 0xf0, 0x9d, 0x95, 0xa6, 0xe2, 0x86, 0x91, 0xe2, 0x86, 0x95, 0xe2, 0x86, 0xbf, 0xe2, 0x86, 0xbe, 0xe2, 0x8a, 0x8e, 0xcf, 0x85, 0xcf, 0x92, 0xcf, 0x85, 0xe2, 0x87, 0x88, 0xe2, 0x8c, 0x9d, 0xe2, 0x8c, 0x9d, 0xe2, 0x8c, 0x8e, 0xc5, 0xaf, 0xe2, 0x97, 0xb9, 0xf0, 0x9d, 0x93, 0x8a, 0xe2, 0x8b, 0xb0, 0xc5, 0xa9, 0xe2, 0x96, 0xb5, 0xe2, 0x96, 0xb4, 0xe2, 0x87, 0x88, 0xc3, 0xbc, 0xe2, 0xa6, 0xa7, 0xe2, 0x87, 0x95, 0xe2, 0xab, 0xa8, 0xe2, 0xab, 0xa9, 0xe2, 0x8a, 0xa8, 0xe2, 0xa6, 0x9c, 0xcf, 0xb5, 0xcf, 0xb0, 0xe2, 0x88, 0x85, 0xcf, 0x95, 0xcf, 0x96, 0xe2, 0x88, 0x9d, 0xe2, 0x86, 0x95, 0xcf, 0xb1, 0xcf, 0x82, 0xe2, 0x8a, 0x8a, 0xef, 0xb8, 0x80, 0xe2, 0xab, 0x8b, 0xef, 0xb8, 0x80, 0xe2, 0x8a, 0x8b, 0xef, 0xb8, 0x80, 0xe2, 0xab, 0x8c, 0xef, 0xb8, 0x80, 0xcf, 0x91, 0xe2, 0x8a, 0xb2, 0xe2, 0x8a, 0xb3, 0xd0, 0xb2, 0xe2, 0x8a, 0xa2, 0xe2, 0x88, 0xa8, 0xe2, 0x8a, 0xbb, 0xe2, 0x89, 0x9a, 0xe2, 0x8b, 0xae, 0x7c, 0x7c, 0xf0, 0x9d, 0x94, 0xb3, 0xe2, 0x8a, 0xb2, 0xe2, 0x8a, 0x82, 0xe2, 0x83, 0x92, 0xe2, 0x8a, 0x83, 0xe2, 0x83, 0x92, 0xf0, 0x9d, 0x95, 0xa7, 0xe2, 0x88, 0x9d, 0xe2, 0x8a, 0xb3, 0xf0, 0x9d, 0x93, 0x8b, 0xe2, 0xab, 0x8b, 0xef, 0xb8, 0x80, 0xe2, 0x8a, 0x8a, 0xef, 0xb8, 0x80, 0xe2, 0xab, 0x8c, 0xef, 0xb8, 0x80, 0xe2, 0x8a, 0x8b, 0xef, 0xb8, 0x80, 0xe2, 0xa6, 0x9a, 0xc5, 0xb5, 0xe2, 0xa9, 0x9f, 0xe2, 0x88, 0xa7, 0xe2, 0x89, 0x99, 0xe2, 0x84, 0x98, 0xf0, 0x9d, 0x94, 0xb4, 0xf0, 0x9d, 0x95, 0xa8, 0xe2, 0x84, 0x98, 0xe2, 0x89, 0x80, 0xe2, 0x89, 0x80, 0xf0, 0x9d, 0x93, 0x8c, 0xe2, 0x8b, 0x82, 0xe2, 0x97, 0xaf, 0xe2, 0x8b, 0x83, 0xe2, 0x96, 0xbd, 0xf0, 0x9d, 0x94, 0xb5, 0xe2, 0x9f, 0xba, 0xe2, 0x9f, 0xb7, 0xce, 0xbe, 0xe2, 0x9f, 0xb8, 0xe2, 0x9f, 0xb5, 0xe2, 0x9f, 0xbc, 0xe2, 0x8b, 0xbb, 0xe2, 0xa8, 0x80, 0xf0, 0x9d, 0x95, 0xa9, 0xe2, 0xa8, 0x81, 0xe2, 0xa8, 0x82, 0xe2, 0x9f, 0xb9, 0xe2, 0x9f, 0xb6, 0xf0, 0x9d, 0x93, 0x8d, 0xe2, 0xa8, 0x86, 0xe2, 0xa8, 0x84, 0xe2, 0x96, 0xb3, 0xe2, 0x8b, 0x81, 0xe2, 0x8b, 0x80, 0xc3, 0xbd, 0xd1, 0x8f, 0xc5, 0xb7, 0xd1, 0x8b, 0xc2, 0xa5, 0xf0, 0x9d, 0x94, 0xb6, 0xd1, 0x97, 0xf0, 0x9d, 0x95, 0xaa, 0xf0, 0x9d, 0x93, 0x8e, 0xd1, 0x8e, 0xc3, 0xbf, 0xc5, 0xba, 0xc5, 0xbe, 0xd0, 0xb7, 0xc5, 0xbc, 0xe2, 0x84, 0xa8, 0xce, 0xb6, 0xf0, 0x9d, 0x94, 0xb7, 0xd0, 0xb6, 0xe2, 0x87, 0x9d, 0xf0, 0x9d, 0x95, 0xab, 0xf0, 0x9d, 0x93, 0x8f, 0xe2, 0x80, 0x8d, 0xe2, 0x80, 0x8c} -var _html5entitiesCharactersIndex = "\x02\x01\x02\x02\x02\x04\x02\x02\x02\x03\x02\x04\x03\x02\x04\x03\x02\x02\x03\x03\x03\x02\x03\x03\x02\x04\x04\x02\x03\x03\x02\x02\x02\x03\x03\x03\x02\x02\x02\x03\x02\x02\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x03\x03\x03\x02\x02\x02\x03\x03\x03\x02\x02\x03\x02\x04\x02\x02\x02\x01\x02\x03\x03\x04\x02\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x02\x02\x02\x02\x02\x02\x02\x02\x04\x02\x03\x02\x03\x03\x02\x04\x02\x03\x03\x03\x03\x03\x02\x02\x03\x03\x02\x04\x03\x03\x04\x03\x03\x03\x02\x01\x02\x02\x02\x02\x02\x02\x02\x04\x03\x04\x03\x03\x03\x03\x03\x03\x03\x04\x03\x02\x02\x01\x02\x03\x03\x03\x03\x03\x02\x03\x03\x02\x02\x02\x02\x02\x02\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x02\x04\x02\x03\x02\x02\x02\x02\x02\x04\x04\x04\x02\x02\x02\x02\x02\x02\x02\x04\x04\x04\x02\x01\x02\x02\x03\x03\x03\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x03\x02\x03\x03\x03\x03\x03\x03\x04\x03\x03\x03\x03\x02\x03\x03\x02\x03\x03\x04\x03\x04\x03\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x01\x04\x03\x02\x03\x03\x03\x03\x03\x03\x03\x05\x03\x03\x03\x05\x05\x03\x05\x03\x05\x05\x03\x05\x03\x03\x03\x03\x05\x05\x03\x05\x05\x03\x05\x03\x03\x03\x05\x03\x05\x03\x05\x03\x06\x03\x03\x05\x03\x05\x06\x03\x03\x03\x03\x03\x03\x04\x02\x02\x02\x02\x02\x02\x02\x04\x02\x02\x02\x02\x04\x03\x03\x03\x04\x02\x02\x03\x02\x03\x03\x03\x03\x03\x02\x04\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x02\x01\x04\x03\x04\x03\x02\x02\x03\x03\x03\x02\x02\x02\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x02\x03\x02\x02\x02\x02\x04\x03\x03\x03\x03\x02\x03\x04\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x02\x02\x01\x02\x02\x02\x02\x04\x03\x02\x06\x03\x03\x03\x03\x03\x04\x03\x04\x02\x02\x03\x03\x02\x02\x02\x02\x02\x04\x02\x02\x01\x03\x03\x03\x03\x03\x02\x04\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x04\x02\x02\x03\x03\x02\x03\x03\x03\x03\x03\x03\x01\x03\x03\x03\x04\x04\x04\x03\x02\x03\x04\x04\x04\x04\x02\x04\x04\x02\x02\x02\x02\x02\x02\x04\x04\x04\x02\x02\x02\x02\x02\x02\x03\x02\x03\x03\x04\x02\x02\x03\x05\x03\x02\x02\x02\x02\x03\x04\x02\x03\x03\x02\x02\x03\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x02\x04\x03\x03\x03\x03\x03\x01\x03\x03\x02\x04\x01\x03\x03\x02\x02\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x02\x03\x02\x03\x03\x04\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x06\x03\x04\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x04\x03\x03\x03\x01\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x06\x03\x02\x03\x02\x02\x02\x03\x03\x02\x02\x03\x02\x02\x04\x02\x03\x03\x02\x03\x03\x02\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x01\x03\x03\x01\x01\x03\x03\x03\x03\x03\x03\x03\x04\x03\x02\x03\x03\x03\x04\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x06\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x03\x03\x03\x03\x02\x02\x03\x03\x04\x03\x03\x03\x03\x03\x03\x02\x02\x03\x02\x02\x03\x03\x02\x03\x03\x01\x04\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x02\x03\x02\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x02\x03\x02\x03\x02\x03\x02\x02\x03\x03\x04\x03\x02\x03\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x02\x03\x02\x04\x03\x03\x03\x02\x02\x02\x03\x03\x03\x03\x03\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x03\x01\x03\x03\x03\x03\x02\x03\x03\x03\x03\x04\x03\x02\x03\x03\x03\x02\x04\x03\x03\x03\x03\x02\x03\x02\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x03\x02\x02\x02\x03\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x06\x03\x04\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x01\x03\x03\x03\x03\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x06\x06\x03\x03\x02\x03\x02\x03\x03\x03\x03\x02\x03\x03\x03\x03\x04\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x02\x03\x03\x02\x03\x02\x02\x02\x02\x03\x04\x02\x03\x03\x03\x03\x03\x02\x02\x03\x03\x03\x02\x03\x02\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x02\x02\x04\x02\x03\x02\x04\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x04\x02\x04\x04\x02\x02\x02\x02\x02\x02\x04\x02\x02\x02\x04\x04\x03\x03\x03\x03\x03\x03\x03\x02\x03\x03\x02\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x06\x03\x03\x01\x01\x03\x03\x03\x02\x02\x03\x01\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x06\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x03\x03\x01\x03\x03\x03\x01\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x03\x03\x03\x01\x03\x03\x02\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x06\x06\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x03\x04\x03\x02\x03\x01\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x02\x03\x03\x05\x06\x05\x03\x03\x05\x06\x05\x03\x03\x03\x03\x02\x06\x03\x05\x05\x02\x03\x03\x03\x03\x02\x05\x05\x03\x02\x02\x03\x05\x03\x02\x03\x03\x03\x03\x03\x03\x05\x03\x03\x05\x03\x03\x04\x05\x03\x03\x05\x05\x05\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x05\x03\x03\x03\x03\x03\x03\x05\x05\x05\x03\x03\x03\x03\x03\x03\x04\x02\x03\x05\x05\x03\x03\x03\x03\x03\x03\x03\x03\x03\x06\x05\x03\x03\x03\x05\x03\x05\x03\x03\x05\x05\x03\x03\x03\x03\x03\x05\x04\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x05\x03\x06\x03\x05\x03\x05\x03\x05\x03\x06\x03\x05\x03\x02\x03\x03\x03\x03\x03\x02\x01\x03\x03\x03\x03\x06\x03\x06\x04\x03\x03\x06\x04\x06\x03\x06\x06\x03\x03\x03\x03\x03\x03\x02\x03\x03\x02\x02\x03\x02\x03\x03\x03\x02\x03\x04\x02\x02\x03\x03\x02\x03\x03\x03\x03\x03\x03\x02\x02\x02\x03\x03\x04\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x03\x03\x03\x03\x03\x02\x03\x02\x03\x03\x02\x03\x03\x02\x03\x03\x03\x03\x02\x01\x01\x03\x03\x03\x04\x02\x02\x03\x03\x02\x03\x02\x03\x03\x03\x01\x03\x03\x03\x03\x03\x03\x02\x03\x03\x02\x03\x04\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x02\x03\x04\x03\x04\x03\x04\x03\x03\x01\x03\x01\x03\x03\x03\x03\x03\x05\x02\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x01\x01\x03\x03\x03\x02\x02\x03\x01\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x03\x04\x03\x03\x03\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x03\x01\x03\x03\x03\x03\x04\x03\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x02\x03\x03\x02\x02\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x02\x01\x03\x03\x03\x03\x04\x03\x03\x02\x02\x03\x03\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x06\x02\x01\x03\x03\x04\x03\x03\x03\x03\x06\x03\x06\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x03\x03\x03\x03\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x02\x03\x02\x02\x02\x03\x03\x04\x03\x03\x02\x02\x02\x03\x03\x03\x03\x03\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x02\x02\x02\x03\x03\x03\x03\x03\x02\x03\x02\x02\x02\x02\x03\x02\x03\x03\x04\x02\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x04\x03\x03\x03\x03\x03\x02\x02\x02\x03\x03\x03\x03\x02\x03\x04\x03\x02\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x02\x02\x03\x02\x02\x03\x03\x02\x02\x06\x06\x06\x06\x02\x03\x03\x02\x03\x03\x03\x03\x03\x01\x01\x04\x03\x06\x06\x04\x03\x03\x04\x06\x06\x06\x06\x03\x02\x03\x03\x03\x03\x04\x04\x03\x03\x03\x04\x03\x03\x03\x03\x04\x03\x03\x02\x03\x03\x03\x03\x03\x04\x03\x03\x03\x03\x04\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x04\x02\x04\x04\x02\x02\x02\x02\x02\x02\x03\x02\x04\x02\x03\x04\x04\x03\x03" diff --git a/vendor/github.com/yuin/goldmark/util/html5entities.go b/vendor/github.com/yuin/goldmark/util/html5entities.go deleted file mode 100644 index ece2504c6..000000000 --- a/vendor/github.com/yuin/goldmark/util/html5entities.go +++ /dev/null @@ -1,47 +0,0 @@ -package util - -import ( - "sync" -) - -//go:generate go run ../_tools emb-structs -i ../_tools/html5entities.json -o ./html5entities.gen.go - -var _html5entitiesOnce sync.Once -var _html5entitiesMap map[string]*HTML5Entity - -func buildHTML5Entities() { - _html5entitiesOnce.Do(func() { - entities := make([]HTML5Entity, _html5entitiesLength) - _html5entitiesMap = make(map[string]*HTML5Entity, _html5entitiesLength) - - cName := 0 - cCharacters := 0 - for i := 0; i < _html5entitiesLength; i++ { - tName := cName + int(_html5entitiesNameIndex[i]) - tCharacters := cCharacters + int(_html5entitiesCharactersIndex[i]) - - name := _html5entitiesName[cName:tName] - e := &entities[i] - e.Name = name - e.Characters = _html5entitiesCharacters[cCharacters:tCharacters] - _html5entitiesMap[name] = e - - cName = tName - cCharacters = tCharacters - } - }) -} - -// HTML5Entity struct represents HTML5 entitites. -type HTML5Entity struct { - Name string - Characters []byte -} - -// LookUpHTML5EntityByName returns (an HTML5Entity, true) if an entity named -// given name is found, otherwise (nil, false). -func LookUpHTML5EntityByName(name string) (*HTML5Entity, bool) { - buildHTML5Entities() - v, ok := _html5entitiesMap[name] - return v, ok -} diff --git a/vendor/github.com/yuin/goldmark/util/unicode_case_folding.gen.go b/vendor/github.com/yuin/goldmark/util/unicode_case_folding.gen.go deleted file mode 100644 index eb91fb2d4..000000000 --- a/vendor/github.com/yuin/goldmark/util/unicode_case_folding.gen.go +++ /dev/null @@ -1,6 +0,0 @@ -// Code generated by _tools; DO NOT EDIT. -package util -const _unicodeCaseFoldingLength = 1530 -var _unicodeCaseFoldingFrom = [...]rune{0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0xb5, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11a, 0x11c, 0x11e, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12a, 0x12c, 0x12e, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13b, 0x13d, 0x13f, 0x141, 0x143, 0x145, 0x147, 0x149, 0x14a, 0x14c, 0x14e, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15a, 0x15c, 0x15e, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16a, 0x16c, 0x16e, 0x170, 0x172, 0x174, 0x176, 0x178, 0x179, 0x17b, 0x17d, 0x17f, 0x181, 0x182, 0x184, 0x186, 0x187, 0x189, 0x18a, 0x18b, 0x18e, 0x18f, 0x190, 0x191, 0x193, 0x194, 0x196, 0x197, 0x198, 0x19c, 0x19d, 0x19f, 0x1a0, 0x1a2, 0x1a4, 0x1a6, 0x1a7, 0x1a9, 0x1ac, 0x1ae, 0x1af, 0x1b1, 0x1b2, 0x1b3, 0x1b5, 0x1b7, 0x1b8, 0x1bc, 0x1c4, 0x1c5, 0x1c7, 0x1c8, 0x1ca, 0x1cb, 0x1cd, 0x1cf, 0x1d1, 0x1d3, 0x1d5, 0x1d7, 0x1d9, 0x1db, 0x1de, 0x1e0, 0x1e2, 0x1e4, 0x1e6, 0x1e8, 0x1ea, 0x1ec, 0x1ee, 0x1f0, 0x1f1, 0x1f2, 0x1f4, 0x1f6, 0x1f7, 0x1f8, 0x1fa, 0x1fc, 0x1fe, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20a, 0x20c, 0x20e, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21a, 0x21c, 0x21e, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22a, 0x22c, 0x22e, 0x230, 0x232, 0x23a, 0x23b, 0x23d, 0x23e, 0x241, 0x243, 0x244, 0x245, 0x246, 0x248, 0x24a, 0x24c, 0x24e, 0x345, 0x370, 0x372, 0x376, 0x37f, 0x386, 0x388, 0x389, 0x38a, 0x38c, 0x38e, 0x38f, 0x390, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f, 0x3a0, 0x3a1, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7, 0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x3b0, 0x3c2, 0x3cf, 0x3d0, 0x3d1, 0x3d5, 0x3d6, 0x3d8, 0x3da, 0x3dc, 0x3de, 0x3e0, 0x3e2, 0x3e4, 0x3e6, 0x3e8, 0x3ea, 0x3ec, 0x3ee, 0x3f0, 0x3f1, 0x3f4, 0x3f5, 0x3f7, 0x3f9, 0x3fa, 0x3fd, 0x3fe, 0x3ff, 0x400, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40a, 0x40b, 0x40c, 0x40d, 0x40e, 0x40f, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46a, 0x46c, 0x46e, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47a, 0x47c, 0x47e, 0x480, 0x48a, 0x48c, 0x48e, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49a, 0x49c, 0x49e, 0x4a0, 0x4a2, 0x4a4, 0x4a6, 0x4a8, 0x4aa, 0x4ac, 0x4ae, 0x4b0, 0x4b2, 0x4b4, 0x4b6, 0x4b8, 0x4ba, 0x4bc, 0x4be, 0x4c0, 0x4c1, 0x4c3, 0x4c5, 0x4c7, 0x4c9, 0x4cb, 0x4cd, 0x4d0, 0x4d2, 0x4d4, 0x4d6, 0x4d8, 0x4da, 0x4dc, 0x4de, 0x4e0, 0x4e2, 0x4e4, 0x4e6, 0x4e8, 0x4ea, 0x4ec, 0x4ee, 0x4f0, 0x4f2, 0x4f4, 0x4f6, 0x4f8, 0x4fa, 0x4fc, 0x4fe, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50a, 0x50c, 0x50e, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51a, 0x51c, 0x51e, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52a, 0x52c, 0x52e, 0x531, 0x532, 0x533, 0x534, 0x535, 0x536, 0x537, 0x538, 0x539, 0x53a, 0x53b, 0x53c, 0x53d, 0x53e, 0x53f, 0x540, 0x541, 0x542, 0x543, 0x544, 0x545, 0x546, 0x547, 0x548, 0x549, 0x54a, 0x54b, 0x54c, 0x54d, 0x54e, 0x54f, 0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x556, 0x587, 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, 0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, 0x10b8, 0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, 0x10c0, 0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x10c7, 0x10cd, 0x13f8, 0x13f9, 0x13fa, 0x13fb, 0x13fc, 0x13fd, 0x1c80, 0x1c81, 0x1c82, 0x1c83, 0x1c84, 0x1c85, 0x1c86, 0x1c87, 0x1c88, 0x1c90, 0x1c91, 0x1c92, 0x1c93, 0x1c94, 0x1c95, 0x1c96, 0x1c97, 0x1c98, 0x1c99, 0x1c9a, 0x1c9b, 0x1c9c, 0x1c9d, 0x1c9e, 0x1c9f, 0x1ca0, 0x1ca1, 0x1ca2, 0x1ca3, 0x1ca4, 0x1ca5, 0x1ca6, 0x1ca7, 0x1ca8, 0x1ca9, 0x1caa, 0x1cab, 0x1cac, 0x1cad, 0x1cae, 0x1caf, 0x1cb0, 0x1cb1, 0x1cb2, 0x1cb3, 0x1cb4, 0x1cb5, 0x1cb6, 0x1cb7, 0x1cb8, 0x1cb9, 0x1cba, 0x1cbd, 0x1cbe, 0x1cbf, 0x1e00, 0x1e02, 0x1e04, 0x1e06, 0x1e08, 0x1e0a, 0x1e0c, 0x1e0e, 0x1e10, 0x1e12, 0x1e14, 0x1e16, 0x1e18, 0x1e1a, 0x1e1c, 0x1e1e, 0x1e20, 0x1e22, 0x1e24, 0x1e26, 0x1e28, 0x1e2a, 0x1e2c, 0x1e2e, 0x1e30, 0x1e32, 0x1e34, 0x1e36, 0x1e38, 0x1e3a, 0x1e3c, 0x1e3e, 0x1e40, 0x1e42, 0x1e44, 0x1e46, 0x1e48, 0x1e4a, 0x1e4c, 0x1e4e, 0x1e50, 0x1e52, 0x1e54, 0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5e, 0x1e60, 0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, 0x1e72, 0x1e74, 0x1e76, 0x1e78, 0x1e7a, 0x1e7c, 0x1e7e, 0x1e80, 0x1e82, 0x1e84, 0x1e86, 0x1e88, 0x1e8a, 0x1e8c, 0x1e8e, 0x1e90, 0x1e92, 0x1e94, 0x1e96, 0x1e97, 0x1e98, 0x1e99, 0x1e9a, 0x1e9b, 0x1e9e, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8, 0x1eba, 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8, 0x1eca, 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8, 0x1eea, 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8, 0x1efa, 0x1efc, 0x1efe, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x1f50, 0x1f52, 0x1f54, 0x1f56, 0x1f59, 0x1f5b, 0x1f5d, 0x1f5f, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb6, 0x1fb7, 0x1fb8, 0x1fb9, 0x1fba, 0x1fbb, 0x1fbc, 0x1fbe, 0x1fc2, 0x1fc3, 0x1fc4, 0x1fc6, 0x1fc7, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fcc, 0x1fd2, 0x1fd3, 0x1fd6, 0x1fd7, 0x1fd8, 0x1fd9, 0x1fda, 0x1fdb, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe6, 0x1fe7, 0x1fe8, 0x1fe9, 0x1fea, 0x1feb, 0x1fec, 0x1ff2, 0x1ff3, 0x1ff4, 0x1ff6, 0x1ff7, 0x1ff8, 0x1ff9, 0x1ffa, 0x1ffb, 0x1ffc, 0x2126, 0x212a, 0x212b, 0x2132, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f, 0x2183, 0x24b6, 0x24b7, 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc, 0x24bd, 0x24be, 0x24bf, 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4, 0x24c5, 0x24c6, 0x24c7, 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc, 0x24cd, 0x24ce, 0x24cf, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 0x2c06, 0x2c07, 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 0x2c0f, 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17, 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f, 0x2c20, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27, 0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c60, 0x2c62, 0x2c63, 0x2c64, 0x2c67, 0x2c69, 0x2c6b, 0x2c6d, 0x2c6e, 0x2c6f, 0x2c70, 0x2c72, 0x2c75, 0x2c7e, 0x2c7f, 0x2c80, 0x2c82, 0x2c84, 0x2c86, 0x2c88, 0x2c8a, 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98, 0x2c9a, 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8, 0x2caa, 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8, 0x2cba, 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8, 0x2cca, 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8, 0x2cda, 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2, 0xa640, 0xa642, 0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e, 0xa650, 0xa652, 0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e, 0xa660, 0xa662, 0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680, 0xa682, 0xa684, 0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690, 0xa692, 0xa694, 0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726, 0xa728, 0xa72a, 0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738, 0xa73a, 0xa73c, 0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748, 0xa74a, 0xa74c, 0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758, 0xa75a, 0xa75c, 0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768, 0xa76a, 0xa76c, 0xa76e, 0xa779, 0xa77b, 0xa77d, 0xa77e, 0xa780, 0xa782, 0xa784, 0xa786, 0xa78b, 0xa78d, 0xa790, 0xa792, 0xa796, 0xa798, 0xa79a, 0xa79c, 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7aa, 0xa7ab, 0xa7ac, 0xa7ad, 0xa7ae, 0xa7b0, 0xa7b1, 0xa7b2, 0xa7b3, 0xa7b4, 0xa7b6, 0xa7b8, 0xa7ba, 0xa7bc, 0xa7be, 0xa7c0, 0xa7c2, 0xa7c4, 0xa7c5, 0xa7c6, 0xa7c7, 0xa7c9, 0xa7d0, 0xa7d6, 0xa7d8, 0xa7f5, 0xab70, 0xab71, 0xab72, 0xab73, 0xab74, 0xab75, 0xab76, 0xab77, 0xab78, 0xab79, 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab7e, 0xab7f, 0xab80, 0xab81, 0xab82, 0xab83, 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, 0xab8d, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab92, 0xab93, 0xab94, 0xab95, 0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d, 0xab9e, 0xab9f, 0xaba0, 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5, 0xaba6, 0xaba7, 0xaba8, 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad, 0xabae, 0xabaf, 0xabb0, 0xabb1, 0xabb2, 0xabb3, 0xabb4, 0xabb5, 0xabb6, 0xabb7, 0xabb8, 0xabb9, 0xabba, 0xabbb, 0xabbc, 0xabbd, 0xabbe, 0xabbf, 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0xfb05, 0xfb06, 0xfb13, 0xfb14, 0xfb15, 0xfb16, 0xfb17, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0x10400, 0x10401, 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, 0x10407, 0x10408, 0x10409, 0x1040a, 0x1040b, 0x1040c, 0x1040d, 0x1040e, 0x1040f, 0x10410, 0x10411, 0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 0x10418, 0x10419, 0x1041a, 0x1041b, 0x1041c, 0x1041d, 0x1041e, 0x1041f, 0x10420, 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426, 0x10427, 0x104b0, 0x104b1, 0x104b2, 0x104b3, 0x104b4, 0x104b5, 0x104b6, 0x104b7, 0x104b8, 0x104b9, 0x104ba, 0x104bb, 0x104bc, 0x104bd, 0x104be, 0x104bf, 0x104c0, 0x104c1, 0x104c2, 0x104c3, 0x104c4, 0x104c5, 0x104c6, 0x104c7, 0x104c8, 0x104c9, 0x104ca, 0x104cb, 0x104cc, 0x104cd, 0x104ce, 0x104cf, 0x104d0, 0x104d1, 0x104d2, 0x104d3, 0x10570, 0x10571, 0x10572, 0x10573, 0x10574, 0x10575, 0x10576, 0x10577, 0x10578, 0x10579, 0x1057a, 0x1057c, 0x1057d, 0x1057e, 0x1057f, 0x10580, 0x10581, 0x10582, 0x10583, 0x10584, 0x10585, 0x10586, 0x10587, 0x10588, 0x10589, 0x1058a, 0x1058c, 0x1058d, 0x1058e, 0x1058f, 0x10590, 0x10591, 0x10592, 0x10594, 0x10595, 0x10c80, 0x10c81, 0x10c82, 0x10c83, 0x10c84, 0x10c85, 0x10c86, 0x10c87, 0x10c88, 0x10c89, 0x10c8a, 0x10c8b, 0x10c8c, 0x10c8d, 0x10c8e, 0x10c8f, 0x10c90, 0x10c91, 0x10c92, 0x10c93, 0x10c94, 0x10c95, 0x10c96, 0x10c97, 0x10c98, 0x10c99, 0x10c9a, 0x10c9b, 0x10c9c, 0x10c9d, 0x10c9e, 0x10c9f, 0x10ca0, 0x10ca1, 0x10ca2, 0x10ca3, 0x10ca4, 0x10ca5, 0x10ca6, 0x10ca7, 0x10ca8, 0x10ca9, 0x10caa, 0x10cab, 0x10cac, 0x10cad, 0x10cae, 0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x118a0, 0x118a1, 0x118a2, 0x118a3, 0x118a4, 0x118a5, 0x118a6, 0x118a7, 0x118a8, 0x118a9, 0x118aa, 0x118ab, 0x118ac, 0x118ad, 0x118ae, 0x118af, 0x118b0, 0x118b1, 0x118b2, 0x118b3, 0x118b4, 0x118b5, 0x118b6, 0x118b7, 0x118b8, 0x118b9, 0x118ba, 0x118bb, 0x118bc, 0x118bd, 0x118be, 0x118bf, 0x16e40, 0x16e41, 0x16e42, 0x16e43, 0x16e44, 0x16e45, 0x16e46, 0x16e47, 0x16e48, 0x16e49, 0x16e4a, 0x16e4b, 0x16e4c, 0x16e4d, 0x16e4e, 0x16e4f, 0x16e50, 0x16e51, 0x16e52, 0x16e53, 0x16e54, 0x16e55, 0x16e56, 0x16e57, 0x16e58, 0x16e59, 0x16e5a, 0x16e5b, 0x16e5c, 0x16e5d, 0x16e5e, 0x16e5f, 0x1e900, 0x1e901, 0x1e902, 0x1e903, 0x1e904, 0x1e905, 0x1e906, 0x1e907, 0x1e908, 0x1e909, 0x1e90a, 0x1e90b, 0x1e90c, 0x1e90d, 0x1e90e, 0x1e90f, 0x1e910, 0x1e911, 0x1e912, 0x1e913, 0x1e914, 0x1e915, 0x1e916, 0x1e917, 0x1e918, 0x1e919, 0x1e91a, 0x1e91b, 0x1e91c, 0x1e91d, 0x1e91e, 0x1e91f, 0x1e920, 0x1e921} -var _unicodeCaseFoldingTo = [...]rune{97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 956, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 248, 249, 250, 251, 252, 253, 254, 115, 115, 257, 259, 261, 263, 265, 267, 269, 271, 273, 275, 277, 279, 281, 283, 285, 287, 289, 291, 293, 295, 297, 299, 301, 303, 105, 775, 307, 309, 311, 314, 316, 318, 320, 322, 324, 326, 328, 700, 110, 331, 333, 335, 337, 339, 341, 343, 345, 347, 349, 351, 353, 355, 357, 359, 361, 363, 365, 367, 369, 371, 373, 375, 255, 378, 380, 382, 115, 595, 387, 389, 596, 392, 598, 599, 396, 477, 601, 603, 402, 608, 611, 617, 616, 409, 623, 626, 629, 417, 419, 421, 640, 424, 643, 429, 648, 432, 650, 651, 436, 438, 658, 441, 445, 454, 454, 457, 457, 460, 460, 462, 464, 466, 468, 470, 472, 474, 476, 479, 481, 483, 485, 487, 489, 491, 493, 495, 106, 780, 499, 499, 501, 405, 447, 505, 507, 509, 511, 513, 515, 517, 519, 521, 523, 525, 527, 529, 531, 533, 535, 537, 539, 541, 543, 414, 547, 549, 551, 553, 555, 557, 559, 561, 563, 11365, 572, 410, 11366, 578, 384, 649, 652, 583, 585, 587, 589, 591, 953, 881, 883, 887, 1011, 940, 941, 942, 943, 972, 973, 974, 953, 776, 769, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 963, 964, 965, 966, 967, 968, 969, 970, 971, 965, 776, 769, 963, 983, 946, 952, 966, 960, 985, 987, 989, 991, 993, 995, 997, 999, 1001, 1003, 1005, 1007, 954, 961, 952, 949, 1016, 1010, 1019, 891, 892, 893, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1121, 1123, 1125, 1127, 1129, 1131, 1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151, 1153, 1163, 1165, 1167, 1169, 1171, 1173, 1175, 1177, 1179, 1181, 1183, 1185, 1187, 1189, 1191, 1193, 1195, 1197, 1199, 1201, 1203, 1205, 1207, 1209, 1211, 1213, 1215, 1231, 1218, 1220, 1222, 1224, 1226, 1228, 1230, 1233, 1235, 1237, 1239, 1241, 1243, 1245, 1247, 1249, 1251, 1253, 1255, 1257, 1259, 1261, 1263, 1265, 1267, 1269, 1271, 1273, 1275, 1277, 1279, 1281, 1283, 1285, 1287, 1289, 1291, 1293, 1295, 1297, 1299, 1301, 1303, 1305, 1307, 1309, 1311, 1313, 1315, 1317, 1319, 1321, 1323, 1325, 1327, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1381, 1410, 11520, 11521, 11522, 11523, 11524, 11525, 11526, 11527, 11528, 11529, 11530, 11531, 11532, 11533, 11534, 11535, 11536, 11537, 11538, 11539, 11540, 11541, 11542, 11543, 11544, 11545, 11546, 11547, 11548, 11549, 11550, 11551, 11552, 11553, 11554, 11555, 11556, 11557, 11559, 11565, 5104, 5105, 5106, 5107, 5108, 5109, 1074, 1076, 1086, 1089, 1090, 1090, 1098, 1123, 42571, 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, 4335, 4336, 4337, 4338, 4339, 4340, 4341, 4342, 4343, 4344, 4345, 4346, 4349, 4350, 4351, 7681, 7683, 7685, 7687, 7689, 7691, 7693, 7695, 7697, 7699, 7701, 7703, 7705, 7707, 7709, 7711, 7713, 7715, 7717, 7719, 7721, 7723, 7725, 7727, 7729, 7731, 7733, 7735, 7737, 7739, 7741, 7743, 7745, 7747, 7749, 7751, 7753, 7755, 7757, 7759, 7761, 7763, 7765, 7767, 7769, 7771, 7773, 7775, 7777, 7779, 7781, 7783, 7785, 7787, 7789, 7791, 7793, 7795, 7797, 7799, 7801, 7803, 7805, 7807, 7809, 7811, 7813, 7815, 7817, 7819, 7821, 7823, 7825, 7827, 7829, 104, 817, 116, 776, 119, 778, 121, 778, 97, 702, 7777, 115, 115, 7841, 7843, 7845, 7847, 7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863, 7865, 7867, 7869, 7871, 7873, 7875, 7877, 7879, 7881, 7883, 7885, 7887, 7889, 7891, 7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907, 7909, 7911, 7913, 7915, 7917, 7919, 7921, 7923, 7925, 7927, 7929, 7931, 7933, 7935, 7936, 7937, 7938, 7939, 7940, 7941, 7942, 7943, 7952, 7953, 7954, 7955, 7956, 7957, 7968, 7969, 7970, 7971, 7972, 7973, 7974, 7975, 7984, 7985, 7986, 7987, 7988, 7989, 7990, 7991, 8000, 8001, 8002, 8003, 8004, 8005, 965, 787, 965, 787, 768, 965, 787, 769, 965, 787, 834, 8017, 8019, 8021, 8023, 8032, 8033, 8034, 8035, 8036, 8037, 8038, 8039, 7936, 953, 7937, 953, 7938, 953, 7939, 953, 7940, 953, 7941, 953, 7942, 953, 7943, 953, 7936, 953, 7937, 953, 7938, 953, 7939, 953, 7940, 953, 7941, 953, 7942, 953, 7943, 953, 7968, 953, 7969, 953, 7970, 953, 7971, 953, 7972, 953, 7973, 953, 7974, 953, 7975, 953, 7968, 953, 7969, 953, 7970, 953, 7971, 953, 7972, 953, 7973, 953, 7974, 953, 7975, 953, 8032, 953, 8033, 953, 8034, 953, 8035, 953, 8036, 953, 8037, 953, 8038, 953, 8039, 953, 8032, 953, 8033, 953, 8034, 953, 8035, 953, 8036, 953, 8037, 953, 8038, 953, 8039, 953, 8048, 953, 945, 953, 940, 953, 945, 834, 945, 834, 953, 8112, 8113, 8048, 8049, 945, 953, 953, 8052, 953, 951, 953, 942, 953, 951, 834, 951, 834, 953, 8050, 8051, 8052, 8053, 951, 953, 953, 776, 768, 953, 776, 769, 953, 834, 953, 776, 834, 8144, 8145, 8054, 8055, 965, 776, 768, 965, 776, 769, 961, 787, 965, 834, 965, 776, 834, 8160, 8161, 8058, 8059, 8165, 8060, 953, 969, 953, 974, 953, 969, 834, 969, 834, 953, 8056, 8057, 8060, 8061, 969, 953, 969, 107, 229, 8526, 8560, 8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 8570, 8571, 8572, 8573, 8574, 8575, 8580, 9424, 9425, 9426, 9427, 9428, 9429, 9430, 9431, 9432, 9433, 9434, 9435, 9436, 9437, 9438, 9439, 9440, 9441, 9442, 9443, 9444, 9445, 9446, 9447, 9448, 9449, 11312, 11313, 11314, 11315, 11316, 11317, 11318, 11319, 11320, 11321, 11322, 11323, 11324, 11325, 11326, 11327, 11328, 11329, 11330, 11331, 11332, 11333, 11334, 11335, 11336, 11337, 11338, 11339, 11340, 11341, 11342, 11343, 11344, 11345, 11346, 11347, 11348, 11349, 11350, 11351, 11352, 11353, 11354, 11355, 11356, 11357, 11358, 11359, 11361, 619, 7549, 637, 11368, 11370, 11372, 593, 625, 592, 594, 11379, 11382, 575, 576, 11393, 11395, 11397, 11399, 11401, 11403, 11405, 11407, 11409, 11411, 11413, 11415, 11417, 11419, 11421, 11423, 11425, 11427, 11429, 11431, 11433, 11435, 11437, 11439, 11441, 11443, 11445, 11447, 11449, 11451, 11453, 11455, 11457, 11459, 11461, 11463, 11465, 11467, 11469, 11471, 11473, 11475, 11477, 11479, 11481, 11483, 11485, 11487, 11489, 11491, 11500, 11502, 11507, 42561, 42563, 42565, 42567, 42569, 42571, 42573, 42575, 42577, 42579, 42581, 42583, 42585, 42587, 42589, 42591, 42593, 42595, 42597, 42599, 42601, 42603, 42605, 42625, 42627, 42629, 42631, 42633, 42635, 42637, 42639, 42641, 42643, 42645, 42647, 42649, 42651, 42787, 42789, 42791, 42793, 42795, 42797, 42799, 42803, 42805, 42807, 42809, 42811, 42813, 42815, 42817, 42819, 42821, 42823, 42825, 42827, 42829, 42831, 42833, 42835, 42837, 42839, 42841, 42843, 42845, 42847, 42849, 42851, 42853, 42855, 42857, 42859, 42861, 42863, 42874, 42876, 7545, 42879, 42881, 42883, 42885, 42887, 42892, 613, 42897, 42899, 42903, 42905, 42907, 42909, 42911, 42913, 42915, 42917, 42919, 42921, 614, 604, 609, 620, 618, 670, 647, 669, 43859, 42933, 42935, 42937, 42939, 42941, 42943, 42945, 42947, 42900, 642, 7566, 42952, 42954, 42961, 42967, 42969, 42998, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, 102, 102, 102, 105, 102, 108, 102, 102, 105, 102, 102, 108, 115, 116, 115, 116, 1396, 1398, 1396, 1381, 1396, 1387, 1406, 1398, 1396, 1389, 65345, 65346, 65347, 65348, 65349, 65350, 65351, 65352, 65353, 65354, 65355, 65356, 65357, 65358, 65359, 65360, 65361, 65362, 65363, 65364, 65365, 65366, 65367, 65368, 65369, 65370, 66600, 66601, 66602, 66603, 66604, 66605, 66606, 66607, 66608, 66609, 66610, 66611, 66612, 66613, 66614, 66615, 66616, 66617, 66618, 66619, 66620, 66621, 66622, 66623, 66624, 66625, 66626, 66627, 66628, 66629, 66630, 66631, 66632, 66633, 66634, 66635, 66636, 66637, 66638, 66639, 66776, 66777, 66778, 66779, 66780, 66781, 66782, 66783, 66784, 66785, 66786, 66787, 66788, 66789, 66790, 66791, 66792, 66793, 66794, 66795, 66796, 66797, 66798, 66799, 66800, 66801, 66802, 66803, 66804, 66805, 66806, 66807, 66808, 66809, 66810, 66811, 66967, 66968, 66969, 66970, 66971, 66972, 66973, 66974, 66975, 66976, 66977, 66979, 66980, 66981, 66982, 66983, 66984, 66985, 66986, 66987, 66988, 66989, 66990, 66991, 66992, 66993, 66995, 66996, 66997, 66998, 66999, 67000, 67001, 67003, 67004, 68800, 68801, 68802, 68803, 68804, 68805, 68806, 68807, 68808, 68809, 68810, 68811, 68812, 68813, 68814, 68815, 68816, 68817, 68818, 68819, 68820, 68821, 68822, 68823, 68824, 68825, 68826, 68827, 68828, 68829, 68830, 68831, 68832, 68833, 68834, 68835, 68836, 68837, 68838, 68839, 68840, 68841, 68842, 68843, 68844, 68845, 68846, 68847, 68848, 68849, 68850, 71872, 71873, 71874, 71875, 71876, 71877, 71878, 71879, 71880, 71881, 71882, 71883, 71884, 71885, 71886, 71887, 71888, 71889, 71890, 71891, 71892, 71893, 71894, 71895, 71896, 71897, 71898, 71899, 71900, 71901, 71902, 71903, 93792, 93793, 93794, 93795, 93796, 93797, 93798, 93799, 93800, 93801, 93802, 93803, 93804, 93805, 93806, 93807, 93808, 93809, 93810, 93811, 93812, 93813, 93814, 93815, 93816, 93817, 93818, 93819, 93820, 93821, 93822, 93823, 125218, 125219, 125220, 125221, 125222, 125223, 125224, 125225, 125226, 125227, 125228, 125229, 125230, 125231, 125232, 125233, 125234, 125235, 125236, 125237, 125238, 125239, 125240, 125241, 125242, 125243, 125244, 125245, 125246, 125247, 125248, 125249, 125250, 125251} -var _unicodeCaseFoldingToIndex = "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x03\x03\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x01\x01\x01\x01\x02\x01\x02\x02\x02\x02\x03\x01\x01\x01\x01\x02\x03\x03\x02\x03\x01\x01\x01\x01\x03\x03\x02\x02\x03\x01\x01\x01\x01\x01\x02\x02\x02\x02\x03\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x03\x03\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01" diff --git a/vendor/github.com/yuin/goldmark/util/unicode_case_folding.go b/vendor/github.com/yuin/goldmark/util/unicode_case_folding.go deleted file mode 100644 index 938ed0ba6..000000000 --- a/vendor/github.com/yuin/goldmark/util/unicode_case_folding.go +++ /dev/null @@ -1,17 +0,0 @@ -package util - -//go:generate go run ../_tools unicode-case-folding-map -o ../_tools/unicode-case-folding-map.json -//go:generate go run ../_tools emb-structs -i ../_tools/unicode-case-folding-map.json -o ./unicode_case_folding.gen.go - -var unicodeCaseFoldings map[rune][]rune - -func init() { - unicodeCaseFoldings = make(map[rune][]rune, _unicodeCaseFoldingLength) - cTo := 0 - for i := 0; i < _unicodeCaseFoldingLength; i++ { - tTo := cTo + int(_unicodeCaseFoldingToIndex[i]) - to := _unicodeCaseFoldingTo[cTo:tTo] - unicodeCaseFoldings[_unicodeCaseFoldingFrom[i]] = to - cTo = tTo - } -} diff --git a/vendor/github.com/yuin/goldmark/util/util.go b/vendor/github.com/yuin/goldmark/util/util.go deleted file mode 100644 index c074d725c..000000000 --- a/vendor/github.com/yuin/goldmark/util/util.go +++ /dev/null @@ -1,1044 +0,0 @@ -// Package util provides utility functions for the goldmark. -package util - -import ( - "bytes" - "io" - "net/url" - "regexp" - "sort" - "strconv" - "unicode" - "unicode/utf8" -) - -// A CopyOnWriteBuffer is a byte buffer that copies buffer when -// it need to be changed. -type CopyOnWriteBuffer struct { - buffer []byte - copied bool -} - -// NewCopyOnWriteBuffer returns a new CopyOnWriteBuffer. -func NewCopyOnWriteBuffer(buffer []byte) CopyOnWriteBuffer { - return CopyOnWriteBuffer{ - buffer: buffer, - copied: false, - } -} - -// Write writes given bytes to the buffer. -// Write allocate new buffer and clears it at the first time. -func (b *CopyOnWriteBuffer) Write(value []byte) { - if !b.copied { - b.buffer = make([]byte, 0, len(b.buffer)+20) - b.copied = true - } - b.buffer = append(b.buffer, value...) -} - -// WriteString writes given string to the buffer. -// WriteString allocate new buffer and clears it at the first time. -func (b *CopyOnWriteBuffer) WriteString(value string) { - b.Write(StringToReadOnlyBytes(value)) -} - -// Append appends given bytes to the buffer. -// Append copy buffer at the first time. -func (b *CopyOnWriteBuffer) Append(value []byte) { - if !b.copied { - tmp := make([]byte, len(b.buffer), len(b.buffer)+20) - copy(tmp, b.buffer) - b.buffer = tmp - b.copied = true - } - b.buffer = append(b.buffer, value...) -} - -// AppendString appends given string to the buffer. -// AppendString copy buffer at the first time. -func (b *CopyOnWriteBuffer) AppendString(value string) { - b.Append(StringToReadOnlyBytes(value)) -} - -// WriteByte writes the given byte to the buffer. -// WriteByte allocate new buffer and clears it at the first time. -func (b *CopyOnWriteBuffer) WriteByte(c byte) error { - if !b.copied { - b.buffer = make([]byte, 0, len(b.buffer)+20) - b.copied = true - } - b.buffer = append(b.buffer, c) - return nil -} - -// AppendByte appends given bytes to the buffer. -// AppendByte copy buffer at the first time. -func (b *CopyOnWriteBuffer) AppendByte(c byte) { - if !b.copied { - tmp := make([]byte, len(b.buffer), len(b.buffer)+20) - copy(tmp, b.buffer) - b.buffer = tmp - b.copied = true - } - b.buffer = append(b.buffer, c) -} - -// Bytes returns bytes of this buffer. -func (b *CopyOnWriteBuffer) Bytes() []byte { - return b.buffer -} - -// IsCopied returns true if buffer has been copied, otherwise false. -func (b *CopyOnWriteBuffer) IsCopied() bool { - return b.copied -} - -// IsEscapedPunctuation returns true if character at a given index i -// is an escaped punctuation, otherwise false. -func IsEscapedPunctuation(source []byte, i int) bool { - return source[i] == '\\' && i < len(source)-1 && IsPunct(source[i+1]) -} - -// ReadWhile read the given source while pred is true. -func ReadWhile(source []byte, index [2]int, pred func(byte) bool) (int, bool) { - j := index[0] - ok := false - for ; j < index[1]; j++ { - c1 := source[j] - if pred(c1) { - ok = true - continue - } - break - } - return j, ok -} - -// IsBlank returns true if the given string is all space characters. -func IsBlank(bs []byte) bool { - for _, b := range bs { - if !IsSpace(b) { - return false - } - } - return true -} - -// VisualizeSpaces visualize invisible space characters. -func VisualizeSpaces(bs []byte) []byte { - bs = bytes.Replace(bs, []byte(" "), []byte("[SPACE]"), -1) - bs = bytes.Replace(bs, []byte("\t"), []byte("[TAB]"), -1) - bs = bytes.Replace(bs, []byte("\n"), []byte("[NEWLINE]\n"), -1) - bs = bytes.Replace(bs, []byte("\r"), []byte("[CR]"), -1) - bs = bytes.Replace(bs, []byte("\v"), []byte("[VTAB]"), -1) - bs = bytes.Replace(bs, []byte("\x00"), []byte("[NUL]"), -1) - bs = bytes.Replace(bs, []byte("\ufffd"), []byte("[U+FFFD]"), -1) - return bs -} - -// TabWidth calculates actual width of a tab at the given position. -func TabWidth(currentPos int) int { - return 4 - currentPos%4 -} - -// IndentPosition searches an indent position with the given width for the given line. -// If the line contains tab characters, paddings may be not zero. -// currentPos==0 and width==2: -// -// position: 0 1 -// [TAB]aaaa -// width: 1234 5678 -// -// width=2 is in the tab character. In this case, IndentPosition returns -// (pos=1, padding=2). -func IndentPosition(bs []byte, currentPos, width int) (pos, padding int) { - return IndentPositionPadding(bs, currentPos, 0, width) -} - -// IndentPositionPadding searches an indent position with the given width for the given line. -// This function is mostly same as IndentPosition except this function -// takes account into additional paddings. -func IndentPositionPadding(bs []byte, currentPos, paddingv, width int) (pos, padding int) { - if width == 0 { - return 0, paddingv - } - w := 0 - i := 0 - l := len(bs) - p := paddingv - for ; i < l; i++ { - if p > 0 { - p-- - w++ - continue - } - if bs[i] == '\t' && w < width { - w += TabWidth(currentPos + w) - } else if bs[i] == ' ' && w < width { - w++ - } else { - break - } - } - if w >= width { - return i - paddingv, w - width - } - return -1, -1 -} - -// DedentPosition dedents lines by the given width. -// -// Deprecated: This function has bugs. Use util.IndentPositionPadding and util.FirstNonSpacePosition. -func DedentPosition(bs []byte, currentPos, width int) (pos, padding int) { - if width == 0 { - return 0, 0 - } - w := 0 - l := len(bs) - i := 0 - for ; i < l; i++ { - if bs[i] == '\t' { - w += TabWidth(currentPos + w) - } else if bs[i] == ' ' { - w++ - } else { - break - } - } - if w >= width { - return i, w - width - } - return i, 0 -} - -// DedentPositionPadding dedents lines by the given width. -// This function is mostly same as DedentPosition except this function -// takes account into additional paddings. -// -// Deprecated: This function has bugs. Use util.IndentPositionPadding and util.FirstNonSpacePosition. -func DedentPositionPadding(bs []byte, currentPos, paddingv, width int) (pos, padding int) { - if width == 0 { - return 0, paddingv - } - - w := 0 - i := 0 - l := len(bs) - for ; i < l; i++ { - if bs[i] == '\t' { - w += TabWidth(currentPos + w) - } else if bs[i] == ' ' { - w++ - } else { - break - } - } - if w >= width { - return i - paddingv, w - width - } - return i - paddingv, 0 -} - -// IndentWidth calculate an indent width for the given line. -func IndentWidth(bs []byte, currentPos int) (width, pos int) { - l := len(bs) - for i := 0; i < l; i++ { - b := bs[i] - if b == ' ' { - width++ - pos++ - } else if b == '\t' { - width += TabWidth(currentPos + width) - pos++ - } else { - break - } - } - return -} - -// FirstNonSpacePosition returns a position line that is a first nonspace -// character. -func FirstNonSpacePosition(bs []byte) int { - i := 0 - for ; i < len(bs); i++ { - c := bs[i] - if c == ' ' || c == '\t' { - continue - } - if c == '\n' { - return -1 - } - return i - } - return -1 -} - -// FindClosure returns a position that closes the given opener. -// If codeSpan is set true, it ignores characters in code spans. -// If allowNesting is set true, closures correspond to nested opener will be -// ignored. -// -// Deprecated: This function can not handle newlines. Many elements -// can be existed over multiple lines(e.g. link labels). -// Use text.Reader.FindClosure. -func FindClosure(bs []byte, opener, closure byte, codeSpan, allowNesting bool) int { - i := 0 - opened := 1 - codeSpanOpener := 0 - for i < len(bs) { - c := bs[i] - if codeSpan && codeSpanOpener != 0 && c == '`' { - codeSpanCloser := 0 - for ; i < len(bs); i++ { - if bs[i] == '`' { - codeSpanCloser++ - } else { - i-- - break - } - } - if codeSpanCloser == codeSpanOpener { - codeSpanOpener = 0 - } - } else if codeSpanOpener == 0 && c == '\\' && i < len(bs)-1 && IsPunct(bs[i+1]) { - i += 2 - continue - } else if codeSpan && codeSpanOpener == 0 && c == '`' { - for ; i < len(bs); i++ { - if bs[i] == '`' { - codeSpanOpener++ - } else { - i-- - break - } - } - } else if (codeSpan && codeSpanOpener == 0) || !codeSpan { - if c == closure { - opened-- - if opened == 0 { - return i - } - } else if c == opener { - if !allowNesting { - return -1 - } - opened++ - } - } - i++ - } - return -1 -} - -// TrimLeft trims characters in the given s from head of the source. -// bytes.TrimLeft offers same functionalities, but bytes.TrimLeft -// allocates new buffer for the result. -func TrimLeft(source, b []byte) []byte { - i := 0 - for ; i < len(source); i++ { - c := source[i] - found := false - for j := 0; j < len(b); j++ { - if c == b[j] { - found = true - break - } - } - if !found { - break - } - } - return source[i:] -} - -// TrimRight trims characters in the given s from tail of the source. -func TrimRight(source, b []byte) []byte { - i := len(source) - 1 - for ; i >= 0; i-- { - c := source[i] - found := false - for j := 0; j < len(b); j++ { - if c == b[j] { - found = true - break - } - } - if !found { - break - } - } - return source[:i+1] -} - -// TrimLeftLength returns a length of leading specified characters. -func TrimLeftLength(source, s []byte) int { - return len(source) - len(TrimLeft(source, s)) -} - -// TrimRightLength returns a length of trailing specified characters. -func TrimRightLength(source, s []byte) int { - return len(source) - len(TrimRight(source, s)) -} - -// TrimLeftSpaceLength returns a length of leading space characters. -func TrimLeftSpaceLength(source []byte) int { - i := 0 - for ; i < len(source); i++ { - if !IsSpace(source[i]) { - break - } - } - return i -} - -// TrimRightSpaceLength returns a length of trailing space characters. -func TrimRightSpaceLength(source []byte) int { - l := len(source) - i := l - 1 - for ; i >= 0; i-- { - if !IsSpace(source[i]) { - break - } - } - if i < 0 { - return l - } - return l - 1 - i -} - -// TrimLeftSpace returns a subslice of the given string by slicing off all leading -// space characters. -func TrimLeftSpace(source []byte) []byte { - return TrimLeft(source, spaces) -} - -// TrimRightSpace returns a subslice of the given string by slicing off all trailing -// space characters. -func TrimRightSpace(source []byte) []byte { - return TrimRight(source, spaces) -} - -// DoFullUnicodeCaseFolding performs full unicode case folding to given bytes. -func DoFullUnicodeCaseFolding(v []byte) []byte { - var rbuf []byte - cob := NewCopyOnWriteBuffer(v) - n := 0 - for i := 0; i < len(v); i++ { - c := v[i] - if c < 0xb5 { - if c >= 0x41 && c <= 0x5a { - // A-Z to a-z - cob.Write(v[n:i]) - _ = cob.WriteByte(c + 32) - n = i + 1 - } - continue - } - - if !utf8.RuneStart(c) { - continue - } - r, length := utf8.DecodeRune(v[i:]) - if r == utf8.RuneError { - continue - } - folded, ok := unicodeCaseFoldings[r] - if !ok { - continue - } - - cob.Write(v[n:i]) - if rbuf == nil { - rbuf = make([]byte, 4) - } - for _, f := range folded { - l := utf8.EncodeRune(rbuf, f) - cob.Write(rbuf[:l]) - } - i += length - 1 - n = i + 1 - } - if cob.IsCopied() { - cob.Write(v[n:]) - } - return cob.Bytes() -} - -// ReplaceSpaces replaces sequence of spaces with the given repl. -func ReplaceSpaces(source []byte, repl byte) []byte { - var ret []byte - start := -1 - for i, c := range source { - iss := IsSpace(c) - if start < 0 && iss { - start = i - continue - } else if start >= 0 && iss { - continue - } else if start >= 0 { - if ret == nil { - ret = make([]byte, 0, len(source)) - ret = append(ret, source[:start]...) - } - ret = append(ret, repl) - start = -1 - } - if ret != nil { - ret = append(ret, c) - } - } - if start >= 0 && ret != nil { - ret = append(ret, repl) - } - if ret == nil { - return source - } - return ret -} - -// ToRune decode given bytes start at pos and returns a rune. -func ToRune(source []byte, pos int) rune { - i := pos - for ; i >= 0; i-- { - if utf8.RuneStart(source[i]) { - break - } - } - r, _ := utf8.DecodeRune(source[i:]) - return r -} - -// ToValidRune returns 0xFFFD if the given rune is invalid, otherwise v. -func ToValidRune(v rune) rune { - if v == 0 || !utf8.ValidRune(v) { - return rune(0xFFFD) - } - return v -} - -// ToLinkReference converts given bytes into a valid link reference string. -// ToLinkReference performs unicode case folding, trims leading and trailing spaces, converts into lower -// case and replace spaces with a single space character. -func ToLinkReference(v []byte) string { - v = TrimLeftSpace(v) - v = TrimRightSpace(v) - v = DoFullUnicodeCaseFolding(v) - return string(ReplaceSpaces(v, ' ')) -} - -var htmlQuote = []byte(""") -var htmlAmp = []byte("&") -var htmlLess = []byte("<") -var htmlGreater = []byte(">") - -var htmlEscapeTable = [256]*[]byte{nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, &htmlQuote, nil, nil, nil, &htmlAmp, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, &htmlLess, nil, &htmlGreater, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil} //nolint:golint,lll - -// EscapeHTMLByte returns HTML escaped bytes if the given byte should be escaped, -// otherwise nil. -func EscapeHTMLByte(b byte) []byte { - v := htmlEscapeTable[b] - if v != nil { - return *v - } - return nil -} - -// EscapeHTML escapes characters that should be escaped in HTML text. -func EscapeHTML(v []byte) []byte { - cob := NewCopyOnWriteBuffer(v) - n := 0 - for i := 0; i < len(v); i++ { - c := v[i] - escaped := htmlEscapeTable[c] - if escaped != nil { - cob.Write(v[n:i]) - cob.Write(*escaped) - n = i + 1 - } - } - if cob.IsCopied() { - cob.Write(v[n:]) - } - return cob.Bytes() -} - -// UnescapePunctuations unescapes blackslash escaped punctuations. -func UnescapePunctuations(source []byte) []byte { - cob := NewCopyOnWriteBuffer(source) - limit := len(source) - n := 0 - for i := 0; i < limit; { - c := source[i] - if i < limit-1 && c == '\\' && IsPunct(source[i+1]) { - cob.Write(source[n:i]) - _ = cob.WriteByte(source[i+1]) - i += 2 - n = i - continue - } - i++ - } - if cob.IsCopied() { - cob.Write(source[n:]) - } - return cob.Bytes() -} - -// ResolveNumericReferences resolve numeric references like 'Ӓ" . -func ResolveNumericReferences(source []byte) []byte { - cob := NewCopyOnWriteBuffer(source) - buf := make([]byte, 6) - limit := len(source) - var ok bool - n := 0 - for i := 0; i < limit; i++ { - if source[i] == '&' { - pos := i - next := i + 1 - if next < limit && source[next] == '#' { - nnext := next + 1 - if nnext < limit { - nc := source[nnext] - // code point like #x22; - if nnext < limit && nc == 'x' || nc == 'X' { - start := nnext + 1 - i, ok = ReadWhile(source, [2]int{start, limit}, IsHexDecimal) - if ok && i < limit && source[i] == ';' { - v, _ := strconv.ParseUint(BytesToReadOnlyString(source[start:i]), 16, 32) - cob.Write(source[n:pos]) - n = i + 1 - runeSize := utf8.EncodeRune(buf, ToValidRune(rune(v))) - cob.Write(buf[:runeSize]) - continue - } - // code point like #1234; - } else if nc >= '0' && nc <= '9' { - start := nnext - i, ok = ReadWhile(source, [2]int{start, limit}, IsNumeric) - if ok && i < limit && i-start < 8 && source[i] == ';' { - v, _ := strconv.ParseUint(BytesToReadOnlyString(source[start:i]), 0, 32) - cob.Write(source[n:pos]) - n = i + 1 - runeSize := utf8.EncodeRune(buf, ToValidRune(rune(v))) - cob.Write(buf[:runeSize]) - continue - } - } - } - } - i = next - 1 - } - } - if cob.IsCopied() { - cob.Write(source[n:]) - } - return cob.Bytes() -} - -// ResolveEntityNames resolve entity references like 'ö" . -func ResolveEntityNames(source []byte) []byte { - cob := NewCopyOnWriteBuffer(source) - limit := len(source) - var ok bool - n := 0 - for i := 0; i < limit; i++ { - if source[i] == '&' { - pos := i - next := i + 1 - if !(next < limit && source[next] == '#') { - start := next - i, ok = ReadWhile(source, [2]int{start, limit}, IsAlphaNumeric) - if ok && i < limit && source[i] == ';' { - name := BytesToReadOnlyString(source[start:i]) - entity, ok := LookUpHTML5EntityByName(name) - if ok { - cob.Write(source[n:pos]) - n = i + 1 - cob.Write(entity.Characters) - continue - } - } - } - i = next - 1 - } - } - if cob.IsCopied() { - cob.Write(source[n:]) - } - return cob.Bytes() -} - -var htmlSpace = []byte("%20") - -// URLEscape escape the given URL. -// If resolveReference is set true: -// 1. unescape punctuations -// 2. resolve numeric references -// 3. resolve entity references -// -// URL encoded values (%xx) are kept as is. -func URLEscape(v []byte, resolveReference bool) []byte { - if resolveReference { - v = UnescapePunctuations(v) - v = ResolveNumericReferences(v) - v = ResolveEntityNames(v) - } - cob := NewCopyOnWriteBuffer(v) - limit := len(v) - n := 0 - - for i := 0; i < limit; { - c := v[i] - if urlEscapeTable[c] == 1 { - i++ - continue - } - if c == '%' && i+2 < limit && IsHexDecimal(v[i+1]) && IsHexDecimal(v[i+1]) { - i += 3 - continue - } - u8len := utf8lenTable[c] - if u8len == 99 { // invalid utf8 leading byte, skip it - i++ - continue - } - if c == ' ' { - cob.Write(v[n:i]) - cob.Write(htmlSpace) - i++ - n = i - continue - } - if int(u8len) > len(v) { - u8len = int8(len(v) - 1) - } - if u8len == 0 { - i++ - n = i - continue - } - cob.Write(v[n:i]) - stop := i + int(u8len) - if stop > len(v) { - i++ - n = i - continue - } - cob.Write(StringToReadOnlyBytes(url.QueryEscape(string(v[i:stop])))) - i += int(u8len) - n = i - } - if cob.IsCopied() && n < limit { - cob.Write(v[n:]) - } - return cob.Bytes() -} - -// FindURLIndex returns a stop index value if the given bytes seem an URL. -// This function is equivalent to [A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]* . -func FindURLIndex(b []byte) int { - i := 0 - if !(len(b) > 0 && urlTable[b[i]]&7 == 7) { - return -1 - } - i++ - for ; i < len(b); i++ { - c := b[i] - if urlTable[c]&4 != 4 { - break - } - } - if i == 1 || i > 33 || i >= len(b) { - return -1 - } - if b[i] != ':' { - return -1 - } - i++ - for ; i < len(b); i++ { - c := b[i] - if urlTable[c]&1 != 1 { - break - } - } - return i -} - -var emailDomainRegexp = regexp.MustCompile(`^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*`) //nolint:golint,lll - -// FindEmailIndex returns a stop index value if the given bytes seem an email address. -func FindEmailIndex(b []byte) int { - // TODO: eliminate regexps - i := 0 - for ; i < len(b); i++ { - c := b[i] - if emailTable[c]&1 != 1 { - break - } - } - if i == 0 { - return -1 - } - if i >= len(b) || b[i] != '@' { - return -1 - } - i++ - if i >= len(b) { - return -1 - } - match := emailDomainRegexp.FindSubmatchIndex(b[i:]) - if match == nil { - return -1 - } - return i + match[1] -} - -var spaces = []byte(" \t\n\x0b\x0c\x0d") - -var spaceTable = [256]int8{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} //nolint:golint,lll - -var punctTable = [256]int8{0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 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, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} //nolint:golint,lll - -// a-zA-Z0-9, ;/?:@&=+$,-_.!~*'()# - -var urlEscapeTable = [256]int8{0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} //nolint:golint,lll - -var utf8lenTable = [256]int8{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 99, 99, 99, 99, 99, 99, 99, 99} //nolint:golint,lll - -var urlTable = [256]uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 0, 1, 0, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} //nolint:golint,lll - -var emailTable = [256]uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} //nolint:golint,lll - -// UTF8Len returns a byte length of the utf-8 character. -func UTF8Len(b byte) int8 { - return utf8lenTable[b] -} - -// IsPunct returns true if the given character is a punctuation, otherwise false. -func IsPunct(c byte) bool { - return punctTable[c] == 1 -} - -// IsPunctRune returns true if the given rune is a punctuation, otherwise false. -func IsPunctRune(r rune) bool { - return unicode.IsSymbol(r) || unicode.IsPunct(r) -} - -// IsSpace returns true if the given character is a space, otherwise false. -func IsSpace(c byte) bool { - return spaceTable[c] == 1 -} - -// IsSpaceRune returns true if the given rune is a space, otherwise false. -func IsSpaceRune(r rune) bool { - return int32(r) <= 256 && IsSpace(byte(r)) || unicode.IsSpace(r) -} - -// IsNumeric returns true if the given character is a numeric, otherwise false. -func IsNumeric(c byte) bool { - return c >= '0' && c <= '9' -} - -// IsHexDecimal returns true if the given character is a hexdecimal, otherwise false. -func IsHexDecimal(c byte) bool { - return c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F' -} - -// IsAlphaNumeric returns true if the given character is a alphabet or a numeric, otherwise false. -func IsAlphaNumeric(c byte) bool { - return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' -} - -// A BufWriter is a subset of the bufio.Writer . -type BufWriter interface { - io.Writer - Available() int - Buffered() int - Flush() error - WriteByte(c byte) error - WriteRune(r rune) (size int, err error) - WriteString(s string) (int, error) -} - -// A PrioritizedValue struct holds pair of an arbitrary value and a priority. -type PrioritizedValue struct { - // Value is an arbitrary value that you want to prioritize. - Value interface{} - // Priority is a priority of the value. - Priority int -} - -// PrioritizedSlice is a slice of the PrioritizedValues. -type PrioritizedSlice []PrioritizedValue - -// Sort sorts the PrioritizedSlice in ascending order. -func (s PrioritizedSlice) Sort() { - sort.Slice(s, func(i, j int) bool { - return s[i].Priority < s[j].Priority - }) -} - -// Remove removes the given value from this slice. -func (s PrioritizedSlice) Remove(v interface{}) PrioritizedSlice { - i := 0 - found := false - for ; i < len(s); i++ { - if s[i].Value == v { - found = true - break - } - } - if !found { - return s - } - return append(s[:i], s[i+1:]...) -} - -// Prioritized returns a new PrioritizedValue. -func Prioritized(v interface{}, priority int) PrioritizedValue { - return PrioritizedValue{v, priority} -} - -func bytesHash(b []byte) uint64 { - var hash uint64 = 5381 - for _, c := range b { - hash = ((hash << 5) + hash) + uint64(c) - } - return hash -} - -// BytesFilter is a efficient data structure for checking whether bytes exist or not. -// BytesFilter is thread-safe. -type BytesFilter interface { - // Add adds given bytes to this set. - Add([]byte) - - // Contains return true if this set contains given bytes, otherwise false. - Contains([]byte) bool - - // Extend copies this filter and adds given bytes to new filter. - Extend(...[]byte) BytesFilter - - // ExtendString copies this filter and adds given bytes to new filter. - // Given string must be separated by a comma. - ExtendString(string) BytesFilter -} - -type bytesFilter struct { - chars [256]uint8 - threshold int - slots [][][]byte -} - -// NewBytesFilter returns a new BytesFilter. -func NewBytesFilter(elements ...[]byte) BytesFilter { - s := &bytesFilter{ - threshold: 3, - slots: make([][][]byte, 64), - } - for _, element := range elements { - s.Add(element) - } - return s -} - -// NewBytesFilterString returns a new BytesFilter. -// Given string must be separated by a comma. -func NewBytesFilterString(elements string) BytesFilter { - s := &bytesFilter{ - threshold: 3, - slots: make([][][]byte, 64), - } - start := 0 - for i := 0; i < len(elements); i++ { - if elements[i] == ',' { - s.Add(StringToReadOnlyBytes(elements[start:i])) - start = i + 1 - } - } - if start < len(elements) { - s.Add(StringToReadOnlyBytes(elements[start:])) - } - return s - -} - -func (s *bytesFilter) Add(b []byte) { - l := len(b) - m := s.threshold - if l < s.threshold { - m = l - } - for i := 0; i < m; i++ { - s.chars[b[i]] |= 1 << uint8(i) - } - h := bytesHash(b) % uint64(len(s.slots)) - slot := s.slots[h] - if slot == nil { - slot = [][]byte{} - } - s.slots[h] = append(slot, b) -} - -func (s *bytesFilter) Extend(bs ...[]byte) BytesFilter { - newFilter := NewBytesFilter().(*bytesFilter) - newFilter.chars = s.chars - newFilter.threshold = s.threshold - for k, v := range s.slots { - newSlot := make([][]byte, len(v)) - copy(newSlot, v) - newFilter.slots[k] = v - } - for _, b := range bs { - newFilter.Add(b) - } - return newFilter -} - -func (s *bytesFilter) ExtendString(elements string) BytesFilter { - newFilter := NewBytesFilter().(*bytesFilter) - newFilter.chars = s.chars - newFilter.threshold = s.threshold - for k, v := range s.slots { - newSlot := make([][]byte, len(v)) - copy(newSlot, v) - newFilter.slots[k] = v - } - start := 0 - for i := 0; i < len(elements); i++ { - if elements[i] == ',' { - newFilter.Add(StringToReadOnlyBytes(elements[start:i])) - start = i + 1 - } - } - if start < len(elements) { - newFilter.Add(StringToReadOnlyBytes(elements[start:])) - } - return newFilter -} - -func (s *bytesFilter) Contains(b []byte) bool { - l := len(b) - m := s.threshold - if l < s.threshold { - m = l - } - for i := 0; i < m; i++ { - if (s.chars[b[i]] & (1 << uint8(i))) == 0 { - return false - } - } - h := bytesHash(b) % uint64(len(s.slots)) - slot := s.slots[h] - if len(slot) == 0 { - return false - } - for _, element := range slot { - if bytes.Equal(element, b) { - return true - } - } - return false -} diff --git a/vendor/github.com/yuin/goldmark/util/util_cjk.go b/vendor/github.com/yuin/goldmark/util/util_cjk.go deleted file mode 100644 index d7581070a..000000000 --- a/vendor/github.com/yuin/goldmark/util/util_cjk.go +++ /dev/null @@ -1,469 +0,0 @@ -package util - -import "unicode" - -var cjkRadicalsSupplement = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x2E80, 0x2EFF, 1}, - }, -} - -var kangxiRadicals = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x2F00, 0x2FDF, 1}, - }, -} - -var ideographicDescriptionCharacters = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x2FF0, 0x2FFF, 1}, - }, -} - -var cjkSymbolsAndPunctuation = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x3000, 0x303F, 1}, - }, -} - -var hiragana = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x3040, 0x309F, 1}, - }, -} - -var katakana = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x30A0, 0x30FF, 1}, - }, -} - -var kanbun = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x3130, 0x318F, 1}, - {0x3190, 0x319F, 1}, - }, -} - -var cjkStrokes = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x31C0, 0x31EF, 1}, - }, -} - -var katakanaPhoneticExtensions = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x31F0, 0x31FF, 1}, - }, -} - -var cjkCompatibility = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x3300, 0x33FF, 1}, - }, -} - -var cjkUnifiedIdeographsExtensionA = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x3400, 0x4DBF, 1}, - }, -} - -var cjkUnifiedIdeographs = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x4E00, 0x9FFF, 1}, - }, -} - -var yiSyllables = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0xA000, 0xA48F, 1}, - }, -} - -var yiRadicals = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0xA490, 0xA4CF, 1}, - }, -} - -var cjkCompatibilityIdeographs = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0xF900, 0xFAFF, 1}, - }, -} - -var verticalForms = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0xFE10, 0xFE1F, 1}, - }, -} - -var cjkCompatibilityForms = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0xFE30, 0xFE4F, 1}, - }, -} - -var smallFormVariants = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0xFE50, 0xFE6F, 1}, - }, -} - -var halfwidthAndFullwidthForms = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0xFF00, 0xFFEF, 1}, - }, -} - -var kanaSupplement = &unicode.RangeTable{ - R32: []unicode.Range32{ - {0x1B000, 0x1B0FF, 1}, - }, -} - -var kanaExtendedA = &unicode.RangeTable{ - R32: []unicode.Range32{ - {0x1B100, 0x1B12F, 1}, - }, -} - -var smallKanaExtension = &unicode.RangeTable{ - R32: []unicode.Range32{ - {0x1B130, 0x1B16F, 1}, - }, -} - -var cjkUnifiedIdeographsExtensionB = &unicode.RangeTable{ - R32: []unicode.Range32{ - {0x20000, 0x2A6DF, 1}, - }, -} - -var cjkUnifiedIdeographsExtensionC = &unicode.RangeTable{ - R32: []unicode.Range32{ - {0x2A700, 0x2B73F, 1}, - }, -} - -var cjkUnifiedIdeographsExtensionD = &unicode.RangeTable{ - R32: []unicode.Range32{ - {0x2B740, 0x2B81F, 1}, - }, -} - -var cjkUnifiedIdeographsExtensionE = &unicode.RangeTable{ - R32: []unicode.Range32{ - {0x2B820, 0x2CEAF, 1}, - }, -} - -var cjkUnifiedIdeographsExtensionF = &unicode.RangeTable{ - R32: []unicode.Range32{ - {0x2CEB0, 0x2EBEF, 1}, - }, -} - -var cjkCompatibilityIdeographsSupplement = &unicode.RangeTable{ - R32: []unicode.Range32{ - {0x2F800, 0x2FA1F, 1}, - }, -} - -var cjkUnifiedIdeographsExtensionG = &unicode.RangeTable{ - R32: []unicode.Range32{ - {0x30000, 0x3134F, 1}, - }, -} - -// IsEastAsianWideRune returns trhe if the given rune is an east asian wide character, otherwise false. -func IsEastAsianWideRune(r rune) bool { - return unicode.Is(unicode.Hiragana, r) || - unicode.Is(unicode.Katakana, r) || - unicode.Is(unicode.Han, r) || - unicode.Is(unicode.Lm, r) || - unicode.Is(unicode.Hangul, r) || - unicode.Is(cjkSymbolsAndPunctuation, r) -} - -// IsSpaceDiscardingUnicodeRune returns true if the given rune is space-discarding unicode character, otherwise false. -// See https://www.w3.org/TR/2020/WD-css-text-3-20200429/#space-discard-set -func IsSpaceDiscardingUnicodeRune(r rune) bool { - return unicode.Is(cjkRadicalsSupplement, r) || - unicode.Is(kangxiRadicals, r) || - unicode.Is(ideographicDescriptionCharacters, r) || - unicode.Is(cjkSymbolsAndPunctuation, r) || - unicode.Is(hiragana, r) || - unicode.Is(katakana, r) || - unicode.Is(kanbun, r) || - unicode.Is(cjkStrokes, r) || - unicode.Is(katakanaPhoneticExtensions, r) || - unicode.Is(cjkCompatibility, r) || - unicode.Is(cjkUnifiedIdeographsExtensionA, r) || - unicode.Is(cjkUnifiedIdeographs, r) || - unicode.Is(yiSyllables, r) || - unicode.Is(yiRadicals, r) || - unicode.Is(cjkCompatibilityIdeographs, r) || - unicode.Is(verticalForms, r) || - unicode.Is(cjkCompatibilityForms, r) || - unicode.Is(smallFormVariants, r) || - unicode.Is(halfwidthAndFullwidthForms, r) || - unicode.Is(kanaSupplement, r) || - unicode.Is(kanaExtendedA, r) || - unicode.Is(smallKanaExtension, r) || - unicode.Is(cjkUnifiedIdeographsExtensionB, r) || - unicode.Is(cjkUnifiedIdeographsExtensionC, r) || - unicode.Is(cjkUnifiedIdeographsExtensionD, r) || - unicode.Is(cjkUnifiedIdeographsExtensionE, r) || - unicode.Is(cjkUnifiedIdeographsExtensionF, r) || - unicode.Is(cjkCompatibilityIdeographsSupplement, r) || - unicode.Is(cjkUnifiedIdeographsExtensionG, r) -} - -// EastAsianWidth returns the east asian width of the given rune. -// See https://www.unicode.org/reports/tr11/tr11-36.html -func EastAsianWidth(r rune) string { - switch { - case r == 0x3000, - (0xFF01 <= r && r <= 0xFF60), - (0xFFE0 <= r && r <= 0xFFE6): - return "F" - - case r == 0x20A9, - (0xFF61 <= r && r <= 0xFFBE), - (0xFFC2 <= r && r <= 0xFFC7), - (0xFFCA <= r && r <= 0xFFCF), - (0xFFD2 <= r && r <= 0xFFD7), - (0xFFDA <= r && r <= 0xFFDC), - (0xFFE8 <= r && r <= 0xFFEE): - return "H" - - case (0x1100 <= r && r <= 0x115F), - (0x11A3 <= r && r <= 0x11A7), - (0x11FA <= r && r <= 0x11FF), - (0x2329 <= r && r <= 0x232A), - (0x2E80 <= r && r <= 0x2E99), - (0x2E9B <= r && r <= 0x2EF3), - (0x2F00 <= r && r <= 0x2FD5), - (0x2FF0 <= r && r <= 0x2FFB), - (0x3001 <= r && r <= 0x303E), - (0x3041 <= r && r <= 0x3096), - (0x3099 <= r && r <= 0x30FF), - (0x3105 <= r && r <= 0x312D), - (0x3131 <= r && r <= 0x318E), - (0x3190 <= r && r <= 0x31BA), - (0x31C0 <= r && r <= 0x31E3), - (0x31F0 <= r && r <= 0x321E), - (0x3220 <= r && r <= 0x3247), - (0x3250 <= r && r <= 0x32FE), - (0x3300 <= r && r <= 0x4DBF), - (0x4E00 <= r && r <= 0xA48C), - (0xA490 <= r && r <= 0xA4C6), - (0xA960 <= r && r <= 0xA97C), - (0xAC00 <= r && r <= 0xD7A3), - (0xD7B0 <= r && r <= 0xD7C6), - (0xD7CB <= r && r <= 0xD7FB), - (0xF900 <= r && r <= 0xFAFF), - (0xFE10 <= r && r <= 0xFE19), - (0xFE30 <= r && r <= 0xFE52), - (0xFE54 <= r && r <= 0xFE66), - (0xFE68 <= r && r <= 0xFE6B), - (0x1B000 <= r && r <= 0x1B001), - (0x1F200 <= r && r <= 0x1F202), - (0x1F210 <= r && r <= 0x1F23A), - (0x1F240 <= r && r <= 0x1F248), - (0x1F250 <= r && r <= 0x1F251), - (0x20000 <= r && r <= 0x2F73F), - (0x2B740 <= r && r <= 0x2FFFD), - (0x30000 <= r && r <= 0x3FFFD): - return "W" - - case (0x0020 <= r && r <= 0x007E), - (0x00A2 <= r && r <= 0x00A3), - (0x00A5 <= r && r <= 0x00A6), - r == 0x00AC, - r == 0x00AF, - (0x27E6 <= r && r <= 0x27ED), - (0x2985 <= r && r <= 0x2986): - return "Na" - - case (0x00A1 == r), - (0x00A4 == r), - (0x00A7 <= r && r <= 0x00A8), - (0x00AA == r), - (0x00AD <= r && r <= 0x00AE), - (0x00B0 <= r && r <= 0x00B4), - (0x00B6 <= r && r <= 0x00BA), - (0x00BC <= r && r <= 0x00BF), - (0x00C6 == r), - (0x00D0 == r), - (0x00D7 <= r && r <= 0x00D8), - (0x00DE <= r && r <= 0x00E1), - (0x00E6 == r), - (0x00E8 <= r && r <= 0x00EA), - (0x00EC <= r && r <= 0x00ED), - (0x00F0 == r), - (0x00F2 <= r && r <= 0x00F3), - (0x00F7 <= r && r <= 0x00FA), - (0x00FC == r), - (0x00FE == r), - (0x0101 == r), - (0x0111 == r), - (0x0113 == r), - (0x011B == r), - (0x0126 <= r && r <= 0x0127), - (0x012B == r), - (0x0131 <= r && r <= 0x0133), - (0x0138 == r), - (0x013F <= r && r <= 0x0142), - (0x0144 == r), - (0x0148 <= r && r <= 0x014B), - (0x014D == r), - (0x0152 <= r && r <= 0x0153), - (0x0166 <= r && r <= 0x0167), - (0x016B == r), - (0x01CE == r), - (0x01D0 == r), - (0x01D2 == r), - (0x01D4 == r), - (0x01D6 == r), - (0x01D8 == r), - (0x01DA == r), - (0x01DC == r), - (0x0251 == r), - (0x0261 == r), - (0x02C4 == r), - (0x02C7 == r), - (0x02C9 <= r && r <= 0x02CB), - (0x02CD == r), - (0x02D0 == r), - (0x02D8 <= r && r <= 0x02DB), - (0x02DD == r), - (0x02DF == r), - (0x0300 <= r && r <= 0x036F), - (0x0391 <= r && r <= 0x03A1), - (0x03A3 <= r && r <= 0x03A9), - (0x03B1 <= r && r <= 0x03C1), - (0x03C3 <= r && r <= 0x03C9), - (0x0401 == r), - (0x0410 <= r && r <= 0x044F), - (0x0451 == r), - (0x2010 == r), - (0x2013 <= r && r <= 0x2016), - (0x2018 <= r && r <= 0x2019), - (0x201C <= r && r <= 0x201D), - (0x2020 <= r && r <= 0x2022), - (0x2024 <= r && r <= 0x2027), - (0x2030 == r), - (0x2032 <= r && r <= 0x2033), - (0x2035 == r), - (0x203B == r), - (0x203E == r), - (0x2074 == r), - (0x207F == r), - (0x2081 <= r && r <= 0x2084), - (0x20AC == r), - (0x2103 == r), - (0x2105 == r), - (0x2109 == r), - (0x2113 == r), - (0x2116 == r), - (0x2121 <= r && r <= 0x2122), - (0x2126 == r), - (0x212B == r), - (0x2153 <= r && r <= 0x2154), - (0x215B <= r && r <= 0x215E), - (0x2160 <= r && r <= 0x216B), - (0x2170 <= r && r <= 0x2179), - (0x2189 == r), - (0x2190 <= r && r <= 0x2199), - (0x21B8 <= r && r <= 0x21B9), - (0x21D2 == r), - (0x21D4 == r), - (0x21E7 == r), - (0x2200 == r), - (0x2202 <= r && r <= 0x2203), - (0x2207 <= r && r <= 0x2208), - (0x220B == r), - (0x220F == r), - (0x2211 == r), - (0x2215 == r), - (0x221A == r), - (0x221D <= r && r <= 0x2220), - (0x2223 == r), - (0x2225 == r), - (0x2227 <= r && r <= 0x222C), - (0x222E == r), - (0x2234 <= r && r <= 0x2237), - (0x223C <= r && r <= 0x223D), - (0x2248 == r), - (0x224C == r), - (0x2252 == r), - (0x2260 <= r && r <= 0x2261), - (0x2264 <= r && r <= 0x2267), - (0x226A <= r && r <= 0x226B), - (0x226E <= r && r <= 0x226F), - (0x2282 <= r && r <= 0x2283), - (0x2286 <= r && r <= 0x2287), - (0x2295 == r), - (0x2299 == r), - (0x22A5 == r), - (0x22BF == r), - (0x2312 == r), - (0x2460 <= r && r <= 0x24E9), - (0x24EB <= r && r <= 0x254B), - (0x2550 <= r && r <= 0x2573), - (0x2580 <= r && r <= 0x258F), - (0x2592 <= r && r <= 0x2595), - (0x25A0 <= r && r <= 0x25A1), - (0x25A3 <= r && r <= 0x25A9), - (0x25B2 <= r && r <= 0x25B3), - (0x25B6 <= r && r <= 0x25B7), - (0x25BC <= r && r <= 0x25BD), - (0x25C0 <= r && r <= 0x25C1), - (0x25C6 <= r && r <= 0x25C8), - (0x25CB == r), - (0x25CE <= r && r <= 0x25D1), - (0x25E2 <= r && r <= 0x25E5), - (0x25EF == r), - (0x2605 <= r && r <= 0x2606), - (0x2609 == r), - (0x260E <= r && r <= 0x260F), - (0x2614 <= r && r <= 0x2615), - (0x261C == r), - (0x261E == r), - (0x2640 == r), - (0x2642 == r), - (0x2660 <= r && r <= 0x2661), - (0x2663 <= r && r <= 0x2665), - (0x2667 <= r && r <= 0x266A), - (0x266C <= r && r <= 0x266D), - (0x266F == r), - (0x269E <= r && r <= 0x269F), - (0x26BE <= r && r <= 0x26BF), - (0x26C4 <= r && r <= 0x26CD), - (0x26CF <= r && r <= 0x26E1), - (0x26E3 == r), - (0x26E8 <= r && r <= 0x26FF), - (0x273D == r), - (0x2757 == r), - (0x2776 <= r && r <= 0x277F), - (0x2B55 <= r && r <= 0x2B59), - (0x3248 <= r && r <= 0x324F), - (0xE000 <= r && r <= 0xF8FF), - (0xFE00 <= r && r <= 0xFE0F), - (0xFFFD == r), - (0x1F100 <= r && r <= 0x1F10A), - (0x1F110 <= r && r <= 0x1F12D), - (0x1F130 <= r && r <= 0x1F169), - (0x1F170 <= r && r <= 0x1F19A), - (0xE0100 <= r && r <= 0xE01EF), - (0xF0000 <= r && r <= 0xFFFFD), - (0x100000 <= r && r <= 0x10FFFD): - return "A" - - default: - return "N" - } -} diff --git a/vendor/github.com/yuin/goldmark/util/util_safe.go b/vendor/github.com/yuin/goldmark/util/util_safe.go deleted file mode 100644 index 2f6a3feee..000000000 --- a/vendor/github.com/yuin/goldmark/util/util_safe.go +++ /dev/null @@ -1,14 +0,0 @@ -//go:build appengine || js -// +build appengine js - -package util - -// BytesToReadOnlyString returns a string converted from given bytes. -func BytesToReadOnlyString(b []byte) string { - return string(b) -} - -// StringToReadOnlyBytes returns bytes converted from given string. -func StringToReadOnlyBytes(s string) []byte { - return []byte(s) -} diff --git a/vendor/github.com/yuin/goldmark/util/util_unsafe_go120.go b/vendor/github.com/yuin/goldmark/util/util_unsafe_go120.go deleted file mode 100644 index d6be534ed..000000000 --- a/vendor/github.com/yuin/goldmark/util/util_unsafe_go120.go +++ /dev/null @@ -1,24 +0,0 @@ -//go:build !appengine && !js && !go1.21 -// +build !appengine,!js,!go1.21 - -package util - -import ( - "reflect" - "unsafe" -) - -// BytesToReadOnlyString returns a string converted from given bytes. -func BytesToReadOnlyString(b []byte) string { - return *(*string)(unsafe.Pointer(&b)) -} - -// StringToReadOnlyBytes returns bytes converted from given string. -func StringToReadOnlyBytes(s string) (bs []byte) { - sh := (*reflect.StringHeader)(unsafe.Pointer(&s)) - bh := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) - bh.Data = sh.Data - bh.Cap = sh.Len - bh.Len = sh.Len - return -} diff --git a/vendor/github.com/yuin/goldmark/util/util_unsafe_go121.go b/vendor/github.com/yuin/goldmark/util/util_unsafe_go121.go deleted file mode 100644 index 50c7fce34..000000000 --- a/vendor/github.com/yuin/goldmark/util/util_unsafe_go121.go +++ /dev/null @@ -1,18 +0,0 @@ -//go:build !appengine && !js && go1.21 -// +build !appengine,!js,go1.21 - -package util - -import ( - "unsafe" -) - -// BytesToReadOnlyString returns a string converted from given bytes. -func BytesToReadOnlyString(b []byte) string { - return unsafe.String(unsafe.SliceData(b), len(b)) -} - -// StringToReadOnlyBytes returns bytes converted from given string. -func StringToReadOnlyBytes(s string) []byte { - return unsafe.Slice(unsafe.StringData(s), len(s)) -} |
